XINU
system
newqueue.c
Go to the documentation of this file.
1
5
#include <
xinu.h
>
6
15
qid16
newqueue
(
void
)
16
{
17
static
qid16
nextqid =
NPROC
;
/* Next list in queuetab to use */
18
qid16
q;
/* ID of allocated queue */
19
20
q = nextqid;
21
if
(q >=
NQENT
)
22
{
/* Check for table overflow */
23
return
SYSERR
;
24
}
25
26
nextqid += 2;
/* Increment index for next call*/
27
28
/* Initialize head and tail nodes to form an empty queue */
29
30
queuetab
[
queuehead
(q)].
qnext
=
queuetail
(q);
31
queuetab
[
queuehead
(q)].
qprev
=
EMPTY
;
32
queuetab
[
queuehead
(q)].
qkey
=
MAXKEY
;
33
queuetab
[
queuetail
(q)].
qnext
=
EMPTY
;
34
queuetab
[
queuetail
(q)].
qprev
=
queuehead
(q);
35
queuetab
[
queuetail
(q)].
qkey
=
MINKEY
;
36
return
q;
37
}
queuetab
struct qentry queuetab[]
Definition:
queue.c:45
xinu.h
全てのシステムヘッダファイルをインクルードする。
SYSERR
#define SYSERR
処理が失敗した場合
Definition:
kernel.h:79
MINKEY
#define MINKEY
キューの中に格納できるキーの最小値
Definition:
queue.h:27
queuehead
#define queuehead(q)
キューの先頭を返す。
Definition:
queue.h:53
EMPTY
#define EMPTY
次のキューインデックスもしくは前のキューインデックスがNULL値
Definition:
queue.h:23
qentry::qnext
qid16 qnext
次のプロセスか末尾のプロセスのインデックス。
Definition:
queue.h:39
qentry::qkey
int32 qkey
キュー順序を決定するキー(優先度)。
Definition:
queue.h:37
qentry::qprev
qid16 qprev
前のプロセスか先頭のプロセスのインデックス。
Definition:
queue.h:41
NPROC
#define NPROC
Definition:
conf.h:79
NQENT
#define NQENT
Definition:
queue.h:19
qid16
int16 qid16
キューID
Definition:
kernel.h:24
newqueue
qid16 newqueue(void)
グローバルキューテーブルにキューを割り当て、テーブルを初期化する。
Definition:
newqueue.c:15
queuetail
#define queuetail(q)
キューの末尾を返す。
Definition:
queue.h:61
MAXKEY
#define MAXKEY
キューの中に格納できるキーの最大値
Definition:
queue.h:25
Generated by
1.8.13