免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: biger410
打印 上一主题 下一主题

Linux进程调度的上下文保存问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-10-27 07:13 |只看该作者
我问一个题外的, 经常看见这里面也出现的:

do
{
....
....
}while(0)

这样的目的是什么啊?

论坛徽章:
0
12 [报告]
发表于 2008-10-27 09:12 |只看该作者

回复 #11 Au_Hank 的帖子

防止宏定义展开出错.

论坛徽章:
0
13 [报告]
发表于 2009-09-04 08:54 |只看该作者

Linux内核进程调度程序的switch_to

进程调度的代码:
asmlinkage void __sched schedule(void)
{
     。。。。。。
   prev = context_switch(rq, prev, next);
    。。。。。。
}

static inline
task_t * context_switch(runqueue_t *rq, task_t *prev, task_t *next)
{
    。。。。。。
    /* Here we just switch the register state and the stack. */
    switch_to(prev, next, prev);

    return prev;
}

#define switch_to(prev,next,last) do {                                        \
        unsigned long esi,edi;                                                \
        asm volatile("pushl %%ebp\n\t"                                        \
                     "movl %%esp,%0\n\t"        /* save ESP */                \
                     "movl %5,%%esp\n\t"        /* restore ESP */        \
                     "movl $1f,%1\n\t"                /* save EIP */                \
                     "pushl %6\n\t"                /* restore EIP */        \
                     "jmp __switch_to\n"                                \
                     "1:\t"                                                \
                     "popl %%ebp\n\t"                                        \
                     :"=m" (prev->thread.esp),"=m" (prev->thread.eip),        \
                      "=a" (last),"=S" (esi),"=D" (edi)                        \
                     :"m" (next->thread.esp),"m" (next->thread.eip),        \
                      "2" (prev), "d" (next));                                \
} while (0)

我想问下,这个switch_to(prev, next, prev)执行后prev指向哪个进程,另外next从哪开始运行的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP