x

继续分析sched.c文件。这次看一下sys_pause函数。具体的实现如下:

546_linux内核学习_sys_pause函数分析_函数实现

这个函数实现的功能其实就是切换了任务状态然后执行调度,而且这个返回值感觉上用处不大。因为返回值的情况其实只有一种。

接下来看看函数的调用情况,整个工程中调用如下:

546_linux内核学习_sys_pause函数分析_函数实现_02

内容还是比较少的,有些纯粹是声明。真正有分析必要性的应该有第二条,这个涉及到一个之前就接触过的表。还要就是signal.c文件。

先看任务表:

546_linux内核学习_sys_pause函数分析_函数实现_03

         要理解这部分,需要查看这个表的调度。

546_linux内核学习_sys_pause函数分析_代码风格_04

         这个是在汇编代码的系统调度中被调用的。看起来,应该有一个系统级的处理在这里。

546_linux内核学习_sys_pause函数分析_系统调度_05

         除此之外,就是在信号suspend处理函数中用到了。这个后面到了这里的时候再做分析,这里先跳过。不过,这里看到一个很有意思的代码风格,居然是在函数的内部进行函数的声明。

         整个的代码中,关于这个功能的调用其实就这么些。