XINU
resume.c
Go to the documentation of this file.
1 
5 #include <xinu.h>
6 
21 {
22  intmask mask; /* Saved interrupt mask */
23  struct procent *prptr; /* Ptr to process's table entry */
24  pri16 prio; /* Priority to return */
25 
26  mask = disable();
27  if (isbadpid(pid))
28  {
29  restore(mask);
30  return (pri16)SYSERR;
31  }
32  prptr = &proctab[pid];
33  if (prptr->prstate != PR_SUSP)
34  {
35  restore(mask);
36  return (pri16)SYSERR;
37  }
38  prio = prptr->prprio; /* Record priority to return */
39  ready(pid);
40  restore(mask);
41  return prio;
42 }
void restore(intmask)
#define PR_SUSP
プロセスがサスペンド(休止)させられた状態。
Definition: process.h:45
全てのシステムヘッダファイルをインクルードする。
#define isbadpid(x)
プロセスIDを検証する。割り込みが無効になっている事を想定している。
Definition: process.h:71
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
status ready(pid32)
プロセスをCPUサービスの対象にする。
Definition: ready.c:21
int16 pri16
プロセス優先度
Definition: kernel.h:30
pri16 prprio
プロセスのスケジューリング優先度。
Definition: process.h:90
uint32 intmask
保存された割り込みマスク
Definition: kernel.h:38
uint16 prstate
プロセス状態(PR_CURR, ..., etc)。
Definition: process.h:88
pri16 resume(pid32 pid)
プロセスを休止状態(サスペンド)からREADY状態に遷移させる。
Definition: resume.c:20
struct procent proctab[]
プロセステーブル。
Definition: initialize.c:23
int32 pid32
プロセスID
Definition: kernel.h:26
プロセステーブル(32bitsの倍数)。
Definition: process.h:85
intmask disable(void)
割り込み禁止(intr.Sに定義がある)