Contiki 2.6

Managed memory allocator

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

Get a pointer to the managed memory.

Parameters:
mA 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:
mA pointer to a struct mmem.
sizeThe 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 84 of file mmem.c.

References list_add().

Referenced by elfloader_arch_allocate_ram().

void mmem_free ( struct mmem *  m)

Deallocate a managed memory block.

Parameters:
mA 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 120 of file mmem.c.

References list_remove(), and NULL.

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.

Definition at line 153 of file mmem.c.

References list_init().

Referenced by main().