XINU
memory.h
Go to the documentation of this file.
1 
6 #define PAGE_SIZE 4096
8 
25 #define roundmb(x) (char *)((7 + (uint32)(x)) & (~7))
26 
35 #define truncmb(x) (char *)(((uint32)(x)) & (~7))
36 
46 #define freestk(p, len) freemem((char *)((uint32)(p) - ((uint32)roundmb(len)) + (uint32)sizeof(uint32)), \
47  (uint32)roundmb(len))
48 
53 struct memblk
54 {
56  struct memblk *mnext;
59 };
60 
62 extern struct memblk memlist;
64 extern void *minheap;
66 extern void *maxheap;
67 
68 /* Added by linker */
69 
71 extern int text;
73 extern int etext;
75 extern int data;
77 extern int edata;
79 extern int bss;
81 extern int ebss;
83 extern int end;
メモリブロックを管理するための構造体。
Definition: memory.h:53
int edata
データセグメントの終了アドレス(リンカが追加する)
struct memblk * mnext
次のフリーメモリブロックへのポインタ
Definition: memory.h:56
int ebss
BSSセグメントの終了アドレス(リンカが追加する)
int bss
BSSセグメントの開始アドレス(リンカが追加する)
int data
データセグメントの開始アドレス(リンカが追加する)
struct memblk memlist
フリーメモリリストの先頭
Definition: initialize.c:27
int etext
テキストセグメントの終了アドレス(リンカが追加する)
void * maxheap
最上位かつ正常なヒープアドレス
Definition: meminit.c:10
int end
プログラムの終了アドレス(リンカが追加する)
void * minheap
ヒープの開始地点
Definition: meminit.c:8
uint32 mlength
memblk構造体のサイズを含むブロックサイズ
Definition: memory.h:58
int text
テキストセグメントの開始アドレス(リンカが追加する)
unsigned int uint32
符号なし32ビット整数(unsigned int)
Definition: kernel.h:15