2006-12-01から1ヶ月間の記事一覧
Cのプログラムでバックトレースを表示したい場合,Linux(glibc)にはbacktrace(3),Solarisにはprintstack(3)なんてライブラリ関数が用意されているので,それらを使えばいい.なければsetjmp(3)やgetcontext(3)を使って,自力でスタックをたどることになる.…
binary - よりポータブルな無限ループという記事があったので,Plan9で試してみた.コンパイル通ったと思ったら,ファイルは空で,実行できなかった. cpu% cat infinite.c int main=-277; cpu% 8c infinite.c cpu% 8l infinite.8 cpu% 8.out 8.out: '/bin/8…
ブレークポイントは,デバッギ(デバッグ対象)からデバッガへ処理を遷移させるための仕掛けである.基本的な動作の流れを書くと,まず,止めたい命令をメモリ上に保存しておいて,ブレークポイント命令(x86ならばINT 3)に置き換える.デバッギを実行すると,…
Plan9では,UNIXのシグナルに相当するノート(note)って仕組みがある.基本的な考えはシグナル同じだけど,シグナル番号はなくて,文字列で識別する.分散環境を考えたら,結局文字列が一番ポータブルだったということか*1.ノートに対するハンドラは,atnoti…
Linuxでもカーネル2.6.14からv9fs(9P2000ファイルシステム)がメインラインにマージされている.使い方は簡単.ベル研のソースコードリポジトリをmountするときは,こんな感じ. # modprobe 9p2000 # # mkdir /n/sources # mount -t 9P -o proto=tcp 204.178.…
ELF Golfなるものが一部で流行っているらしいが,Plan9でやったら8.out Golfになるのかな? libcを使わずシステムコール呼出しを書いたら,id:yupo5656さんにトラックバックしてもらったので,続きということで,アセンブリで書いてみる.コードは次に示すが…
ファイルが"#!"で始まっていると,カーネルはそのファイルを(シェル)スクリプトだと判断して,"#!"に続くプログラムを起動して,そのファイルを実行する.というのが,UNIXのスクリプト起動の仕掛けだが,Plan9でもそこは同じである. さて,シェルスクリプ…
先日,マドリードで開催されたInternational Workshop on Plan9の論文が公開されている.リストアップするとこんな感じ. Experience Teaching an Inferno Course Shifs A simple way to transform and build dynamic file servers Invited talk: Dis on a C…