XINU
Functions
newqueue.c File Reference

グローバルキューテーブルにキューを割り当て、テーブルを初期化する。 More...

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

Go to the source code of this file.

Functions

qid16 newqueue (void)
 グローバルキューテーブルにキューを割り当て、テーブルを初期化する。 More...
 

Detailed Description

グローバルキューテーブルにキューを割り当て、テーブルを初期化する。

Definition in file newqueue.c.

Function Documentation

◆ newqueue()

qid16 newqueue ( void  )

グローバルキューテーブルにキューを割り当て、テーブルを初期化する。

newqueue()は、キューテーブルのインデックスNPROC以降にリストの先頭/末尾を作成し、
そのリストに要素を追加できる状態にする。
次にnewqueue()を呼び出された時、キューテーブルの位置に新しいリストの先頭/末尾を配置すべきかは、
newqueue()内のstatic変数nextqidを参照すれば判断できる。

Returns
成功時はリストの先頭ノードインデックス、キューテーブルがオーバフローした場合はSYSERRを返す。

Definition at line 15 of file newqueue.c.

References EMPTY, MAXKEY, MINKEY, NPROC, NQENT, qentry::qkey, qentry::qnext, qentry::qprev, queuehead, queuetab, queuetail, and SYSERR.

Referenced by clkinit(), and sysinit().

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 
36  return q;
37 }
struct qentry queuetab[]
Definition: queue.c:45
#define SYSERR
処理が失敗した場合
Definition: kernel.h:79
#define MINKEY
キューの中に格納できるキーの最小値
Definition: queue.h:27
#define queuehead(q)
キューの先頭を返す。
Definition: queue.h:53
#define EMPTY
次のキューインデックスもしくは前のキューインデックスがNULL値
Definition: queue.h:23
qid16 qnext
次のプロセスか末尾のプロセスのインデックス。
Definition: queue.h:39
int32 qkey
キュー順序を決定するキー(優先度)。
Definition: queue.h:37
qid16 qprev
前のプロセスか先頭のプロセスのインデックス。
Definition: queue.h:41
#define NPROC
Definition: conf.h:79
#define NQENT
Definition: queue.h:19
int16 qid16
キューID
Definition: kernel.h:24
#define queuetail(q)
キューの末尾を返す。
Definition: queue.h:61
#define MAXKEY
キューの中に格納できるキーの最大値
Definition: queue.h:25
Here is the caller graph for this function: