XINU
Functions
resume.c File Reference

プロセスを休止状態(サスペンド)からREADY状態に遷移させる。 More...

#include <xinu.h>
Include dependency graph for resume.c:

Go to the source code of this file.

Functions

pri16 resume (pid32 pid)
 プロセスを休止状態(サスペンド)からREADY状態に遷移させる。 More...
 

Detailed Description

プロセスを休止状態(サスペンド)からREADY状態に遷移させる。

Definition in file resume.c.

Function Documentation

◆ resume()

pri16 resume ( pid32  pid)

プロセスを休止状態(サスペンド)からREADY状態に遷移させる。

Step1. 割り込み禁止状態とし、割り込みマスクを保持する。
Step2. PIDが正常値かどうかを確認する。
Step3. レジューム対象プロセス情報を取得する。
Step4. レジューム対象プロセス情報は、休止状態(サスペンド状態)かどうかを確認する。
Step5. 現在の優先度を取得する。
Step6. プロセスをREADY状態(CPUサービス対象)にする。
Step7. 割り込み状態(割り込みマスク)を元に戻す。

Parameters
[in]pid休止状態からREADY状態に遷移させるプロセスのID
Returns
READY状態となったプロセスの優先度

Definition at line 20 of file resume.c.

References disable(), isbadpid, PR_SUSP, proctab, procent::prprio, procent::prstate, ready(), restore(), and SYSERR.

Referenced by main(), net_init(), nulluser(), rdscontrol(), rdsread(), rdswrite(), shell(), and startup().

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
struct procent proctab[]
プロセステーブル。
Definition: initialize.c:23
プロセステーブル(32bitsの倍数)。
Definition: process.h:85
intmask disable(void)
割り込み禁止(intr.Sに定義がある)
Here is the call graph for this function:
Here is the caller graph for this function: