kernel

v6沖縄セミナ第二弾、ファイルシステム編

まごろくさんから 12 月で如何? との連絡が着信。 v6沖縄セミナ第二弾、ファイルシステム編、12月でどうでしょうか? http://twitter.com/magoroku15/status/252796784852746241 より引用 とり急ぎ専門学校 IT カレッジ沖縄さまに連絡を入れて開催可能な土曜…

Lions' な課題

例の小冊子の作者な @superhoge さんが以下な tweet をされている。 .textと.dataがそれぞれ1バイトの0410a.outファイルがあったとして、それをexecで実行したときにユーザAPRの値がどう設定されるか考えてみると楽しいかもよ>勉強中の方々 https://twitter…

Lions' 本読み (95)

朝練。朝練エントリばっかな気がしますがそこはスルーで。 signal ハンドラからの戻りが云々以来、当分読んでいないのだなということに気がついていたりしますがこちらもスルーで。 とりあえず buf な xref を追いかけてみようかな、と思ったのですが変数の…

パッチネタ

ste_rmi4 というドライバに何故か一つだけ printk が残ってて、何でこんなことになってるのか、と言いつつパッチを作成したのですが、send-email なアドレスを調べようと TODO を見たら以下な記述が。 TODO ---- Wait for the official upstream synaptics r…

Lions' 本読み (94)

今日の昼、人がやたらに多い某スーパーのベンチにてアセンブラのトラップルーチンあたりを再確認。Lions' 本読み (93) なソレとカブりますが、もう少しきちんと纏めておきたいと思います。

Lions' 本読み (93)

昨日実施された #geektable にてユーザモードのスタックポインタはアセンブラの call1 手続きで更新されている、という解を @mgwsuzuki さんから伺うも今一つ納得できず。というか、このあたりの処理における具体的な副作用 (?) について完全に忘却の彼方だ…

v6 呑み会#2

#geektable にかいめ。今回は Google Hangout で東京からリモート参加な @libkinjo さんが接続なさるとのこと。 つうか 今回はヘコタれてた psig 手続きからユーザモードスタックを云々するあたりの謎を @mgwsuzuki さんが解決なさったらしく、そちら方面の…

v6 呑み会#2

9 月は今週末実施とのことで atnd が立てられております。 http://atnd.org/events/32216 今のところ、今回のお題は以下らしい。 Lions本をベースにv6 unix読み – スタックの妙技を読み解く 麦汁さん誕生祭 PICとRails – 台風そんのその後 ふふふ、WASABI PE…

Lions' 本読み (92)

朝練。バッファ操作の 17 章です。 基本的にここで言及されているバッファヘッダとバッファというものは 4535 および 4720 で静的にメモリ上に確保された領域になるはず。で、その領域がディスクキャッシュ (?) のようなものとして使われているみたい。

Lions' 本読み (94)

朝練メモ。昨晩の続きを。 なんとなく 15 章を眺めるに rkstrategy (5389) 手続きで入出力なリクエストを発行 rkintr (5451) 手続きは操作完了の割り込み で全部ヤッツケちゃってる風に見えます。こんなんでええのかなぁ。 とりあえず別途 pdp11 なマニュア…

Lions' 本読み (93)

ええと、swap 手続きで云々している bdevsw は strct bdevsw な配列になっており、その d_strategy という属性が手続きとして呼び出される形になってます。 5212 (*bdevsw[swapdev>>8].d_strategy)(&swbuf);それにしても定義のあたりがなかなかに微妙。以下…

Lions' 本読み (92)

朝練メモ。ついに 15 章に突入。 入出力完了待ち、なループがどうやって終わるか、に心を奪われています。 5214 while((*fp&B_DONE)==0) 5215 sleep(fp, PSWP);つうかまず sleep が何契機で wakeup されるか、てのもナニ。

Lions' 本読み (91)

昨晩 #台風そん でもごもごしてて expand で興味深い記述を見つけてますので、今日はそのあたりを掘削してみる方向にて。 手続き定義のコメントてきには以下になります。 2258 * コアがない場合、サイズの要求を調整したあと、 2259 * プロセスがスワップア…

Lions' 本読み (90)

#台風そん なエントリ日曜日版第二弾です。14 章の xalloc 手続きについて。 若干病み上がりで微妙なカンジなんですがそのままエントリ投入しちゃえ。

Lions' 本読み (89)

#台風そん なエントリ日曜日版です。なかなか体調が回復してないようで着手は夕方近くだったりしてます。明日は体調的に出社できるのかどうなのか。 それは良いとして今回は 14 章の xswap 云々の掘削を。 渡す引数は手続きのコメントに記述があるんですが引…

Lions' 本読み (88)

ええと #台風そん にのっかって 14 章再読に突入です。 とりあえず軽め設定ということで sched あたりを確認。Lions' 本によれば プロセス #0 が sched 手続きを実行 入出力操作待ち以外は runin ないし runout で sleep している とのこと。以前のエントリ…

Lions' 本読み (87)

Lions' 呑み会 (#geektable) にてプロファイリングが云々という話を耳にしたので諸々確認してみました。

とほほ

シグナルハンドラから戻る時のユーザモードなスタックポインタ問題は suword にあるじゃないか、と言ってエントリまでできあがってたんですが、m[tf]pi 命令で push/pop するのはカレントスタックじゃねぇか、という事にエントリ投入直前で気づきました。 結…

Lions' 本読み (86)

こないだの #geektable でスタックポインタ二重化されてるとか Lions' 本に書いてないッスよね、とか言ってたら記述の存在を先ほど発見。260p です。 がしかし、シグナルハンドラから trap 乃至 clock 割り込みで割り込まれたユーザプロセスに RTT で戻るた…

v6 unix のシグナルハンドラ

rtt 命令で戻る、がビンゴらしい記述を発見。 From the fact that both PC and PSW are put on the user stack, and both need to be restored after signal handler is done, we can know that the signal handler returns with the rtt instruction instea…

シグナルハンドラ

以下なプログラムが simh の中でコンパイルできるのかどうか。 #include <signal.h> #include <unistd.h> static void sig_usr(int); int main(void) { if(signal(SIGUSR1, sig_usr) == SIG_ERR) printf("can't catch SIGUSR1\n"); if(signal(SIGUSR2, sig_usr) == SIG_ERR) prin</unistd.h></signal.h>…

Lions' 本読み (85)

現時点での結論。 4051 if((p=u.u_signal[n]) != 0) { 4052 u.u_error = 0; 4053 if(n != SIGINS && n != SIGTRC) 4054 u.u_signal[n] = 0; 4055 n = u.u_arg[R6] - 4; 4056 grow(n); 4057 suword(n+2, u.u_ar0[RPS]); 4058 suword(n, u.u_ar0[R7]); 4059 u.…

simh を読んでみる

Lions' 本でハマッている割り込み、トラップからの復帰時のスタックの状態を確認すべく、simh のソースを読んでみることに。 とゆーのも昨晩の Lions' 呑み会またの名を geektable にて mgwave すずきさんから挙動が分からない時はシミュレータのソースを読…

Lions' 本読み (84)

psig の核心部分がイメージできてない。 なんとなく整理してみるに シグナルは発行されてすぐに割り込む訳ではなくて trap とか clock の処理の一部としてハンドラが起動される (正確には psig 手続きが呼び出される、かな) フレームポインタ (r5) は C の t…

Lions' 本読み (83)

psig の核心部分がイメージできてない、と言いつつスキ間時間で云々してる途中に以下なコンテンツにいきあたる。 In Unix, a process has two stacks, one active in kernel mode and one active in user mode. (snip The PDP 11 supports two stacks by sup…

xv6

なんとか gdb で云々できるようになったみたいですが諸々確認入れた方が良いらしい。 とりあえず $ make qemu-gdbで qemu を kick off して別端末で gdb で attach することはできてる模様。

Lions' 本読み (82)

気になったので sleep の呼び出し元を確認してみた。

Lions' 本読み (81)

朝練メモ。とりあえず unix/sys1.c の Page 3 あたりの_データセグメントを読み出す_部分の謎については調査保留ということで。

まごろくさんスライド

Lions' 本初心者な方々はたまに確認入れるのが吉。 http://www.slideshare.net/magoroku15/v6-unix-in-okinawa プロセス切り替えだとかユーザとカーネルのモード切り替えだとかなあたり、というか記憶容量限界気味なわし的に非常に有り難いです。

Lions' 本読み (80)

課題が以下らしい。 xalloc 確認 データセグメント読み出し部分の確認 つまりは estabur の確認だったりする件 xalloc した後にデータセグメント読み出しなナニの理解 列挙してあるナニにある通り、estabur 手続きの確認かな。