The memory block allocation routines provide a simple yet powerful set of functions for managing a set of memory blocks of fixed size.
More...
|
file | memb.c |
| Memory block allocation routines.
|
|
file | memb.h |
| Memory block allocation routines.
|
|
|
#define | MEMB(name, structure, num) |
| Declare a memory block. More...
|
|
The memory block allocation routines provide a simple yet powerful set of functions for managing a set of memory blocks of fixed size.
A set of memory blocks is statically declared with the MEMB() macro. Memory blocks are allocated from the declared memory by the memb_alloc() function, and are deallocated with the memb_free() function.
◆ MEMB
#define MEMB |
( |
|
name, |
|
|
|
structure, |
|
|
|
num |
|
) |
| |
Value:static bool CC_CONCAT(name,_memb_used)[num]; \
static structure
CC_CONCAT(name,_memb_mem)[num]; \
static struct memb name = {sizeof(structure), num, \
#define CC_CONCAT(s1, s2)
A C preprocessing macro for concatenating two preprocessor tokens.
Declare a memory block.
This macro is used to statically declare a block of memory that can be used by the block allocation functions. The macro statically declares a C array with a size that matches the specified number of blocks and their individual sizes.
Example:
MEMB(connections,
struct connection, 16);
- Parameters
-
name | The name of the memory block (later used with memb_init(), memb_alloc() and memb_free()). |
structure | The name of the struct that the memory block holds |
num | The total number of memory chunks in the block. |
Definition at line 90 of file memb.h.
◆ memb_alloc()
void * memb_alloc |
( |
struct memb * |
m | ) |
|
Allocate a memory block from a block of memory declared with MEMB().
- Parameters
-
m | A set of memory blocks previously declared with MEMB(). |
Definition at line 59 of file memb.c.
◆ memb_free()
int memb_free |
( |
struct memb * |
m, |
|
|
void * |
ptr |
|
) |
| |
Deallocate a memory block from a memory block previously declared with MEMB().
- Parameters
-
m | m A set of memory blocks previously declared with MEMB(). |
ptr | A pointer to the memory block that is to be deallocated. |
- Returns
- error code, should be 0 if successfully deallocated or -1 if the pointer "ptr" did not point to a legal memory block.
Definition at line 78 of file memb.c.
◆ memb_init()
void memb_init |
( |
struct memb * |
m | ) |
|
◆ memb_inmemb()
int memb_inmemb |
( |
struct memb * |
m, |
|
|
void * |
ptr |
|
) |
| |
Check if a given address is within a memory area previously declared with MEMB().
- Parameters
-
m | m A set of memory blocks previously declared with MEMB(). |
ptr | A pointer to the address to check |
- Returns
- 1 if the address is part of the memory block; otherwise 0
Definition at line 101 of file memb.c.
◆ memb_numfree()
int memb_numfree |
( |
struct memb * |
m | ) |
|
Count free memory blocks.
- Parameters
-
m | m A set of memory blocks previously declared with MEMB(). |
- Returns
- the number of free (available) memory blocks
Definition at line 108 of file memb.c.