+ -
当前位置:首页 → 问答吧 → 情景分析里do_page_fault里的问题

情景分析里do_page_fault里的问题

时间:2010-12-09

来源:互联网

本帖最后由 stone421 于 2010-12-09 16:48 编辑

在2.4内核里的Fault.c的do_page_fault里有这样一句:

    if (in_interrupt() || !mm)
         goto no_context;

情景分析58页里说:
   可是,不跟当前进程有关,in_interrrupt()又返回0,那么这次异常发生在什么地方呢?其实还在某个中断/异常服务程序中,
只不过不在in_interrupt()能检测到的范围为中而已。如果发生这样的特殊情况,控制就通过语句goto语句转到标号no_context处。


既然in_interrupt()都返回0了,如果mm不为空那怎么转到no_context呢? 谢谢!

作者: stone421   发布时间: 2010-12-09

没看明白LZ 想问啥。。。

单从你贴的代码来看,有2个情况会跳到 NO_CONTEXT。一个是IN_INTERRUPT()的情况。另外一个是 !MM, 也就是说MM为0的时候。这2个条件是“或”的关系。看上去没啥问题啊。

作者: accessory   发布时间: 2010-12-10