Chinaunix首页 | 论坛 | 博客
  • 博客访问: 607341
  • 博文数量: 197
  • 博客积分: 7001
  • 博客等级: 大校
  • 技术积分: 2155
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-24 00:29
文章分类

全部博文(197)

文章存档

2022年(1)

2019年(2)

2015年(1)

2012年(100)

2011年(69)

2010年(14)

2007年(3)

2005年(7)

分类: LINUX

2010-10-14 09:10:40

 ULK 3rd 已经讲得很好了, 可惜还有未尽之处。Professional Linux® Kernel Architecture 把最后的味道榨干了。

   来自2.6.34的代码
    switch_to(prev, next, prev);

    barrier();
    /*
     * this_rq must be evaluated again because prev may have moved
     * CPUs since it called schedule(), thus the 'rq' on its stack
     * frame will be invalid.
     */
    finish_task_switch(this_rq(), prev);

后书讲到
  switch_to(prev, next, prev);
相当于 prev = switch_to(prev,next) 这样prev在switch_to调用完后就变了,也就是finish_task_switch中的prev 和 switch_to(prev, next, prev)中的prev 不是同一个对象,这其中的魔术依赖于平台实现,本质就是操作栈,利用寄存器换掉栈中原来的prev。
阅读(888) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-11-28 02:35:03

作者功底很深啊!Professional Linux® Kernel Architecture这书的确不错,研究中!

chinaunix网友2010-11-28 02:33:12

作者功底很深啊!Professional Linux® Kernel Architecture这书的确不错,研究中!

chinaunix网友2010-10-14 17:13:07

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com