Contiki-NG
Loading...
Searching...
No Matches
memb: Memory block management functions

Files

file  memb.c
 Memory block allocation routines.
 
file  memb.h
 Memory block allocation routines.
 

Macros

#define MEMB(name, structure, num)
 Declare a memory block.
 

Functions

void memb_init (struct memb *m)
 Initialize a memory block that was declared with MEMB().
 
void * memb_alloc (struct memb *m)
 Allocate a memory block from a block of memory declared with MEMB().
 
int memb_free (struct memb *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().
 
int memb_inmemb (struct memb *m, void *ptr)
 Check if a given address is within a memory area previously declared with MEMB().
 
size_t memb_numfree (struct memb *m)
 Count free memory blocks.
 

Detailed Description

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.

Macro Definition Documentation

◆ 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, \
CC_CONCAT(name,_memb_used), \
(void *)CC_CONCAT(name,_memb_mem)}
#define CC_CONCAT(s1, s2)
A C preprocessing macro for concatenating two preprocessor tokens.
Definition cc.h:175

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);
#define MEMB(name, structure, num)
Declare a memory block.
Definition memb.h:91
Parameters
nameThe name of the memory block (later used with memb_init(), memb_alloc() and memb_free()).
structureThe name of the struct that the memory block holds
numThe total number of memory chunks in the block.

Definition at line 91 of file memb.h.

Function Documentation

◆ memb_alloc()

void * memb_alloc ( struct memb * m)

Allocate a memory block from a block of memory declared with MEMB().

Parameters
mA set of memory blocks previously declared with MEMB().

Definition at line 59 of file memb.c.

Referenced by sixp_trans_alloc(), tsch_queue_add_packet(), tsch_schedule_add_link(), tsch_schedule_add_slotframe(), uip_ds6_nbr_add(), uip_mcast6_route_add(), uip_nameserver_update(), and uip_sr_update_node().

◆ memb_free()

int memb_free ( struct memb * m,
void * ptr )

Deallocate a memory block from a memory block previously declared with MEMB().

Parameters
mm A set of memory blocks previously declared with MEMB().
ptrA 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.

Referenced by sixp_trans_free(), tsch_queue_add_packet(), tsch_queue_free_packet(), tsch_schedule_remove_link(), tsch_schedule_remove_slotframe(), uip_ds6_nbr_add(), uip_mcast6_route_rm(), uip_nameserver_update(), uip_sr_free_all(), and uip_sr_periodic().

◆ memb_init()

void memb_init ( struct memb * m)

Initialize a memory block that was declared with MEMB().

Parameters
mA set of memory blocks previously declared with MEMB().

Definition at line 52 of file memb.c.

Referenced by sixp_trans_init(), tsch_queue_init(), tsch_schedule_init(), uip_mcast6_route_init(), and uip_sr_init().

◆ 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
mm A set of memory blocks previously declared with MEMB().
ptrA 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()

size_t memb_numfree ( struct memb * m)

Count free memory blocks.

Parameters
mm 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.

Referenced by tsch_queue_global_packet_count().