|
XenevaOS
|
#include <stdint.h>#include <stddef.h>

Go to the source code of this file.
Classes | |
| struct | block_header |
| struct | free_block |
| struct | tlsf_pool |
Macros | |
| #define | TLSF_ALIGN_SIZE 16 |
| #define | TLSF_ALIGN_MASK (TLSF_ALIGN_SIZE - 1) |
| #define | TLSF_ALIGN_UP(x) (((x) + TLSF_ALIGN_MASK) & ~TLSF_ALIGN_MASK) |
| #define | SL_INDEX_COUNT_LOG2 5 |
| #define | SL_INDEX_COUNT (1U << SL_INDEX_COUNT_LOG2) /* 32 */ |
| #define | SL_INDEX_MASK (SL_INDEX_COUNT - 1) |
| #define | FL_INDEX_COUNT (8 * sizeof(size_t)) |
| #define | BLOCK_FLAG_FREE 0x1U |
| #define | BLOCK_FLAG_PREV_FREE 0x2U |
| #define | BLOCK_SIZE_MASK (~(size_t)(BLOCK_FLAG_FREE | BLOCK_FLAG_PREV_FREE)) |
| #define | TLSF_HEADER_SIZE ((size_t)sizeof(block_header_t)) /* 16 */ |
| #define | TLSF_FREE_BLOCK_SIZE ((size_t)sizeof(free_block_t)) /* 32 */ |
| #define | TLSF_MIN_BLOCK_SIZE TLSF_FREE_BLOCK_SIZE /* 32 — minimum free block */ |
| #define | TLSF_SENTINEL_SIZE TLSF_HEADER_SIZE /* 16 — sentinel block */ |
Typedefs | |
| typedef struct block_header | block_header_t |
| typedef struct free_block | free_block_t |
| typedef struct tlsf_pool | tlsf_pool_t |
Functions | |
| tlsf_pool_t * | tlsf_create (void) |
| tlsf_pool_t * | tlsf_get_pool (void) |
| int | tlsf_add_memory (tlsf_pool_t *pool, void *mem, size_t size) |
| void * | tlsf_malloc (tlsf_pool_t *pool, size_t size) |
| void | tlsf_free (tlsf_pool_t *pool, void *ptr) |
| void * | tlsf_realloc (tlsf_pool_t *pool, void *ptr, size_t size) |
| #define BLOCK_FLAG_FREE 0x1U |
| #define BLOCK_FLAG_PREV_FREE 0x2U |
| #define BLOCK_SIZE_MASK (~(size_t)(BLOCK_FLAG_FREE | BLOCK_FLAG_PREV_FREE)) |
| #define FL_INDEX_COUNT (8 * sizeof(size_t)) |
| #define SL_INDEX_COUNT (1U << SL_INDEX_COUNT_LOG2) /* 32 */ |
| #define SL_INDEX_COUNT_LOG2 5 |
| #define SL_INDEX_MASK (SL_INDEX_COUNT - 1) |
| #define TLSF_ALIGN_MASK (TLSF_ALIGN_SIZE - 1) |
| #define TLSF_ALIGN_SIZE 16 |
BSD 2-Clause License
Copyright (c) 2022-2023, Manas Kamal Choudhury
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
| #define TLSF_ALIGN_UP | ( | x | ) | (((x) + TLSF_ALIGN_MASK) & ~TLSF_ALIGN_MASK) |
| #define TLSF_FREE_BLOCK_SIZE ((size_t)sizeof(free_block_t)) /* 32 */ |
| #define TLSF_HEADER_SIZE ((size_t)sizeof(block_header_t)) /* 16 */ |
| #define TLSF_MIN_BLOCK_SIZE TLSF_FREE_BLOCK_SIZE /* 32 — minimum free block */ |
| #define TLSF_SENTINEL_SIZE TLSF_HEADER_SIZE /* 16 — sentinel block */ |
| typedef struct block_header block_header_t |
| typedef struct free_block free_block_t |
| typedef struct tlsf_pool tlsf_pool_t |
| int tlsf_add_memory | ( | tlsf_pool_t * | pool, |
| void * | mem, | ||
| size_t | size | ||
| ) |
| tlsf_pool_t * tlsf_create | ( | void | ) |
| void tlsf_free | ( | tlsf_pool_t * | pool, |
| void * | ptr | ||
| ) |
| tlsf_pool_t * tlsf_get_pool | ( | void | ) |
| void * tlsf_malloc | ( | tlsf_pool_t * | pool, |
| size_t | size | ||
| ) |
| void * tlsf_realloc | ( | tlsf_pool_t * | pool, |
| void * | ptr, | ||
| size_t | size | ||
| ) |