X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fmalloc.h;h=f66c2e86176c3bda6eba8359d2c5d4ac15baf115;hb=406df85345f942d9348443983d81a01e013e920b;hp=a38464e62915c05362179d14e9381e2174f5babb;hpb=84efbf4d144ff8aaed3cca036aebb1fe69eff3f4;p=oweals%2Fu-boot.git diff --git a/include/malloc.h b/include/malloc.h index a38464e629..f66c2e8617 100644 --- a/include/malloc.h +++ b/include/malloc.h @@ -196,7 +196,7 @@ 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 @@ -285,14 +285,6 @@ extern "C" { */ -#ifdef DEBUG -/* #include */ -#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 @@ -495,7 +487,7 @@ do { \ ***/ #undef HAVE_MREMAP /* Not available for U-Boot */ -#if HAVE_MMAP +#ifdef HAVE_MMAP #include #include @@ -595,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 @@ -762,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) @@ -796,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 /* @@ -880,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*); @@ -921,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(); @@ -935,8 +965,18 @@ 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" */