4 * This version is based on improvements from 3DInteractive GmbH
5 * Interface changed to allow more than one memory pool
6 * Separated pool handling from control structure (adding, removing, debugging)
7 * Control structure and pools can still be constructed in the same memory block
8 * Memory blocks for control structure and pools are checked for alignment
9 * Added functions to retrieve control structure size, alignment size, min and
10 max block size, overhead of pool structure, and overhead of a single allocation
11 * Minimal Pool size is tlsf_block_size_min() + tlsf_pool_overhead()
12 * Pool must be empty when it is removed, in order to allow O(1) removal
16 * More compiler intrinsics for ffs/fls
17 * ffs/fls verification during TLSF creation in debug builds
20 * Add tlsf_heap_check, a heap integrity check
21 * Support a predefined tlsf_assert macro
22 * Fix realloc case where block should shrink; if adjacent block is
23 in use, execution would go down the slow path
26 * Fix for unnecessary reallocation in tlsf_realloc
29 * tlsf_heap_walk takes a callback
30 * tlsf_realloc now returns NULL on failure
31 * tlsf_memalign optimization for 4-byte alignment
32 * Usage of size_t where appropriate
35 * ffs/fls broken out into tlsfbits.h
36 * tlsf_overhead queries per-pool overhead
39 * Smart realloc implementation
40 * Smart memalign implementation
43 * Add some ffs/fls implementations
44 * Minor code footprint reduction
47 * Profiling indicates heavy use of blocks of
48 size 1-128, so implement small block handling
49 * Reduce pool overhead by about 1kb
50 * Reduce minimum block size from 32 to 12 bytes
55 * Static assertion mechanism for invariants