XINU
Functions
getitem.c File Reference

キュー内のプロセスを操作するAPI(プロセス取得API)を提供する。 More...

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

Go to the source code of this file.

Functions

pid32 getfirst (qid16 q)
 キューの先頭からプロセスを取り出す。 More...
 
pid32 getitem (pid32 pid)
 キューの任意の位置からプロセスを取り出す。 More...
 
pid32 getlast (qid16 q)
 キューの末尾からプロセスを取り出す。 More...
 

Detailed Description

キュー内のプロセスを操作するAPI(プロセス取得API)を提供する。

Definition in file getitem.c.

Function Documentation

◆ getfirst()

pid32 getfirst ( qid16  q)

キューの先頭からプロセスを取り出す。

Parameters
[in]qプロセスを取り出すためのキューID(チェックなしで有効)
Returns
キューにプロセスがある場合はキューの先頭にあるプロセスID、
キューが空の場合はEMPTYを返す。

Definition at line 13 of file getitem.c.

References EMPTY, getitem(), isempty, queuehead, and queuetab.

Referenced by dequeue(), semdelete(), and semreset().

14 {
15  pid32 head;
16 
17  if (isempty(q))
18  {
19  return EMPTY;
20  }
21 
22  head = queuehead(q);
23  return getitem(queuetab[head].qnext);
24 }
struct qentry queuetab[]
Definition: queue.c:45
#define queuehead(q)
キューの先頭を返す。
Definition: queue.h:53
#define EMPTY
次のキューインデックスもしくは前のキューインデックスがNULL値
Definition: queue.h:23
#define isempty(q)
リストが空かどうかを返す。
Definition: queue.h:89
int32 pid32
プロセスID
Definition: kernel.h:26
pid32 getitem(pid32 pid)
キューの任意の位置からプロセスを取り出す。
Definition: getitem.c:51
Here is the call graph for this function:
Here is the caller graph for this function:

◆ getitem()

pid32 getitem ( pid32  pid)

キューの任意の位置からプロセスを取り出す。

Parameters
[in]pid取り出すプロセスID
Returns
キューにプロセスがある場合はキューの末尾にあるプロセスID、
キューが空の場合はEMPTYを返す。

Definition at line 51 of file getitem.c.

References qentry::qnext, qentry::qprev, and queuetab.

Referenced by getfirst(), getlast(), kill(), suspend(), and unsleep().

54 {
55  pid32 prev, next;
56 
57  next = queuetab[pid].qnext; /* Following node in list */
58  prev = queuetab[pid].qprev; /* Previous node in list */
59  queuetab[prev].qnext = next;
60  queuetab[next].qprev = prev;
61  return pid;
62 }
struct qentry queuetab[]
Definition: queue.c:45
qid16 qnext
次のプロセスか末尾のプロセスのインデックス。
Definition: queue.h:39
qid16 qprev
前のプロセスか先頭のプロセスのインデックス。
Definition: queue.h:41
int32 pid32
プロセスID
Definition: kernel.h:26
Here is the caller graph for this function:

◆ getlast()

pid32 getlast ( qid16  q)

キューの末尾からプロセスを取り出す。

Parameters
[in]qプロセスを取り出すためのキューID(チェックなしで有効)
Returns
キューにプロセスがある場合はキューの末尾にあるプロセスID、
キューが空の場合はEMPTYを返す。

Definition at line 32 of file getitem.c.

References EMPTY, getitem(), isempty, queuetab, and queuetail.

33 {
34  pid32 tail;
35 
36  if (isempty(q))
37  {
38  return EMPTY;
39  }
40 
41  tail = queuetail(q);
42  return getitem(queuetab[tail].qprev);
43 }
struct qentry queuetab[]
Definition: queue.c:45
#define EMPTY
次のキューインデックスもしくは前のキューインデックスがNULL値
Definition: queue.h:23
#define isempty(q)
リストが空かどうかを返す。
Definition: queue.h:89
int32 pid32
プロセスID
Definition: kernel.h:26
pid32 getitem(pid32 pid)
キューの任意の位置からプロセスを取り出す。
Definition: getitem.c:51
#define queuetail(q)
キューの末尾を返す。
Definition: queue.h:61
Here is the call graph for this function: