XINU
|
ポートを用いたメッセージと待機中プロセスを解放する。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
void | _ptclear (struct ptentry *ptptr, uint16 newstate, int32(*dispose)(int32)) |
ポートを用いたメッセージと待機中プロセスを解放する。 More... | |
ポートを用いたメッセージと待機中プロセスを解放する。
Definition in file ptclear.c.
ポートを用いたメッセージと待機中プロセスを解放する。
Step1. ポートの状態をLIMBOとし、他のプロセスからポート使用不可とする。
Step2. ポートシーケンス番号をリセットする。
Step3. メッセージリストが空になるまで、各メッセージを処分する。
Step4. メッセージリスト全体をフリーリストとする。
Step5. 引数で指定されたポートクリア後の状態に応じて、処理を切り替える。
・PT_ALLOCの場合:ポートテーブルエントリの先頭と末尾をNULLを指す状態とし、送受信用セマフォをリセットする。
・上記以外の場合:送受信用セマフォを削除する。
Step6. ポート状態を引数で指定された状態に変更する。
[in] | ptptr | クリア対象のポートテーブルエントリ |
[in] | newstate | ポートをクリアした後の新しい状態 |
[in] | dispose | メッセージ処分用の関数ポインタ |
Definition at line 24 of file ptclear.c.
References NULL, PT_ALLOC, PT_LIMBO, ptfree, ptentry::pthead, ptentry::ptmaxcnt, ptnode::ptmsg, ptnode::ptnext, ptentry::ptrsem, ptentry::ptseq, ptentry::ptssem, ptentry::ptstate, ptentry::pttail, semdelete(), and semreset().
Referenced by ptdelete(), and ptreset().