Sunday, June 13, 2010

S3C2440 - Kernel - Start Kernel

這個 head-armv.S 檔案主要是介紹從 assembly 跳到 C code. 當然裡面有做很多事情就不介紹啦. 最重要的當然是已下這個指令: b SYMBOL_NAME(start_kernel). 也就是跳到 main.c 的 stark_kernel function 囉.

再 stark_kernel 列出一堆要做的事情. 仔細看看還真不少阿. 包含以下幾項:
  1. lock_kernel();
  2. setup_arch(&command_line);
  3. parse_options(command_line);
  4. trap_init();
  5. init_IRQ();
  6. sched_init();
  7. softirq_init();
  8. time_init();
  9. console_init();
  10. init_modules();
  11. allocate boot memory
  12. kmem_cache_init();
  13. sti();
  14. calibrate_delay();
  15. mem_init();
  16. kmem_cache_sizes_init();
  17. pgtable_cache_init();
  18. fork_init(mempages);
  19. proc_caches_init();
  20. vfs_caches_init(mempages);
  21. buffer_init(mempages);
  22. page_cache_init(mempages);
  23. signals_init();
  24. proc_root_init();
  25. smp_init();
  26. rest_init();

別看我只是複製貼上一堆, 其實每一項目都包含一堆有的沒的工作. 要好好搞清楚這些是做什麼事情, 才能更深入了解一套 OS.

No comments: