XINU
ready.c
Go to the documentation of this file.
1 
6 #include <xinu.h>
7 
10 
22  pid32 pid /* ID of process to make ready */
23 )
24 {
25  register struct procent *prptr;
26 
27  if (isbadpid(pid))
28  {
29  return SYSERR;
30  }
31 
32  /* Set process state to indicate ready and add to ready list */
33 
34  prptr = &proctab[pid];
35  prptr->prstate = PR_READY;
36  insert(pid, readylist, prptr->prprio);
37  resched();
38 
39  return OK;
40 }
#define PR_READY
プロセスが準備完了(READY)状態。
Definition: process.h:39
全てのシステムヘッダファイルをインクルードする。
#define isbadpid(x)
プロセスIDを検証する。割り込みが無効になっている事を想定している。
Definition: process.h:71
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
#define OK
処理が成功した場合
Definition: kernel.h:77
int32 status
ステータスを意味する返り値の型(OK/SYSERR)
Definition: kernel.h:57
pri16 prprio
プロセスのスケジューリング優先度。
Definition: process.h:90
uint16 prstate
プロセス状態(PR_CURR, ..., etc)。
Definition: process.h:88
int16 qid16
キューID
Definition: kernel.h:24
void resched(void)
最優先の適切なプロセスにCPU実行権を渡す。
Definition: resched.c:22
struct procent proctab[]
プロセステーブル。
Definition: initialize.c:23
int32 pid32
プロセスID
Definition: kernel.h:26
status insert(pid32, qid16, int32)
優先度に基づいて、キューにプロセスを挿入する。
Definition: insert.c:20
プロセステーブル(32bitsの倍数)。
Definition: process.h:85
qid16 readylist
READYリストのインデックス
Definition: ready.c:9
status ready(pid32 pid)
プロセスをCPUサービスの対象にする。
Definition: ready.c:21