You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
931 B
C
44 lines
931 B
C
/**
|
|
* \addtogroup exampleapps
|
|
* @{
|
|
*/
|
|
|
|
/**
|
|
* \file
|
|
* Memory block allocation routines.
|
|
* \author Adam Dunkels <adam@sics.se>
|
|
*
|
|
*/
|
|
|
|
#ifndef __MEMB_H__
|
|
#define __MEMB_H__
|
|
|
|
/**
|
|
* Declare a memory block.
|
|
*
|
|
* \param name The name of the memory block (later used with
|
|
* memb_init(), memb_alloc() and memb_free()).
|
|
*
|
|
* \param size The size of each memory chunk, in bytes.
|
|
*
|
|
* \param num The total number of memory chunks in the block.
|
|
*
|
|
*/
|
|
#define MEMB(name, size, num) \
|
|
static char memb_mem[(size + 1) * num]; \
|
|
static struct memb_blocks name = {size, num, memb_mem}
|
|
|
|
struct memb_blocks {
|
|
unsigned short size;
|
|
unsigned short num;
|
|
char *mem;
|
|
};
|
|
|
|
void memb_init(struct memb_blocks *m);
|
|
char *memb_alloc(struct memb_blocks *m);
|
|
char memb_ref(struct memb_blocks *m, char *ptr);
|
|
char memb_free(struct memb_blocks *m, char *ptr);
|
|
|
|
|
|
#endif /* __MEMB_H__ */
|