colibri_imx6: fix video stdout in default environment
[oweals/u-boot.git] / include / malloc.h
index 47154b0783f9dc173d9c0ec8183d916c3246e5c6..f66c2e86176c3bda6eba8359d2c5d4ac15baf115 100644 (file)
   MORECORE_FAILURE          (default: -1)
      The value returned upon failure of MORECORE.
   MORECORE_CLEARS           (default 1)
-     True (1) if the routine mapped to MORECORE zeroes out memory (which
+     true (1) if the routine mapped to MORECORE zeroes out memory (which
      holds for sbrk).
   DEFAULT_TRIM_THRESHOLD
   DEFAULT_TOP_PAD
 */
 
 \f
-
+#ifndef __MALLOC_H__
+#define __MALLOC_H__
 
 /* Preliminaries */
 
@@ -284,14 +285,6 @@ extern "C" {
 
 */
 
-#ifdef DEBUG
-/* #include <assert.h> */
-#define assert(x) ((void)0)
-#else
-#define assert(x) ((void)0)
-#endif
-
-
 /*
   INTERNAL_SIZE_T is the word-size used for internal bookkeeping
   of chunk sizes. On a 64-bit machine, you can reduce malloc
@@ -494,7 +487,7 @@ do {                                                                          \
 ***/
 #undef HAVE_MREMAP     /* Not available for U-Boot */
 
-#if HAVE_MMAP
+#ifdef HAVE_MMAP
 
 #include <unistd.h>
 #include <fcntl.h>
@@ -594,7 +587,7 @@ do {                                                                          \
 
 /* #define HAVE_USR_INCLUDE_MALLOC_H */
 
-#if HAVE_USR_INCLUDE_MALLOC_H
+#ifdef HAVE_USR_INCLUDE_MALLOC_H
 #include "/usr/include/malloc.h"
 #else
 
@@ -761,7 +754,7 @@ struct mallinfo {
 
 
 #ifndef DEFAULT_MMAP_MAX
-#if HAVE_MMAP
+#ifdef HAVE_MMAP
 #define DEFAULT_MMAP_MAX       (64)
 #else
 #define DEFAULT_MMAP_MAX       (0)
@@ -795,8 +788,13 @@ struct mallinfo {
 
 */
 
-/* #define USE_DL_PREFIX */
-
+/*
+ * Rename the U-Boot alloc functions so that sandbox can still use the system
+ * ones
+ */
+#ifdef CONFIG_SANDBOX
+#define USE_DL_PREFIX
+#endif
 
 /*
 
@@ -879,33 +877,66 @@ extern Void_t*     sbrk();
 
 #else
 
-#ifdef USE_DL_PREFIX
-#define cALLOc         dlcalloc
-#define fREe           dlfree
-#define mALLOc         dlmalloc
-#define mEMALIGn       dlmemalign
-#define rEALLOc                dlrealloc
-#define vALLOc         dlvalloc
-#define pvALLOc                dlpvalloc
-#define mALLINFo       dlmallinfo
-#define mALLOPt                dlmallopt
-#else /* USE_DL_PREFIX */
-#define cALLOc         calloc
-#define fREe           free
-#define mALLOc         malloc
-#define mEMALIGn       memalign
-#define rEALLOc                realloc
-#define vALLOc         valloc
-#define pvALLOc                pvalloc
-#define mALLINFo       mallinfo
-#define mALLOPt                mallopt
-#endif /* USE_DL_PREFIX */
+#if CONFIG_IS_ENABLED(SYS_MALLOC_SIMPLE)
+#define malloc malloc_simple
+#define realloc realloc_simple
+#define memalign memalign_simple
+static inline void free(void *ptr) {}
+void *calloc(size_t nmemb, size_t size);
+void *realloc_simple(void *ptr, size_t size);
+void malloc_simple_info(void);
+#else
 
-#endif
+# ifdef USE_DL_PREFIX
+# define cALLOc                dlcalloc
+# define fREe          dlfree
+# define mALLOc                dlmalloc
+# define mEMALIGn      dlmemalign
+# define rEALLOc               dlrealloc
+# define vALLOc                dlvalloc
+# define pvALLOc               dlpvalloc
+# define mALLINFo      dlmallinfo
+# define mALLOPt               dlmallopt
+
+/* Ensure that U-Boot actually uses these too */
+#define calloc dlcalloc
+#define free(ptr) dlfree(ptr)
+#define malloc(x) dlmalloc(x)
+#define memalign dlmemalign
+#define realloc dlrealloc
+#define valloc dlvalloc
+#define pvalloc dlpvalloc
+#define mallinfo() dlmallinfo()
+#define mallopt dlmallopt
+#define malloc_trim dlmalloc_trim
+#define malloc_usable_size dlmalloc_usable_size
+#define malloc_stats dlmalloc_stats
+
+# else /* USE_DL_PREFIX */
+# define cALLOc                calloc
+# define fREe          free
+# define mALLOc                malloc
+# define mEMALIGn      memalign
+# define rEALLOc               realloc
+# define vALLOc                valloc
+# define pvALLOc               pvalloc
+# define mALLINFo      mallinfo
+# define mALLOPt               mallopt
+# endif /* USE_DL_PREFIX */
+
+#endif
+
+/* Set up pre-relocation malloc() ready for use */
+int initf_malloc(void);
 
 /* Public routines */
 
-#if __STD_C
+/* Simple versions which can be used when space is tight */
+void *malloc_simple(size_t size);
+void *memalign_simple(size_t alignment, size_t bytes);
+
+#pragma GCC visibility push(hidden)
+# if __STD_C
 
 Void_t* mALLOc(size_t);
 void    fREe(Void_t*);
@@ -920,7 +951,7 @@ size_t  malloc_usable_size(Void_t*);
 void    malloc_stats(void);
 int     mALLOPt(int, int);
 struct mallinfo mALLINFo(void);
-#else
+# else
 Void_t* mALLOc();
 void    fREe();
 Void_t* rEALLOc();
@@ -934,9 +965,21 @@ size_t  malloc_usable_size();
 void    malloc_stats();
 int     mALLOPt();
 struct mallinfo mALLINFo();
+# endif
 #endif
+#pragma GCC visibility pop
+
+/*
+ * Begin and End of memory area for malloc(), and current "brk"
+ */
+extern ulong mem_malloc_start;
+extern ulong mem_malloc_end;
+extern ulong mem_malloc_brk;
 
+void mem_malloc_init(ulong start, ulong size);
 
 #ifdef __cplusplus
 };  /* end of extern "C" */
 #endif
+
+#endif /* __MALLOC_H__ */