XINU
|
スタックメモリを割り当て、最上位のワードアドレスを返す。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
char * | getstk (uint32 nbytes) |
スタックメモリを割り当て、最上位のワードアドレスを返す。 More... | |
スタックメモリを割り当て、最上位のワードアドレスを返す。
Definition in file getstk.c.
char* getstk | ( | uint32 | nbytes | ) |
スタックメモリを割り当て、最上位のワードアドレスを返す。
Step1. 割り込みを禁止する。
Step2. 要求メモリサイズが0の場合は、割り込み状態を復元し、処理を終了する。
Step3. 要求メモリサイズを8の倍数で丸める。
Step4. フリーメモリリストの先頭から、要求メモリサイズ以上のメモリブロックを探索する。
Step5. 要求メモリサイズを満たすメモリブロックがない場合は、割り込み状態を復元し、処理を終了する。
Step6. 要求メモリサイズとメモリブロックサイズが一致する場合は、そのブロックをメモリフリーリストから除く
Step7.要求メモリサイズよりメモリブロックサイズが大きい場合は、2つに分割し、
要求サイズと一致するブロックをスタックとし、残りをメモリフリーリストに残す。
Step8. 割り込み状態を復元する。
Step9. スタック(メモリブロックの最上位アドレス)を返す。
[in] | nbytes | 要求メモリサイズ(byte) |
Definition at line 25 of file getstk.c.
References disable(), memlist, memblk::mlength, memblk::mnext, NULL, restore(), roundmb, and SYSERR.
Referenced by create(), and sysinit().