mm.h File Reference

Internal Interface: memory management. More...

#include <config.h>
#include <mem.h>
#include <stdlib.h>
Include dependency graph for mm.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define MM_FREE   0x0000
 marker: block free More...
 
#define MM_RESERVED   0xffff
 marker: block reserved More...
 
#define MM_HEADER_SIZE   2
 2 words header: pid, size More...
 
#define MM_SPLIT_THRESH   (MM_HEADER_SIZE+8)
 split off if 8+ data bytes More...
 
#define MM_BLOCK_FREE(addr)
 memory from addr on can be allocated More...
 
#define MM_BLOCK_RESERVED(addr)
 memory from addr on is reserved More...
 

Functions

void mm_init ()
 initialize memory management More...
 
void mm_reaper ()
 free all blocks allocated by the current process More...
 
int mm_free_mem (void)
 how many bytes of memory are free? More...
 

Variables

size_t mm_start
 end of kernel code + data More...
 
size_tmm_first_free
 ptr to first free block. More...
 

Detailed Description

Internal Interface: memory management.

Author
Markus L. Noga marku.nosp@m.s@no.nosp@m.ga.de

Definition in file mm.h.

Macro Definition Documentation

#define MM_BLOCK_FREE (   addr)
Value:
next=(size_t*)(addr); \
*current=((((size_t)next)-(size_t)current)-2)>>1; \
*(next++)=MM_FREE; \
current=next;
#define MM_FREE
marker: block free
Definition: mm.h:47
unsigned size_t
data type for memory sizes
Definition: mem.h:37

memory from addr on can be allocated

Macro for mm_init(). Always alternate MM_BLOCK_FREE and MM_BLOCK_RESERVED.

Definition at line 68 of file mm.h.

#define MM_BLOCK_RESERVED (   addr)
Value:
next=(size_t*)(((size_t)addr)-4); \
*current=((((size_t)next)-(size_t)current)-2)>>1; \
*(next++)=MM_RESERVED; \
current=next;
unsigned size_t
data type for memory sizes
Definition: mem.h:37
#define MM_RESERVED
marker: block reserved
Definition: mm.h:48

memory from addr on is reserved

Macro for mm_init(). Always alternate MM_BLOCK_FREE and MM_BLOCK_RESERVED.

Definition at line 79 of file mm.h.

#define MM_FREE   0x0000

marker: block free

Definition at line 47 of file mm.h.

#define MM_HEADER_SIZE   2

2 words header: pid, size

Definition at line 53 of file mm.h.

#define MM_RESERVED   0xffff

marker: block reserved

Definition at line 48 of file mm.h.

#define MM_SPLIT_THRESH   (MM_HEADER_SIZE+8)

split off if 8+ data bytes

Definition at line 54 of file mm.h.

Function Documentation

int mm_free_mem ( void  )

how many bytes of memory are free?

void mm_init ( )

initialize memory management

Referenced by kmain().

void mm_reaper ( )

free all blocks allocated by the current process

Variable Documentation

size_t* mm_first_free

ptr to first free block.

size_t mm_start

end of kernel code + data


brickOS is released under the Mozilla Public License.
Original code copyright 1998-2005 by the authors.

Generated for brickOS Kernel Developer by doxygen 1.8.11