Classes | Macros | 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
 

Macros

#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(...)   fprintf(stderr, __VA_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(...)   printf(__VA_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 []
 

Macro Definition Documentation

#define __inline__

Definition at line 118 of file tlsf.c.

#define _DEBUG_TLSF_   (0)

Definition at line 124 of file tlsf.c.

#define ATTRIBUTE_UNUSED

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 (   ...)    fprintf(stderr, __VA_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)
static __inline__ void clear_bit(int nr, u32_t *addr)
Definition: tlsf.c:315
if(res==0) luaL_error(L

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)
static __inline__ void clear_bit(int nr, u32_t *addr)
Definition: tlsf.c:315
if(res==0) luaL_error(L

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)
static __inline__ void set_bit(int nr, u32_t *addr)
Definition: tlsf.c:311
if(res==0) luaL_error(L

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 (   ...)    printf(__VA_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 Mon Mar 23 2020 04:47:19