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.
Data Structures | |
struct | memb |
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. More... | |
Functions | |
void * | memb_alloc (struct memb *m) |
Allocate a memory block from a block of memory declared with MEMB(). More... | |
char | memb_free (struct memb *m, void *ptr) |
Deallocate a memory block from a memory block previously declared with MEMB(). More... | |
void | memb_init (struct memb *m) |
Initialize a memory block that was declared with MEMB(). More... | |
int | memb_inmemb (struct memb *m, void *ptr) |
#define MEMB | ( | name, | |
structure, | |||
num | |||
) |
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:
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. |
void * memb_alloc | ( | struct memb * | m | ) |
Allocate a memory block from a block of memory declared with MEMB().
m | A memory block previously declared with MEMB(). |
References count, i, mem, NULL, num, and size.
Referenced by handle_incoming_reg(), httpd_appcall(), if(), ip64_addrmap_create(), nbr_table_allocate(), packetqueue_enqueue_packetbuf(), phase_wait(), send_packet(), servreg_hack_register(), uaodv_rt_add(), uip_ds6_defrt_add(), uip_ds6_route_add(), and uip_packetqueue_alloc().
char memb_free | ( | struct memb * | m, |
void * | ptr | ||
) |
Deallocate a memory block from a memory block previously declared with MEMB().
m | m A memory block previously declared with MEMB(). |
ptr | A pointer to the memory block that is to be deallocated. |
References count, i, mem, ptr, and size.
Referenced by check_age(), free_packet(), httpd_appcall(), if(), packet_timedout(), packetqueue_dequeue(), packetqueue_enqueue_packetbuf(), purge_registrations(), queuebuf_free(), recycle(), remove_queued_packet(), send_packet(), uaodv_rt_flush_all(), uip_ds6_defrt_rm(), uip_ds6_route_add(), uip_ds6_route_rm(), and uip_packetqueue_free().
void memb_init | ( | struct memb * | m | ) |
Initialize a memory block that was declared with MEMB().
m | A memory block previously declared with MEMB(). |
References count, mem, num, and size.
Referenced by httpd_init(), init(), ip64_addrmap_init(), packetqueue_init(), phase_init(), queuebuf_init(), servreg_hack_init(), uaodv_rt_init(), and uip_ds6_route_init().
int memb_inmemb | ( | struct memb * | m, |
void * | ptr | ||
) |
References mem, num, and size.
Referenced by queuebuf_dataptr(), queuebuf_free(), and queuebuf_to_packetbuf().