2009年8月28日金曜日

boot_cpu_init

今回はboot_cpu_initを見ていきます。

実体はstart_kernelと同じinit/main.cにあります。

======
static void __init boot_cpu_init(void)
{
/* カレントCPUのプロセッサIDを持ってくる */
int cpu = smp_processor_id();
/* Mark the boot cpu "present", "online" etc for SMP and UP case */
set_cpu_online(cpu, true);
set_cpu_present(cpu, true);
set_cpu_possible(cpu, true);
}

======

プロセッサIDはどこから拾ってくるのかsmp_processor_idを追ってみたけれど、スタックポインタの前あたりに置いてあるようです。いまいち追いきれていません。。
あとはビットを立てているようで、これはレジスタのbitなのかなと思ったのだけどどうやらカーネル内部で持っている構造体?のメンバのようなのだけど、ちっとも追えません。

ちょっと私には難易度高かったです。

0 件のコメント:

コメントを投稿