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
 
#define MM_RESERVED   0xffff
 marker: block reserved
 
#define MM_HEADER_SIZE   2
 2 words header: pid, size
 
#define MM_SPLIT_THRESH   (MM_HEADER_SIZE+8)
 split off if 8+ data bytes
 
#define MM_BLOCK_FREE(addr)
 memory from addr on can be allocated
 
#define MM_BLOCK_RESERVED(addr)
 memory from addr on is reserved
 

Functions

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

Variables

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

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

◆ MM_BLOCK_FREE

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

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.

◆ MM_BLOCK_RESERVED

#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;
#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.

◆ MM_FREE

#define MM_FREE   0x0000

marker: block free

Definition at line 47 of file mm.h.

◆ MM_HEADER_SIZE

#define MM_HEADER_SIZE   2

2 words header: pid, size

Definition at line 53 of file mm.h.

◆ MM_RESERVED

#define MM_RESERVED   0xffff

marker: block reserved

Definition at line 48 of file mm.h.

◆ MM_SPLIT_THRESH

#define MM_SPLIT_THRESH   (MM_HEADER_SIZE+8)

split off if 8+ data bytes

Definition at line 54 of file mm.h.

Function Documentation

◆ mm_free_mem()

int mm_free_mem ( void  )
extern

how many bytes of memory are free?

◆ mm_init()

void mm_init ( )
extern

initialize memory management

◆ mm_reaper()

void mm_reaper ( )
extern

free all blocks allocated by the current process

Variable Documentation

◆ mm_first_free

size_t* mm_first_free
extern

ptr to first free block.

◆ mm_start

size_t mm_start
extern

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