2006-04-17から1日間の記事一覧

initプロセス (ユーザコンテキスト)

initプロセスのユーザコンテキストは_main関数から始まる.中身はstartbootを呼んでいるだけ. pc/init9.c 1: extern void startboot(char*, char**); 2: 3: void 4: _main(char *argv0) 5: { 6: startboot(argv0, &argv0); 7: }initcodeは標準入出力をopen…

ksetenv (環境変数もファイル)

環境変数の設定はksetenv関数で行なっている.環境変数は名前と値の組だから,単純にハッシュでも作っているのかなと思ってしまうが,Plan9では,環境変数もファイルとして表わされることを思い出そう. 環境変数cputypeの場合は,#e/cputypeというファイル…

再びuserinit

再びuserinit関数に戻って.テキストセグメントは次のように設定している.initcodeってのが実行コードらしい. port/portdat.h 750: extern uchar initcode[]; pc/main.c 258: s = newseg(SG_TEXT, UTZERO, 1); 259: s->flushme++; 260: p->seg[TSEG] = s; …

initプロセス (カーネルコンテキスト)

昨日,initプロセスに話が及んだので,その辺を追っかけてみよう.userinitで,initプロセスのプログラムカウンタをinit0関数に設定したところまで見た.カーネルの初期化の最後にスケジューラが呼ばれ,initプロセスがスケジューリングされる. pc/main.c 2…