Managed memory allocator
[Memory functions]

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

Files

file  mmem.c
 

Implementation of the managed memory allocator.


file  mmem.h
 

Header file for the managed memory allocator.


Defines

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

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.

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.

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 allocated.
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.

Referenced by elfloader_arch_allocate_ram().


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.

Referenced by elfloader_arch_allocate_ram().

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().

Referenced by elfloader_arch_allocate_ram().

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.


Generated on Mon Apr 11 14:23:51 2011 for Contiki 2.5 by  doxygen 1.6.1