| /** | |
| * \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__ */ |