XINU
getitem.c
Go to the documentation of this file.
1 
5 #include <xinu.h>
6 
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 }
25 
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 }
44 
52  pid32 pid /* ID of process to remove */
53 )
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
全てのシステムヘッダファイルをインクルードする。
#define queuehead(q)
キューの先頭を返す。
Definition: queue.h:53
pid32 getfirst(qid16 q)
キューの先頭からプロセスを取り出す。
Definition: getitem.c:13
#define EMPTY
次のキューインデックスもしくは前のキューインデックスがNULL値
Definition: queue.h:23
qid16 qnext
次のプロセスか末尾のプロセスのインデックス。
Definition: queue.h:39
#define isempty(q)
リストが空かどうかを返す。
Definition: queue.h:89
qid16 qprev
前のプロセスか先頭のプロセスのインデックス。
Definition: queue.h:41
int16 qid16
キューID
Definition: kernel.h:24
int32 pid32
プロセスID
Definition: kernel.h:26
pid32 getitem(pid32 pid)
キューの任意の位置からプロセスを取り出す。
Definition: getitem.c:51
pid32 getlast(qid16 q)
キューの末尾からプロセスを取り出す。
Definition: getitem.c:32
#define queuetail(q)
キューの末尾を返す。
Definition: queue.h:61