Sha*_*han 5 linux linux-kernel
Linux 调度程序分叉操作使用两个函数sched_fork()和__sched_fork()。__sched_fork()被称为sched_fork(). 内核中的其他几个地方也使用了类似的双下划线代码约定(专门用于系统保留名称)。当可以使用一个函数时,定义这样的两个函数有何帮助?为什么使用这个约定?
如果您搜索源代码,您将看到它__sched_fork()被称为 frominit_idle()以及 from sched_fork()。我认为这是定义两个函数的主要原因。
我还看到具有不同实现的函数对(有和没有__)。例如,__hrtick_start()和hrtick_start()。然而,它们的用法略有不同:第一个应该从硬中断调用。
当带下划线的版本执行函数的核心工作,而不带下划线的版本在调用函数之前执行附加测试时,其他对可能会分开。这样,如果所有条件都已检查,程序员可以调用下划线版本。