XINU
|
システムの初期化を処理し、nullプロセスとなる。 More...
Go to the source code of this file.
Macros | |
#define | CONSOLE_RESET " \033[0m\033[2J\033[;H" |
コンソール(コンソールカラー、文字、ポジション)をリセットするためのエスケープシーケンス More... | |
Functions | |
int32 | delay (int n) |
マイクロ秒単位で処理を遅らせる。 More... | |
void | main (void) |
最初に生成されるmainプロセスのextern宣言 More... | |
void | meminit (void) |
フリーメモリリストを初期化するmeminit()のextern宣言 More... | |
void | nulluser () |
システムの初期化を処理し、nullプロセスとなる。 More... | |
void | start (void) |
XINUコードの開始であるstart()のextern宣言 More... | |
local process | startup (void) |
スタートアップタスクを完了するプロセス More... | |
int32 | stop (char *s) |
処理を停止させる。無限ループによる停止のため、復帰にはリセットが必要である。 More... | |
static void | sysinit () |
内部システムの初期化を行うsysinit()のextern宣言 More... | |
Variables | |
void * | _end |
XINUコードの終わり More... | |
pid32 | currpid |
現在実行中のプロセスのID More... | |
struct memblk | memlist |
フリーメモリブロックのリスト More... | |
int | prcount |
生存しているプロセスの総数 More... | |
struct procent | proctab [NPROC] |
プロセステーブルエントリ More... | |
struct sentry | semtab [NSEM] |
セマフォテーブルエントリ More... | |
システムの初期化を処理し、nullプロセスとなる。
Definition in file initialize.c.
#define CONSOLE_RESET " \033[0m\033[2J\033[;H" |
コンソール(コンソールカラー、文字、ポジション)をリセットするためのエスケープシーケンス
Definition at line 34 of file initialize.c.
Referenced by sysinit().
int32 delay | ( | int | n | ) |
マイクロ秒単位で処理を遅らせる。
[in] | n | 遅延時間(マイクロ秒) |
Definition at line 262 of file initialize.c.
Referenced by xsh_sleep(), and xsh_udpecho().
void main | ( | void | ) |
最初に生成されるmainプロセスのextern宣言
最初に生成されるmainプロセスのextern宣言
Step1. メッセージを全て受信する(ただし、メッセージ内容は確認しない)。
Step2. XINUシェルを作成/起動する。
Step3. XINUシェルが終了した場合は、以下の処理を行う(無限に繰り返す)。
・メッセージ到着を待つ。メッセージが来なければ、待ち続ける。
・200[ms]スリープする。
・XINUシェルを再作成/起動する。
Definition at line 18 of file main.c.
References CONSOLE, create(), kprintf(), OK, receive(), recvclr(), resume(), shell(), sleepms(), and TRUE.
Referenced by startup().
void meminit | ( | void | ) |
フリーメモリリストを初期化するmeminit()のextern宣言
フリーメモリリストを初期化するmeminit()のextern宣言
Step1. ヒープ開始アドレスとヒープ終了アドレスを設定する。
Step2. メモリリストの先頭に、ヒープ開始から終了までのメモリブロックをセットする。
Definition at line 19 of file meminit.c.
References end, MAXADDR, maxheap, memlist, minheap, memblk::mlength, memblk::mnext, and NULL.
Referenced by sysinit().
void nulluser | ( | ) |
システムの初期化を処理し、nullプロセスとなる。
Step1. XINUデータ構造とデバイスを初期化する。
Step2. XINUシステムのメモリレイアウトを出力する。
Step3. 割り込みを許可状態にする。
Step4. ネットワークデータ構造およびネットワーク関連プロセスを初期化する。
Step5. スタートアップ(初期化)終了プロセスを呼び出し、その中でmainプロセスを呼び出す。
Step6. 本関数はnullプロセスとなる。つまり、他のプロセスを実行する準備ができていない時、
CPUを実行するプロセス(nullプロセス)がある事を保証する。
Definition at line 53 of file initialize.c.
References create(), data, ebss, enable(), etext, INITPRIO, INITSTK, kprintf(), memlist, memblk::mlength, memblk::mnext, net_init(), NULL, resume(), startup(), sysinit(), text, and TRUE.
void start | ( | void | ) |
XINUコードの開始であるstart()のextern宣言
スタートアップタスクを完了するプロセス
nullプロセスから実行できないスタートアップ処理(初期化処理)を行い、mainプロセスを作成/実行する。
Step1. DHCPを使用してIPアドレスを取得/表示する。
Step2. mainプロセスを作成し、実行する。
Definition at line 114 of file initialize.c.
References create(), getlocalip(), INITPRIO, INITSTK, network::ipucast, kprintf(), main(), NetData, NULL, OK, resume(), sprintf(), and SYSERR.
Referenced by nulluser().
int32 stop | ( | char * | s | ) |
処理を停止させる。無限ループによる停止のため、復帰にはリセットが必要である。
[in] | s | 停止時に表示するメッセージ |
Definition at line 249 of file initialize.c.
References kprintf().
Referenced by xsh_memdump().
|
static |
内部システムの初期化を行うsysinit()のextern宣言
XINUデータ構造とデバイスを初期化する。
Step1. コンソールリセットを行う。
Step2. プラットフォーム固有の初期化を行う。
Step3. 割り込みベクタを初期化する。
Step4. フリーメモリリストを初期化する。
Step5. プロセス総数を記録する(nullプロセス分のみ記録するため、1となる)。
Step6. スケジューリングの延期(Defer)状態をリセットする。
Step7. プロセステーブルエントリ(nullプロセス分も含む)を初期化する。
Step8. セマフォテーブルを初期化する。
Step9. バッファプールを初期化する。
Step10. プロセスのREADYリストを作成する。
Step11. リアルタイムクロックを初期化する。
Step12. デバイスとデバイスドライバを初期化する。
Definition at line 163 of file initialize.c.
References bufinit(), clkinit(), CONSOLE_RESET, currpid, Defer, getstk(), init(), initevec(), kprintf(), meminit(), defer::ndefers, NDEVS, newqueue(), NPROC, NSEM, NULL, NULLCH, NULLPROC, NULLSTK, platinit(), PR_CURR, PR_FREE, prcount, procent::prname, proctab, procent::prprio, procent::prstate, procent::prstkbase, procent::prstklen, procent::prstkptr, readylist, S_FREE, sentry::scount, semtab, sentry::squeue, sentry::sstate, and strncpy().
Referenced by nulluser().
void* _end |
XINUコードの終わり
pid32 currpid |
現在実行中のプロセスのID
現在実行中のプロセス。
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().
struct memblk memlist |
フリーメモリブロックのリスト
フリーメモリリストの先頭
Definition at line 27 of file initialize.c.
Referenced by freemem(), getmem(), getstk(), meminit(), nulluser(), printFreeList(), and printMemUse().
int prcount |
プロセステーブルエントリ
プロセステーブル。
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().
セマフォテーブルエントリ
セマフォテーブルエントリのextern宣言
Definition at line 25 of file initialize.c.
Referenced by kill(), newsem(), semcount(), semcreate(), semdelete(), semreset(), signal(), signaln(), sysinit(), and wait().