Contiki 2.6

Memory block management functions

The memory block allocation routines provide a simple yet powerful set of functions for managing a set of memory blocks of fixed size. More...

Files

file  memb.c
 

Memory block allocation routines.


file  memb.h
 

Memory block allocation routines.


Defines

#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().
char memb_free (struct memb *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().

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.


Define Documentation

#define MEMB (   name,
  structure,
  num 
)
Value:
static char CC_CONCAT(name,_memb_count)[num]; \
        static structure CC_CONCAT(name,_memb_mem)[num]; \
        static struct memb name = {sizeof(structure), num, \
                                          CC_CONCAT(name,_memb_count), \
                                          (void *)CC_CONCAT(name,_memb_mem)}

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:
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.
Examples:
example-multihop.c, and example-runicast.c.

Definition at line 90 of file memb.h.


Function Documentation

void * memb_alloc ( struct memb *  m)

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

Parameters:
mA memory block previously declared with MEMB().
Examples:
example-multihop.c, and example-runicast.c.

Definition at line 60 of file memb.c.

References NULL.

Referenced by packetqueue_enqueue_packetbuf().

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

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

Parameters:
mm A memory block previously declared with MEMB().
ptrA pointer to the memory block that is to be deallocated.
Returns:
The new reference count for the memory block (should be 0 if successfully deallocated) or -1 if the pointer "ptr" did not point to a legal memory block.
Examples:
example-multihop.c.

Definition at line 80 of file memb.c.

Referenced by packetqueue_dequeue(), and packetqueue_enqueue_packetbuf().

void memb_init ( struct memb *  m)

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

Parameters:
mA memory block previously declared with MEMB().
Examples:
example-multihop.c, and example-runicast.c.

Definition at line 53 of file memb.c.

Referenced by packetqueue_init().