XINU
Functions | Variables
ready.c File Reference

プロセスをCPUサービスの対象にする。 More...

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

Go to the source code of this file.

Functions

status ready (pid32 pid)
 プロセスをCPUサービスの対象にする。 More...
 

Variables

qid16 readylist
 READYリストのインデックス More...
 

Detailed Description

プロセスをCPUサービスの対象にする。

Definition in file ready.c.

Function Documentation

◆ ready()

status ready ( pid32  pid)

プロセスをCPUサービスの対象にする。

Step1. PIDが正常値かどうかを確認する。
Step2. プロセス情報を取得し、ステータスをREADY状態に移行する。
Step3. プロセスをREADYリストに挿入する。
Step4. 再スケジューリングを行う。

Parameters
[in]pidREADY状態に遷移させるプロセスのID
Returns
プロセスがREADY状態となった場合はOK、引数が不正なPIDの場合はSYSERRを返す。

Definition at line 21 of file ready.c.

References insert(), isbadpid, OK, PR_READY, proctab, procent::prprio, procent::prstate, readylist, resched(), and SYSERR.

Referenced by resume(), semdelete(), semreset(), send(), signal(), signaln(), and wakeup().

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
pri16 prprio
プロセスのスケジューリング優先度。
Definition: process.h:90
uint16 prstate
プロセス状態(PR_CURR, ..., etc)。
Definition: process.h:88
void resched(void)
最優先の適切なプロセスにCPU実行権を渡す。
Definition: resched.c:22
struct procent proctab[]
プロセステーブル。
Definition: initialize.c:23
status insert(pid32, qid16, int32)
優先度に基づいて、キューにプロセスを挿入する。
Definition: insert.c:20
プロセステーブル(32bitsの倍数)。
Definition: process.h:85
qid16 readylist
READYリストのインデックス
Definition: ready.c:9
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ readylist

qid16 readylist

READYリストのインデックス

READY状態のプロセスリストに対するグローバルID.

Definition at line 9 of file ready.c.

Referenced by ready(), resched(), and sysinit().