2009-01-01から1年間の記事一覧

そして、process_mp_configuration()を見ていくと・・

void process_mp_configuration(void) { /* Scan MP table and find some information about MP configuration */ u32_t next; int cpu_count, bus_count, apic_count, ioint_count, lint_count; int i=mph.mpch_entry_count; u8_t this_entry; struct io_ap…

fpsを読めたら次はload_mph()でMP Configuration Table Headerを探す。

int load_mph(void) { /* Find and load a valid MP config header struct. Return noncero on success */ unsigned addr; phys_copy ( fps.fp_mp_table , vir2phys(&mph) , sizeof(mph) ); if (test_mptable_checksum()) return 1; ADDS_MP_STATUS("MP conf…

mp_start()を見ていく。関数についてるコメントからこいつは、MP Configuration tableを読み込んで、各cpuを起動させるということがわかる。

調べているのはここにあるソース。 http://gsd.unex.es/projects/minixsmp/ void mp_start() { /* Load MP configuraton and wake up each CPU in the system */ u32_t trampoline_addr; int cpu; /* Start messaging to console */ MP_STATUS[0]=0; ADDS_MP…

minixsmp

minixsmpの実装勉強はmp.cに入っていく。まず最初は、enable_cpu()。 PUBLIC void enable_cpu(int cpu, int echo) { /* Mark a CPU as usable, enables it, and open interrupts. If echo is nonzero, print a message of successfully enabling */ if (cpu_…

minix2.0.0.のsmp実装の勉強

miniz2.0.0でsmpを実装した人がいるので、その人の資料を参考に読み進める。 #minix3.1.0に適用できそうなのか知りたいのでこちらの実装も合わせて見ていく。 もともとminixはmp対応してないので、APICとかの仕様も調べないといけない。minix2.0.0との変更点…

Exploratory Software Testingのtweetまとめ。

先週届いたJames Whittakerの本を読みつつtwitterにつぶやいているので、今まで書いた分のまとめを貼っ付けておく。 # Exploratory Software Testing 2章もうちょいで読み終わり。9:48 PM Sep 17th from web # Manual TestingとScripted Manual Testingの違…

oops

久々にoopsが出たので貼り付け。 多分下のコマンド実行中でのoops発生と思う。 sudo dd if=/dev/zero of=/dev/sdf bs=1M [287041.483833] INFO: task hald-addon-stor:19153 blocked for more than 120 seconds. [287041.483841] "echo 0 > /proc/sys/kernel…

ページングについて調べてるのでメモ。

OS

まずはMINIXから。オペレーティングシステム第3版のP449でminixはページングは使ってないと書いてあるのでminix3.1.0だとページング機能は未使用。 qemuでminix起動後のcr3レジスタの値をみても0なので、確かにページングは使ってなかった。。Linuxは0.10と2…

minixってF4とかShift+F3キーを押すと色んな情報を出せるので、自作の情報表示用関数を開いてるキーに割り当てるメモ。

ファンクションキーを使って情報表示させているのはisサーバでソースはservice/is。 関数を追加したい場合はisディレクトリにあるdmp.c、proto.hを変更する。 dmp.cの中で変更するのはNHOOKの数と、hook_entry構造体を初期化している箇所。 #define NHOOKS 1…

minix3.1.4のmessage構造体の定義

自分が持ってるオペレーティングシステムの第2版のP127によると、minixがメッセージの送受信に使うメッセージの構造体はtype.hとなってるけど、3.1.4だとminix/ipc.hにあった。 typedef struct {int m1i1, m1i2, m1i3; char *m1p1, *m1p2, *m1p3;} mess_1; t…

possible recursive locking detected

久々に遭遇。再現できるかと思って試したけど再現しなかったので、ログだけ貼っ付けとく。 Jul 26 22:05:33 localhost kernel: [45852.371020] ============================================= Jul 26 22:05:33 localhost kernel: [45852.371026] [ INFO: po…

minix3.1.4をqemu環境にインスコしたので色々遊ぶ。

というわけで、まずは/usr/src/servers/vm/mmap.cにあるmmapの動作をみてます。 mmapの本体はかなり小さめ。linuxのsys_mmap()も小さいけど中で呼んでるdo_mmap_pgoff()がメインの処理っぽいとも言えると思うけど、minixはほぼdo_mmapで完結してるもよう。 /…

ふと思い立ってEmacs-Lispを勉強。

やっぱり関数型言語も覚えてみたかったので、金曜にアキバのヨドバシにある有隣堂で本を探してきました。 そんで、買ったのは「やさしいEmacs-Lisp講座」と言う本。Emacs-Lispなら~/.emacsいじるとかemacsの拡張が出来るし便利かなと思ったってゆうのが大き…

なんとなく退屈だったので久々にGtkのソースでもいじろうと思って、debianのsidにあるイメージビューア(gpicview)にスライドショー機能を適当につけてみた。

スライドショーで表示する時間が3秒固定だったりして色々アレであるが、一応スライドショーにはなるしこれで良いや( ̄ー ̄)ニヤリ diff -uprN old/gpicview-0.2.0/src/main-win.c new/gpicview-0.2.0/src/main-win.c --- old/gpicview-0.2.0/src/main-win.c 200…

git format-patchって便利ですね(*゚▽゚)ノ ということでメモ。

git format-patchで時系列に沿った形の一連のパッチ作成。リポジトリを初期化して、ファイルを追加 [masami@moon:~/build/hello]% git init Initialized empty Git repository in /home/masami/build/hello/.git/ [masami@moon:~/build/hello]% emacs hello.…

今度出るシンポジウムのプログラムが公開されました。

ソフトウェア品質関連のシンポジウムっす。スモークテストとテスト自動化戦略に関して発表しますんでよろしくお願いします。 まだスライド1枚も書けてないけど(゚Д゚)ゴルァ! 一般発表募集に対して提出したアブストラクトは査読者の方々にきちんと査読された上…

cのコードがどんな感じのアセンブラコードに落ちるのか確認

テスト環境はこんな感じです。 [masami@moon:~/build/debug_test]% uname -a Linux moon 2.6.30-rc7-x86tip-tip #1 SMP Tue May 26 23:41:24 JST 2009 x86_64 GNU/Linux [masami@moon:~/build/debug_test]% gcc -v Using built-in specs. Target: x86_64-lin…

emacs + gdbの組み合わせが素敵( ´∀`)ノ

この前のDebug Hacks Nightで実演していたemacs + gdbの組み合わせは便利!! 今まではタブが使えるターミナルで一個目のタブでemacs、2個目のタブでgdbとゆう感じでやってたけど1画面で見れるし、 gdbでの実行状態とemacs上のカーソルが連携してくれるから…

前にやったデバッグのメモでも書こう。

BTSでのやりとりはここ発端は久々にIRCでもと思ってxchatをデスクトップのメニュー(当時はfluxboxだったような)からxchatを選択しても起動しなかったのがきっかけ。起動失敗した理由が得られなかったのでコマンドラインから打てば分かるだろうということで…

Debug Hacks Night行ってきました。皆さんありがとうございました。

こういったイベントとか勉強会に参加すると新しい知識や気づきとかを得たり、 色んな人との出会いがあって良いですね。 個人的にはそれらの結果としてモチベーションが上がるってのも参加する理由の一つです。 発表者はもちろん、参加者も意欲的な人が多いか…

Debug Hacks Night行ってきました

JaSST'09TOKYOのLTで使ったネタ。

Linuxはカーネル2.6系からシステムコールのテーブルを使って任意のシステムコールをフックしづらくなったのでその方法のメモ。 #configのメニューでどこかをいじれば2.4系と同じようにもできるらしいけど。 テスト環境はx86_64マシン。 やってることはmmap()…

ddでディスクイメージをusbメモリに書き込もうとしたら全然終わらない\(^o^)/

使っているカーネルはこんなバージョン。 [masami@moon:~]% uname -a Linux moon 2.6.30-rc5-x86tip-tip #1 SMP Sat May 9 22:38:05 JST 2009 x86_64 GNU/Linuxやっていることは何の変哲もないddコマンドなんだけど、killコマンドすら受け付けん。。 [masami…

dead lock?

do_fork()の動作を調べてみた。

#写真は前に撮った大崎駅近くからの夕焼けkernelnewbiesメーリングリストで非SMPマシンでレースコンディションを作りたいと言うスレッドがあって、その中でtask_structの扱いが話題になっていたので調べてみた。ソースはlxrにある2.6.29を参照しつつ 入り口…

do_fork()の動作

昨日USから帰国。

STAREASTで一番話を聞きたかったJames Whittakerのチュートリアルは非常に面白かった。一番印象にのこっているのはCapabilityを考えることが重要と言っていたこと。 チュートリアル後に彼の手法について質問も出来たし、参加初日にして目的はほぼ達成。質問…

STAREAST2

linux-patch-exec-shield (1:2.6.29.1)がsid入り(*゚▽゚)ノ

パッケージのページはここ。自分がco-maintainerになって初のバージョン。動作確認はlibsafe付属のexploitで可能。でも、libsafeはdebianに入っていないので(;∀;) アップストリームから要ダウンロード。 mars:/home/masami/libsafe-2.0-16/exploits# ls ca…

gccで使えるサイズ0の配列ってこういうことができるってこと?

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> struct foobar { int length; char str[0]; }; void *xmalloc(size_t size) { void *p = malloc(size); assert(p != NULL); return p; } int main(int argc, char **argv) { struct foobar *p = NULL; int len = 0;</assert.h></stdlib.h></string.h></stdio.h>…