2010-10-01から1ヶ月間の記事一覧

ftraceについて調べる(前回からの続き)

ftraceの仕組みを調べるためにググっていたら、http://bit.ly/9cGM9d という論文を発見。 早速読んでみる。ftraceはgcc の -pgオプションを利用して、関数の入り口でmcount()という関数をコールするようにしている。 (-pgはプロファイラなどのために用意され…

10分間カーネルソースリーティング(timeシステムコールその3)

前回の続き。 今回は、CONFIG_FTRACE_SYSCALLSが有効なケースでのSYSCALL_DEFINEを追ってみる。 まずは、SYSCALL_DEFINExを見る。 #define SYSCALL_DEFINEx(x, sname, ...) \ static const char *types_##sname[] = { \ __SC_STR_TDECL##x(__VA_ARGS__) \ };…

10分間カーネルソースリーティング(timeシステムコールその2、というよりシステムコールのマクロ)

今日は帰宅が遅かった。なので、あまりソースを読む時間がとれない。昨日はtimeシステムコールが何をしていたのかを調べた。 ところで、SYSCALL_DEFINE1って何だろ?これを調べるためにinclude/linux/syscalls.hを覗いてみる。 #define SYSCALL_DEFINE1(name…

timeシステムコールその1?

Linux Kernel DevelopmentのP221ページ読んでいたときに、「The kernel also implements the time() system call」という文章を見つけた。ん?time()ってシステムコールだったっけ? しょうがないので、ソースをgrepしてみた。 すると、確かにkern/time.cに…

Linuxのidrの構造

Linux Kernel Development(以後「Linux本」)を読んでみて、いまいちイメージが湧かなかったのがidr。 idrはLinux本によれば「mapping a unique identification number (UID) to a pointer」となっている。 どうやらひとつのポインタに一つのIDを割り振って…

.data.percpuまわりをざっくりと読んでみた。

前回の記事「15分カーネルソースリーディング」の続き。まず、.data.percpuが何か特殊なセクションか調べてみることにする。 私は今Ubuntuを使っているので、手っ取り早く手元にあるLinuxのセクションを見ようとした。 /boot/vmlinuzうんたらにreadelfしたが…

15分カーネルソースリーディング!(percpu編)

現在、Linux Kernel Developmentを読んでいるが、英語力のなさで256ページに書かれている DEFINE_PER_CPU(type,name)とDECLARE_PER_CPU(type,name)の違いが良く分からなかった。 よって、コードを読んでみた。これらの定義はinclude/linux/percpu-defs.hに存…