XINU
|
プロセスを一時停止し、休止状態(サスペンド)に遷移させる。 More...
#include <xinu.h>
Go to the source code of this file.
Functions | |
syscall | suspend (pid32 pid) |
プロセスを一時停止し、休止状態(サスペンド)に遷移させる。 More... | |
プロセスを一時停止し、休止状態(サスペンド)に遷移させる。
Definition in file suspend.c.
プロセスを一時停止し、休止状態(サスペンド)に遷移させる。
Step1. 割り込み禁止状態とし、割り込みマスクを保持する。
Step2. PIDが正常値か、NULLプロセスではないかを確認する。
NULLプロセスが休止状態になった場合、動かすプロセスがREADYリストから無くなる可能性がある。
Step3. サスペンド対象プロセス情報を取得する。
Step4. サスペンド可能なプロセスは、現在実行中かREADY状態のプロセスだけである。
READY状態の場合:READYリストからサスペンド対象プロセスを除外し、サスペンド状態とする。
実行中の場合:サスペンド状態とし、再スケジューリングを行う。
それ以外:割り込み状態(割り込みマスク)を元に戻し、エラー終了
Step5. 現在の優先度を取得する。 Step6. 割り込み状態(割り込みマスク)を元に戻す。
[in] | pid | 休止状態に移行させるプロセスのID |
Definition at line 23 of file suspend.c.
References disable(), getitem(), isbadpid, NULLPROC, PR_CURR, PR_READY, PR_SUSP, proctab, procent::prprio, procent::prstate, resched(), restore(), and SYSERR.