在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呢? 谢谢!
lxxwyy 于 2011-06-11 22:32:48发表:
xuexi