123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #define MALLOC_ALIGNMENT (sizeof (double))
- #define MALLOC_PAGE_SIZE 4096
- #define MALLOC_HEAP_EXTEND_SIZE MALLOC_PAGE_SIZE
- #define MALLOC_UNMAP_THRESHOLD (8*MALLOC_PAGE_SIZE)
- #define MALLOC_MIN_SIZE (2*MALLOC_PAGE_SIZE)
- #define MALLOC_REALLOC_MIN_FREE_SIZE (HEAP_MIN_SIZE + 16)
- #ifdef __UCLIBC_HAS_MMU__
- # define MALLOC_USE_SBRK
- #endif
- #define MALLOC_HEADER_SIZE MALLOC_ALIGNMENT
- #define MALLOC_SETUP(base, size) \
- (MALLOC_SET_SIZE (base, size), (void *)((char *)base + MALLOC_HEADER_SIZE))
- #define MALLOC_SET_SIZE(base, size) (*(size_t *)(base) = (size))
- #define MALLOC_BASE(addr) ((void *)((char *)addr - MALLOC_HEADER_SIZE))
- #define MALLOC_SIZE(addr) (*(size_t *)MALLOC_BASE(addr))
- #ifdef __UCLIBC_HAS_THREADS__
- # include <pthread.h>
- # define MALLOC_USE_LOCKING
- typedef pthread_mutex_t malloc_mutex_t;
- # define MALLOC_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
- extern malloc_mutex_t __malloc_lock;
- # define __malloc_lock() pthread_mutex_lock (&__malloc_lock)
- # define __malloc_unlock() pthread_mutex_unlock (&__malloc_lock)
- # ifdef MALLOC_USE_SBRK
- extern malloc_mutex_t __malloc_sbrk_lock;
- # define __malloc_lock_sbrk() pthread_mutex_lock (&__malloc_sbrk_lock)
- # define __malloc_unlock_sbrk() pthread_mutex_unlock (&__malloc_sbrk_lock)
- # endif
- #else
- # define __malloc_lock() (void)0
- # define __malloc_unlock() (void)0
- # define __malloc_lock_sbrk() (void)0
- # define __malloc_unlock_sbrk() (void)0
- #endif
- #ifdef likely
- #define __malloc_likely(c) likely(c)
- #define __malloc_unlikely(c) unlikely(c)
- #else
- #define __malloc_likely(c) (c)
- #define __malloc_unlikely(c) (c)
- #endif
- #ifdef MALLOC_DEBUGGING
- #include <stdio.h>
- #define MALLOC_DEBUG(fmt, args...) fprintf (stderr, fmt , ##args)
- #else
- #define MALLOC_DEBUG(fmt, args...) (void)0
- #endif
- #define MALLOC_ROUND_DOWN(sz, power_of_2_size) \
- ((sz) & ~(power_of_2_size - 1))
- #define MALLOC_ROUND_UP(sz, power_of_2_size) \
- MALLOC_ROUND_DOWN ((sz) + (power_of_2_size - 1), (power_of_2_size))
- #define MALLOC_ROUND_DOWN_TO_PAGE_SIZE(sz) \
- MALLOC_ROUND_DOWN (sz, MALLOC_PAGE_SIZE)
- #define MALLOC_ROUND_UP_TO_PAGE_SIZE(sz) \
- MALLOC_ROUND_UP (sz, MALLOC_PAGE_SIZE)
- extern struct heap __malloc_heap;
|