Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Examples

Managed memory allocator
[Memory functions]


Detailed Description

The managed memory allocator is a fragmentation-free memory manager.

It keeps the allocated memory free from fragmentation by compacting the memory when blocks are freed. A program that uses the managed memory module cannot be sure that allocated memory stays in place. Therefore, a level of indirection is used: access to allocated memory must always be done using a special macro.

Note:
This module has not been heavily tested.


Files

file  mmem.h
 Header file for the managed memory allocator.
file  mmem.c
 Implementation of the managed memory allocator.

Data Structures

struct  mmem

Defines

#define MMEM_PTR(m)
 Get a pointer to the managed memory.
#define MMEM_SIZE   4096

Functions

int mmem_alloc (struct mmem *m, unsigned int size)
 Allocate a managed memory block.
void mmem_free (struct mmem *m)
 Deallocate a managed memory block.
void mmem_init (void)
 Initialize the managed memory module.

Variables

unsigned int avail_memory


Define Documentation

#define MMEM_PTR  ) 
 

Get a pointer to the managed memory.

Parameters:
m A pointer to the struct mmem
Returns:
A pointer to the memory block, or NULL if memory could not be allcated.
Author:
Adam Dunkels
This macro is used to get a pointer to a memory block allocated with mmem_alloc().

Definition at line 76 of file mmem.h.


Function Documentation

int mmem_alloc struct mmem m,
unsigned int  size
 

Allocate a managed memory block.

Parameters:
m A pointer to a struct mmem.
size The size of the requested memory block
Returns:
Non-zero if the memory could be allocated, zero if memory was not available.
Author:
Adam Dunkels
This function allocates a chunk of managed memory. The memory allocated with this function must be deallocated using the mmem_free() function.

Note:
This function does NOT return a pointer to the allocated memory, but a pointer to a structure that contains information about the managed memory. The macro MMEM_PTR() is used to get a pointer to the allocated memory.

Definition at line 80 of file mmem.c.

References avail_memory, list_add(), MMEM_SIZE, ptr, and size.

void mmem_free struct mmem m  ) 
 

Deallocate a managed memory block.

Parameters:
m A pointer to the managed memory block
Author:
Adam Dunkels
This function deallocates a managed memory block that previously has been allocated with mmem_alloc().

Definition at line 116 of file mmem.c.

References avail_memory, list_remove(), MMEM_SIZE, next, NULL, ptr, and size.

void mmem_init void   ) 
 

Initialize the managed memory module.

Author:
Adam Dunkels
This function initializes the managed memory module and should be called before any other function from the module.

Definition at line 149 of file mmem.c.

References avail_memory, list_init(), and MMEM_SIZE.


Generated on Thu Jun 22 17:45:43 2006 for Contiki 2.x by  doxygen 1.4.4