XINU
|
プロセスに関する情報(プロセスの数、プロセス状態、プロセステーブル等)を定義する。 More...
Go to the source code of this file.
Data Structures | |
struct | procent |
プロセステーブル(32bitsの倍数)。 More... | |
Macros | |
#define | INITPRIO 20 |
初期プロセス優先度 More... | |
#define | INITRET userret |
プロセスが戻るアドレス。 More... | |
#define | INITSTK 65536 |
初期プロセススタックサイズ More... | |
#define | isbadpid(x) |
プロセスIDを検証する。割り込みが無効になっている事を想定している。 More... | |
#define | NDESC 5 /* must be odd to make procent 4N bytes */ |
#define | NPROC 8 |
デフォルトのプロセス数。 More... | |
#define | NULLPROC 0 |
NULLプロセスのID。NULLプロセスは、他に動かすプロセスがない時に動く空プロセス More... | |
#define | PNMLEN 16 |
プロセス名の長さ More... | |
#define | PR_CURR 1 |
プロセスが現在動作中。 More... | |
#define | PR_FREE 0 |
プロセステーブルエントリが使用されていない状態。 More... | |
#define | PR_READY 2 |
プロセスが準備完了(READY)状態。 More... | |
#define | PR_RECTIM 7 |
プロセスが「タイムアウト」か「メッセージの到着」のいずれか早い方で待機中の状態。 More... | |
#define | PR_RECV 3 |
プロセスがメッセージで待機中の状態。 More... | |
#define | PR_SLEEP 4 |
プロセスが休眠中(タイマー待機中)の状態。 More... | |
#define | PR_SUSP 5 |
プロセスがサスペンド(休止)させられた状態。 More... | |
#define | PR_WAIT 6 |
プロセスがセマフォ上で待機中の状態。 More... | |
#define | STACKMAGIC 0x0A0AAAA9 |
プロセススタックの最上位に配置するマーカ(オーバフロー検出に用いる) More... | |
Variables | |
pid32 | currpid |
現在実行中のプロセス。 More... | |
int32 | prcount |
現在アクティブのプロセス。 More... | |
struct procent | proctab [] |
プロセステーブル。 More... | |
プロセスに関する情報(プロセスの数、プロセス状態、プロセステーブル等)を定義する。
XINUは組込みシステムで用いられる事を前提として、設計されている。
例えば、組み込み用途に耐えうるメモリ使用量とするために、XINUはリンクリストを用いた
プロセス管理を採用していない。ここでのリンクリストとは、ノードを連結したデータ構造である。
[ノード]
・データオブジェクト(例:プロセス、キー値)
・一つ前のノートへのポインタ
・一つ後のノートへのポインタ
[(双方向)リンクリスト]
・最先頭ノード <-> ノード <-> ノード <-> … <-> 最後方ノード
上記のようなリンクリストは、Linux Kernel等で用いられている。
しかし、XINUはプロセス数がデフォルト8個と少ないため、
・ノードを連続したメモリ領域に配置
・ノードからプロセスIDを省略(配列のインデックス = プロセスIDとみなす)
という形で設計する事によって、使用するメモリを減らしている。
(ポインタサイズの4byteですら、削減している)
Definition in file process.h.
#define INITPRIO 20 |
#define INITRET userret |
#define INITSTK 65536 |
#define isbadpid | ( | x | ) |
プロセスIDを検証する。割り込みが無効になっている事を想定している。
[in] | x | プロセスID。 |
プロセスIDがプロセスID範囲内に収まっていない、もしくはプロセステーブルで
当該プロセスIDが未使用状態であれば、そのプロセスIDは不正とみなす。
Definition at line 71 of file process.h.
Referenced by chprio(), enqueue(), getprio(), insert(), insertd(), kill(), ready(), resume(), send(), suspend(), and unsleep().
#define NDESC 5 /* must be odd to make procent 4N bytes */ |
#define NPROC 8 |
#define NULLPROC 0 |
#define PR_CURR 1 |
#define PR_FREE 0 |
#define PR_READY 2 |
#define PR_RECTIM 7 |
#define PR_RECV 3 |
#define PR_SLEEP 4 |
#define PR_SUSP 5 |
#define PR_WAIT 6 |
#define STACKMAGIC 0x0A0AAAA9 |
pid32 currpid |
現在実行中のプロセス。
現在実行中のプロセス。
Definition at line 32 of file initialize.c.
Referenced by arp_resolve(), dnslookup(), getpid(), icmp_recv(), irq_dispatch(), receive(), recvclr(), recvtime(), resched(), sleepms(), sysinit(), udp_recv(), udp_recvaddr(), and wait().
int32 prcount |
struct procent proctab[] |
プロセステーブル。
プロセステーブル。
Definition at line 23 of file initialize.c.
Referenced by addargs(), chprio(), create(), getprio(), irq_dispatch(), kill(), newpid(), printMemUse(), ready(), receive(), recvclr(), recvtime(), resched(), resume(), send(), shell(), sleepms(), suspend(), sysinit(), unsleep(), wait(), and xsh_ps().