Classes | Defines | Typedefs | Functions | Variables
tlsf.c File Reference
#include <string.h>
#include "tlsf.h"
#include <stdio.h>
Include dependency graph for tlsf.c:

Go to the source code of this file.

Classes

struct  area_info_struct
struct  bhdr_struct
struct  free_ptr_struct
struct  TLSF_struct

Defines

#define __inline__
#define _DEBUG_TLSF_   (0)
#define ATTRIBUTE_UNUSED
#define BHDR_OVERHEAD   (sizeof (bhdr_t) - MIN_BLOCK_SIZE)
#define BLOCK_ALIGN   (sizeof(void *) * 2)
#define BLOCK_SIZE   (0xFFFFFFFF - PTR_MASK)
#define BLOCK_STATE   (0x1)
#define CHECK_DOUBLE_FREE   (0)
#define DEFAULT_AREA_SIZE   (1024*10)
#define ERROR_MSG(fmt, args...)   fprintf(stderr, fmt, ## args)
#define EXTRACT_BLOCK(_b, _tlsf, _fl, _sl)
#define EXTRACT_BLOCK_HDR(_b, _tlsf, _fl, _sl)
#define FLI_OFFSET   (6) /* tlsf structure just will manage blocks bigger */
#define FREE_BLOCK   (0x1)
#define GET_NEXT_BLOCK(_addr, _r)   ((bhdr_t *) ((char *) (_addr) + (_r)))
#define INSERT_BLOCK(_b, _tlsf, _fl, _sl)
#define MAX_FLI   (30)
#define MAX_LOG2_SLI   (5)
#define MAX_SLI   (1 << MAX_LOG2_SLI) /* MAX_SLI = 2^MAX_LOG2_SLI */
#define MEM_ALIGN   ((BLOCK_ALIGN) - 1)
#define MIN_BLOCK_SIZE   (sizeof (free_ptr_t))
#define PAGE_SIZE   (getpagesize())
#define PREV_FREE   (0x2)
#define PREV_STATE   (0x2)
#define PREV_USED   (0x0)
#define PRINT_MSG(fmt, args...)   printf(fmt, ## args)
#define PTR_MASK   (sizeof(void *) - 1)
#define REAL_FLI   (MAX_FLI - FLI_OFFSET)
#define ROUNDDOWN_SIZE(_r)   ((_r) & ~MEM_ALIGN)
#define ROUNDUP(_x, _v)   ((((~(_x)) + 1) & ((_v)-1)) + (_x))
#define ROUNDUP_SIZE(_r)   (((_r) + MEM_ALIGN) & ~MEM_ALIGN)
#define SMALL_BLOCK   (128)
#define TLSF_ACQUIRE_LOCK(_unused_)   do{}while(0)
#define TLSF_ADD_SIZE(tlsf, b)   do{}while(0)
#define TLSF_CREATE_LOCK(_unused_)   do{}while(0)
#define TLSF_DESTROY_LOCK(_unused_)   do{}while(0)
#define TLSF_RELEASE_LOCK(_unused_)   do{}while(0)
#define TLSF_REMOVE_SIZE(tlsf, b)   do{}while(0)
#define TLSF_SIGNATURE   (0x2A59FA59)
#define TLSF_STATISTIC   (0)
#define TLSF_USE_LOCKS   (0)
#define USE_MMAP   (0)
#define USE_PRINTF   (1)
#define USE_SBRK   (0)
#define USED_BLOCK   (0x0)

Typedefs

typedef struct area_info_struct area_info_t
typedef struct bhdr_struct bhdr_t
typedef struct free_ptr_struct free_ptr_t
typedef struct TLSF_struct tlsf_t
typedef unsigned int u32_t
typedef unsigned char u8_t

Functions

static __inline__ void clear_bit (int nr, u32_t *addr)
static __inline__ bhdr_tFIND_SUITABLE_BLOCK (tlsf_t *_tlsf, int *_fl, int *_sl)
static __inline__ int ls_bit (int x)
static __inline__ void MAPPING_INSERT (size_t _r, int *_fl, int *_sl)
static __inline__ void MAPPING_SEARCH (size_t *_r, int *_fl, int *_sl)
static __inline__ int ms_bit (int x)
static __inline__ bhdr_tprocess_area (void *area, size_t size)
size_t rtl_add_new_area (void *area, size_t area_size, void *mem_pool)
void * rtl_calloc_ex (size_t nelem, size_t elem_size, void *mem_pool)
void rtl_destroy_memory_pool (void *mem_pool)
void rtl_free_ex (void *ptr, void *mem_pool)
size_t rtl_get_max_size (void *mem_pool ATTRIBUTE_UNUSED)
size_t rtl_get_used_size (void *mem_pool ATTRIBUTE_UNUSED)
size_t rtl_init_memory_pool (size_t mem_pool_size, void *mem_pool)
void * rtl_malloc_ex (size_t size, void *mem_pool)
void * rtl_realloc_ex (void *ptr, size_t new_size, void *mem_pool)
void * rtl_tlsf_calloc (size_t nelem, size_t elem_size)
void rtl_tlsf_free (void *ptr)
void * rtl_tlsf_malloc (size_t size)
void * rtl_tlsf_realloc (void *ptr, size_t size)
static __inline__ void set_bit (int nr, u32_t *addr)

Variables

static char * mp = NULL
static const int table []

Define Documentation

#define __inline__

Definition at line 118 of file tlsf.c.

#define _DEBUG_TLSF_   (0)

Definition at line 124 of file tlsf.c.

Definition at line 191 of file tlsf.c.

#define BHDR_OVERHEAD   (sizeof (bhdr_t) - MIN_BLOCK_SIZE)

Definition at line 144 of file tlsf.c.

#define BLOCK_ALIGN   (sizeof(void *) * 2)

Definition at line 133 of file tlsf.c.

#define BLOCK_SIZE   (0xFFFFFFFF - PTR_MASK)

Definition at line 148 of file tlsf.c.

#define BLOCK_STATE   (0x1)

Definition at line 156 of file tlsf.c.

#define CHECK_DOUBLE_FREE   (0)

Definition at line 78 of file tlsf.c.

#define DEFAULT_AREA_SIZE   (1024*10)

Definition at line 168 of file tlsf.c.

#define ERROR_MSG (   fmt,
  args... 
)    fprintf(stderr, fmt, ## args)

Definition at line 177 of file tlsf.c.

#define EXTRACT_BLOCK (   _b,
  _tlsf,
  _fl,
  _sl 
)
Value:
do {                                                    \
                if (_b -> ptr.free_ptr.next)                                                                    \
                        _b -> ptr.free_ptr.next -> ptr.free_ptr.prev = _b -> ptr.free_ptr.prev; \
                if (_b -> ptr.free_ptr.prev)                                                                    \
                        _b -> ptr.free_ptr.prev -> ptr.free_ptr.next = _b -> ptr.free_ptr.next; \
                if (_tlsf -> matrix [_fl][_sl] == _b) {                                                 \
                        _tlsf -> matrix [_fl][_sl] = _b -> ptr.free_ptr.next;           \
                        if (!_tlsf -> matrix [_fl][_sl]) {                                                      \
                                clear_bit (_sl, &_tlsf -> sl_bitmap[_fl]);                              \
                                if (!_tlsf -> sl_bitmap [_fl])                                                  \
                                        clear_bit (_fl, &_tlsf -> fl_bitmap);                           \
                        }                                                                                                                       \
                }                                                                                                                               \
                _b -> ptr.free_ptr.prev = NULL;                                 \
                _b -> ptr.free_ptr.next = NULL;                                 \
        } while(0)

Definition at line 382 of file tlsf.c.

#define EXTRACT_BLOCK_HDR (   _b,
  _tlsf,
  _fl,
  _sl 
)
Value:
do {                                    \
                _tlsf -> matrix [_fl] [_sl] = _b -> ptr.free_ptr.next;          \
                if (_tlsf -> matrix[_fl][_sl])                                                          \
                        _tlsf -> matrix[_fl][_sl] -> ptr.free_ptr.prev = NULL;  \
                else {                                                                                                          \
                        clear_bit (_sl, &_tlsf -> sl_bitmap [_fl]);                             \
                        if (!_tlsf -> sl_bitmap [_fl])                                                  \
                                clear_bit (_fl, &_tlsf -> fl_bitmap);                           \
                }                                                                                                                       \
                _b -> ptr.free_ptr.prev =  NULL;                                \
                _b -> ptr.free_ptr.next =  NULL;                                \
        }while(0)

Definition at line 368 of file tlsf.c.

#define FLI_OFFSET   (6) /* tlsf structure just will manage blocks bigger */

Definition at line 139 of file tlsf.c.

#define FREE_BLOCK   (0x1)

Definition at line 160 of file tlsf.c.

#define GET_NEXT_BLOCK (   _addr,
  _r 
)    ((bhdr_t *) ((char *) (_addr) + (_r)))

Definition at line 150 of file tlsf.c.

#define INSERT_BLOCK (   _b,
  _tlsf,
  _fl,
  _sl 
)
Value:
do {                                                    \
                _b -> ptr.free_ptr.prev = NULL; \
                _b -> ptr.free_ptr.next = _tlsf -> matrix [_fl][_sl]; \
                if (_tlsf -> matrix [_fl][_sl])                                                                 \
                        _tlsf -> matrix [_fl][_sl] -> ptr.free_ptr.prev = _b;           \
                _tlsf -> matrix [_fl][_sl] = _b;                                                                \
                set_bit (_sl, &_tlsf -> sl_bitmap [_fl]);                                               \
                set_bit (_fl, &_tlsf -> fl_bitmap);                                                             \
        } while(0)

Definition at line 399 of file tlsf.c.

#define MAX_FLI   (30)

Definition at line 135 of file tlsf.c.

#define MAX_LOG2_SLI   (5)

Definition at line 136 of file tlsf.c.

#define MAX_SLI   (1 << MAX_LOG2_SLI) /* MAX_SLI = 2^MAX_LOG2_SLI */

Definition at line 137 of file tlsf.c.

#define MEM_ALIGN   ((BLOCK_ALIGN) - 1)

Definition at line 151 of file tlsf.c.

#define MIN_BLOCK_SIZE   (sizeof (free_ptr_t))

Definition at line 143 of file tlsf.c.

#define PAGE_SIZE   (getpagesize())

Definition at line 171 of file tlsf.c.

#define PREV_FREE   (0x2)

Definition at line 164 of file tlsf.c.

#define PREV_STATE   (0x2)

Definition at line 157 of file tlsf.c.

#define PREV_USED   (0x0)

Definition at line 165 of file tlsf.c.

#define PRINT_MSG (   fmt,
  args... 
)    printf(fmt, ## args)

Definition at line 176 of file tlsf.c.

#define PTR_MASK   (sizeof(void *) - 1)

Definition at line 147 of file tlsf.c.

#define REAL_FLI   (MAX_FLI - FLI_OFFSET)

Definition at line 142 of file tlsf.c.

#define ROUNDDOWN_SIZE (   _r)    ((_r) & ~MEM_ALIGN)

Definition at line 153 of file tlsf.c.

#define ROUNDUP (   _x,
  _v 
)    ((((~(_x)) + 1) & ((_v)-1)) + (_x))

Definition at line 154 of file tlsf.c.

#define ROUNDUP_SIZE (   _r)    (((_r) + MEM_ALIGN) & ~MEM_ALIGN)

Definition at line 152 of file tlsf.c.

#define SMALL_BLOCK   (128)

Definition at line 141 of file tlsf.c.

#define TLSF_ACQUIRE_LOCK (   _unused_)    do{}while(0)

Definition at line 86 of file tlsf.c.

#define TLSF_ADD_SIZE (   tlsf,
 
)    do{}while(0)

Definition at line 102 of file tlsf.c.

#define TLSF_CREATE_LOCK (   _unused_)    do{}while(0)

Definition at line 84 of file tlsf.c.

#define TLSF_DESTROY_LOCK (   _unused_)    do{}while(0)

Definition at line 85 of file tlsf.c.

#define TLSF_RELEASE_LOCK (   _unused_)    do{}while(0)

Definition at line 87 of file tlsf.c.

#define TLSF_REMOVE_SIZE (   tlsf,
 
)    do{}while(0)

Definition at line 103 of file tlsf.c.

#define TLSF_SIGNATURE   (0x2A59FA59)

Definition at line 145 of file tlsf.c.

#define TLSF_STATISTIC   (0)

Definition at line 66 of file tlsf.c.

#define TLSF_USE_LOCKS   (0)

Definition at line 62 of file tlsf.c.

#define USE_MMAP   (0)

Definition at line 70 of file tlsf.c.

#define USE_PRINTF   (1)

Definition at line 56 of file tlsf.c.

#define USE_SBRK   (0)

Definition at line 74 of file tlsf.c.

#define USED_BLOCK   (0x0)

Definition at line 161 of file tlsf.c.


Typedef Documentation

typedef struct area_info_struct area_info_t
typedef struct bhdr_struct bhdr_t
typedef struct free_ptr_struct free_ptr_t
typedef struct TLSF_struct tlsf_t
typedef unsigned int u32_t

Definition at line 196 of file tlsf.c.

typedef unsigned char u8_t

Definition at line 197 of file tlsf.c.


Function Documentation

static __inline__ void clear_bit ( int  nr,
u32_t addr 
) [static]

Definition at line 315 of file tlsf.c.

static __inline__ bhdr_t * FIND_SUITABLE_BLOCK ( tlsf_t _tlsf,
int *  _fl,
int *  _sl 
) [static]

Definition at line 350 of file tlsf.c.

static __inline__ int ls_bit ( int  x) [static]

Definition at line 295 of file tlsf.c.

static __inline__ void MAPPING_INSERT ( size_t  _r,
int *  _fl,
int *  _sl 
) [static]

Definition at line 338 of file tlsf.c.

static __inline__ void MAPPING_SEARCH ( size_t *  _r,
int *  _fl,
int *  _sl 
) [static]

Definition at line 319 of file tlsf.c.

static __inline__ int ms_bit ( int  x) [static]

Definition at line 303 of file tlsf.c.

static __inline__ bhdr_t * process_area ( void *  area,
size_t  size 
) [static]

Definition at line 435 of file tlsf.c.

size_t rtl_add_new_area ( void *  area,
size_t  area_size,
void *  mem_pool 
)

Definition at line 511 of file tlsf.c.

void* rtl_calloc_ex ( size_t  nelem,
size_t  elem_size,
void *  mem_pool 
)

Definition at line 907 of file tlsf.c.

void rtl_destroy_memory_pool ( void *  mem_pool)

Definition at line 620 of file tlsf.c.

void rtl_free_ex ( void *  ptr,
void *  mem_pool 
)

Definition at line 767 of file tlsf.c.

size_t rtl_get_max_size ( void *mem_pool  ATTRIBUTE_UNUSED)

Definition at line 610 of file tlsf.c.

size_t rtl_get_used_size ( void *mem_pool  ATTRIBUTE_UNUSED)

Definition at line 600 of file tlsf.c.

size_t rtl_init_memory_pool ( size_t  mem_pool_size,
void *  mem_pool 
)

Definition at line 464 of file tlsf.c.

void* rtl_malloc_ex ( size_t  size,
void *  mem_pool 
)

Definition at line 706 of file tlsf.c.

void* rtl_realloc_ex ( void *  ptr,
size_t  new_size,
void *  mem_pool 
)

Definition at line 813 of file tlsf.c.

void* rtl_tlsf_calloc ( size_t  nelem,
size_t  elem_size 
)

Definition at line 692 of file tlsf.c.

void rtl_tlsf_free ( void *  ptr)

Definition at line 660 of file tlsf.c.

void* rtl_tlsf_malloc ( size_t  size)

Definition at line 632 of file tlsf.c.

void* rtl_tlsf_realloc ( void *  ptr,
size_t  size 
)

Definition at line 672 of file tlsf.c.

static __inline__ void set_bit ( int  nr,
u32_t addr 
) [static]

Definition at line 311 of file tlsf.c.


Variable Documentation

char* mp = NULL [static]

Definition at line 461 of file tlsf.c.

const int table[] [static]
Initial value:
 {
    -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4,
    4, 4,
    4, 4, 4, 4, 4, 4, 4,
    5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
    5,
    5, 5, 5, 5, 5, 5, 5,
    6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
    6,
    6, 6, 6, 6, 6, 6, 6,
    6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
    6,
    6, 6, 6, 6, 6, 6, 6,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7,
    7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7,
    7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7,
    7, 7, 7, 7, 7, 7, 7,
    7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
    7,
    7, 7, 7, 7, 7, 7, 7
}

Definition at line 268 of file tlsf.c.



ocl
Author(s): OCL Development Team
autogenerated on Thu Jan 2 2014 11:38:08