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