XINU
Functions
chprio.c File Reference

プロセスのスケジューリング優先度を変更する。 More...

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

Go to the source code of this file.

Functions

pri16 chprio (pid32 pid, pri16 newprio)
 プロセスのスケジューリング優先度を変更する。 More...
 

Detailed Description

プロセスのスケジューリング優先度を変更する。

Definition in file chprio.c.

Function Documentation

◆ chprio()

pri16 chprio ( pid32  pid,
pri16  newprio 
)

プロセスのスケジューリング優先度を変更する。

Step1. 割り込みを禁止する。
Step2. 不正なPIDの場合は割り込み許可状態に戻し、処理を終了する。
Step3. 引数で指定されたPIDからプロセス情報を取得し、新しい優先度に変更する。
Step4. 割り込み許可状態に戻し、処理を終了する。

Parameters
[in]pid優先度を変更したいプロセスのID
[in]newprio新しい優先度
Returns
優先度が変更できた場合は古い優先度、PIDが不正な場合はSYSERRを返す。

Definition at line 18 of file chprio.c.

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

19 {
20  intmask mask; /* Saved interrupt mask */
21  struct procent *prptr; /* Ptr to process's table entry */
22  pri16 oldprio; /* Priority to return */
23 
24  mask = disable();
25  if (isbadpid(pid))
26  {
27  restore(mask);
28  return (pri16)SYSERR;
29  }
30  prptr = &proctab[pid];
31  oldprio = prptr->prprio;
32  prptr->prprio = newprio;
33  restore(mask);
34  return oldprio;
35 }
void restore(intmask)
#define isbadpid(x)
プロセスIDを検証する。割り込みが無効になっている事を想定している。
Definition: process.h:71
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
int16 pri16
プロセス優先度
Definition: kernel.h:30
pri16 prprio
プロセスのスケジューリング優先度。
Definition: process.h:90
uint32 intmask
保存された割り込みマスク
Definition: kernel.h:38
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: