diff options
| author | Thomas Martitz <kugel@rockbox.org> | 2012-03-27 16:27:02 +0200 |
|---|---|---|
| committer | Thomas Martitz <kugel@rockbox.org> | 2012-03-28 23:02:39 +0200 |
| commit | c56950ea3a9e0244461ce445f25bd7a80c8f7199 (patch) | |
| tree | 6fb9547aebb230ec15b26db11867a4072d2a6d7b /apps/codecs/lib/tlsf/README | |
| parent | 9f2ee2f21abec56108dfb135eaeba5f416f1eb12 (diff) | |
| download | rockbox-c56950ea3a9e0244461ce445f25bd7a80c8f7199.zip rockbox-c56950ea3a9e0244461ce445f25bd7a80c8f7199.tar.gz rockbox-c56950ea3a9e0244461ce445f25bd7a80c8f7199.tar.bz2 rockbox-c56950ea3a9e0244461ce445f25bd7a80c8f7199.tar.xz | |
tlsf: move to /lib (it's also used by plugins).
Change-Id: I5e37b28c1ce4608d60b036343f280af3311ad490
Diffstat (limited to 'apps/codecs/lib/tlsf/README')
| -rw-r--r-- | apps/codecs/lib/tlsf/README | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/apps/codecs/lib/tlsf/README b/apps/codecs/lib/tlsf/README deleted file mode 100644 index d755905..0000000 --- a/apps/codecs/lib/tlsf/README +++ /dev/null @@ -1,163 +0,0 @@ - -TLSF Memory Storage allocator implementation. -Version 2.4 Feb 2008 - -Authors: Miguel Masmano, Ismael Ripoll & Alfons Crespo. -Copyright UPVLC, OCERA Consortium. - -TLSF is released in the GPL/LGPL licence. The exact terms of the licence -are described in the COPYING file. - -This component provides basic memory allocation functions: -malloc and free, as defined in the standard "C" library. - -This allocator was designed to provide real-time performance, that is: -1.- Bounded time malloc and free. -2.- Fast response time. -3.- Efficient memory management, that is low fragmentation. - - -The worst response time for both malloc and free is O(1). - - - -How to use it: - -This code is prepared to be used as a stand-alone code that can be -linked with a regular application or it can be compiled to be a Linux -module (which required the BigPhysicalArea patch). Initially the -module was designed to work jointly with RTLinux-GPL, but it can be -used as a stand alone Linux module. - -When compiled as a regular linux process the API is: - -Initialisation and destruction functions ----------------------------------------- - -init_memory_pool may be called before any request or release call: - -- size_t init_memory_pool(size_t, void *); -- void destroy_memory_pool(void *); - -Request and release functions ------------------------------ - -As can be seen, there are two functions for each traditional memory -allocation function (malloc, free, realloc, and calloc). One with the -prefix "tlsf_" and the other with the suffix "_ex". - -The versions with the prefix "tlsf_" provides the expected behaviour, -that is, allocating/releasing memory from the default memory pool. The -default memory pool is the last pool initialised by the -init_memory_pool function. - -On the other hand, the functions with the prefix "_ex" enable the use of several memory pools. - -- void *tlsf_malloc(size_t); -- void *malloc_ex(size_t, void *); - -- void tlsf_free(void *ptr); -- void free_ex(void *, void *); - -- void *tlsf_realloc(void *ptr, size_t size); -- void *realloc_ex(void *, size_t, void *); - -- void *tlsf_calloc(size_t nelem, size_t elem_size); -- void *calloc_ex(size_t, size_t, void *); - -EXAMPLE OF USE: - -char memory_pool[1024*1024]; - -{ - ... - - init_memory_pool(1024*1024, memory_pool); - - ... - - ptr1=malloc_ex(100, memory_pool); - ptr2=tlsf_malloc(100); // This function will use memory_pool - - ... - - tlsf_free(ptr2); - free_ex(ptr1, memory_pool); -} - -Growing the memory pool ------------------------ - -Starting from the version 2.4, the function add_new_area adds an -memory area to an existing memory pool. - -- size_t add_new_area(void *, size_t, void *); - -This feature is pretty useful when an existing memory pool is running -low and we want to add more free memory to it. -EXAMPLE OF USE: - -char memory_pool[1024*1024]; -char memory_pool2[1024*1024]; - -{ - ... - - init_memory_pool(1024*1024, memory_pool); - - ... - - ptr[0]=malloc_ex(1024*256 memory_pool); - ptr[1]=malloc_ex(1024*512, memory_pool); - add_new_area(memory_pool2, 1024*1024, memory_pool); - // Now we have an extra free memory area of 1Mb - // The next malloc may not fail - ptr[2]=malloc_ex(1024*512, memory_pool); - - ... - -} - - -SBRK and MMAP support ---------------------- - -The version 2.4 can use the functions SBRK and MMAP to _automatically_ -growing the memory pool, before running out of memory. - -So, when this feature is enabled, unless the operating system were out -of memory, a malloc operation would not fail due to an "out-of-memory" -error. - -To enable this support, compile tlsf.c with the FLAGS -DUSE_MMAP=1 or --DUSE_SBRK=1 depending on whether you want to use "mmap" or "sbrk" or both. - -** By default (default Makefile) this feature is enabled. - -EXAMPLE OF USE: - -gcc -o tlsf.o -O2 -Wall -DUSE_MMAP=1 -DUSE_SBRK=1 - ---- - -If the sbrk/mmap support is enabled and we are _only_ going to use one -memory pool, it is not necessary to call init_memory_pool - -EXAMPLE OF USE (with MMAP/SBRK support enabled): - -{ - ... - - ptr2=tlsf_malloc(100); // This function will use memory_pool - - ... - - tlsf_free(ptr2); -} - - - - -This work has been supported by the followin projects: -EUROPEAN: IST-2001-35102(OCERA) http://www.ocera.org. -SPANISH: TIN2005-08665-C3-03 |