XINU
|
バッファプールから取得したバッファを解放する。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
syscall | freebuf (char *bufaddr) |
バッファプールから取得したバッファを解放する。 More... | |
バッファプールから取得したバッファを解放する。
Definition in file freebuf.c.
syscall freebuf | ( | char * | bufaddr | ) |
バッファプールから取得したバッファを解放する。
Step1. 割り込みを禁止する。
Step2. 解放対象バッファアドレスの4Byte前に埋め込んだバッファプールIDが不正値かどうかを確認し、
不正値であれば割り込み状態を復元し、処理を終了する。
Step3. 解放対象バッファをバッファプールに戻す。
Step4. セマフォにシグナルを送り、待機プロセスがいれば待機解除とする。
Step5. 割り込み状態を復元する。
[in] | bufaddr | getbuf()で取得したバッファアドレス |
Definition at line 19 of file freebuf.c.
References bpentry::bpnext, bpentry::bpsem, buftab, disable(), nbpools, OK, restore(), signal(), and SYSERR.
Referenced by arp_in(), icmp_in(), icmp_recv(), icmp_release(), ip_enqueue(), ip_in(), ip_local(), ip_out(), ip_send(), ipout(), netin(), udp_in(), udp_recv(), udp_recvaddr(), and udp_release().