XINU
|
事前に確保されたバッファプールからバッファを取得する。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
char * | getbuf (bpid32 poolid) |
事前に確保されたバッファプールからバッファを取得する。 More... | |
事前に確保されたバッファプールからバッファを取得する。
Definition in file getbuf.c.
char* getbuf | ( | bpid32 | poolid | ) |
事前に確保されたバッファプールからバッファを取得する。
Step1. 割り込みを禁止する。
Step2. バッファプールIDが不正値の場合は、割り込み状態を復元し、処理を終了する。
Step3. バッファプールに使用できるバッファが用意されるまで、待機する。
Step4. 提供するバッファをプール(リスト)から切り離す。
Step5. 提供するバッファの先頭4byteにバッファプールIDを記録し、4Byte分だけバッファのポインタを進める。
Step6. 割り込み状態を復元する。
[in] | poolid | バッファテーブル中のバッファプールID |
Definition at line 19 of file getbuf.c.
References bpentry::bpnext, bpentry::bpsem, buftab, disable(), nbpools, restore(), SYSERR, and wait().
Referenced by icmp_mkpkt(), netin(), udp_send(), and udp_sendto().