Tuesday, 3 December 2019

Linux Kernel の source

毎年読んでます。今年はFedora 31。Linux version 4.20.0-rc1+ ですね。でも、最新は5.4.1かぁ。読むだけだったら最新を使いたいところだけど。

kernel build だけでも面倒くさいのですが、最新のFedoraで debug用に kerel build する ansible script がある。

なんですが、どうして、

  こう毎回、違うんだ?

去年読んだときは「あり、tableから sys_table を生成するようになってる(いまさらか?)」と思ったんですが、今年は、

  一度、Cの関数 do_syscall を呼び出して、その中で table call してる

去年まではアセンブラレベルだったのに。さらに、

  直接、sys_read にkernel callのABI修飾子(マクロ)を付けるのではなく、
  ABI修飾子マクロの付いた関数から、ksys_read を呼び出す方式に変更

されてる。いや、その SYSCALL_DEFINE3 とかの超ダサいマクロやめろと思ったのも2,3年前だった気がするんだが...

既に C に入ってるんだから、SYSCALL_DEFINE3 は、もう何もやってない気がするんだが、そんなことはないのか。

でも、stub 経由で通常のfunctionを呼び出す方式自体は正しいとは思います。

とかやってたら、さっさと、qemu を使った gdb による kernel debug するつもりだったのをすっ飛ばしてしまいました。

いや、授業中に MBP の freeze とか、display adaptor を不調で交換とかやってたので時間を取ったってもあったんけど。

No comments: