rest_init(void)注解

《Linux内核修炼之道》第4章讲解系统初始化,万事开头难,系统的初始化是一个很复杂的过程,不过对于内核源码的学习来说,以这个部分开始应该是个不错的选择。特别是子系统初始化,应该是你选择任何内核子系统开始分析时都需要了解的内容。本节为大家介绍reset_init函数。
http://book.51cto.com/art/201007/213607.htm

  1. 438 static void noinline __init_refok rest_init(void)
  2. 439      __releases(kernel_lock)
  3. 440 {
  4. 441      int pid;
  5. 442
  6.          /* reset_init()函数最主要的历史使命就是
    启动内核线程kernel_init */
  7. 443      kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND);
  8. 444      numa_default_policy();
  9.          /* 启动内核线程kthreadd,运行kthread_
    create_list全局链表中的kthread */
  10. 445     pid = kernel_thread(kthreadd, NULL, CLONE_FS | CLONE_FILES);
  11. 446     kthreadd_task = find_task_by_pid(pid);
  12. 447      unlock_kernel();
  13. 448
  14. 449      /*
  15. 450       * The boot idle thread must execute schedule()
  16. 451       * at least once to get things moving:
  17. 452       */
  18.          /*
  19.           * 增加idle进程的need_resched标志, 并且调用schedule释放CPU,
  20.           * 将其赋给更应该获取CPU的进程。
  21.           */
  22. 453      init_idle_bootup_task(current);
  23. 454      preempt_enable_no_resched();
  24. 455      schedule();
  25. 456      preempt_disable();
  26. 457
  27. 458      /* Call into cpu_idle with preempt disabled */
  28.          /*
  29.           * 进入idle循环以消耗空闲的CPU时间片, 该函数
    从不返回。然而,当有实际工作
  30.           * 要处理时,该函数就会被抢占。
  31.           */
  32. 459      cpu_idle();
  33. 460 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值