为什么 Linux 内核信号量 down() 函数被弃用?



Linux 内核信号灯的 down(( 函数注释说

/**
Use of this function is deprecated, please use down_interruptible() 
or down_killable() instead. 
**/ 

有人请解释一下,祝你好。

在down_interruptible和down_killable的注释中对此进行了解释

TLDR; down不允许你在它处于睡眠状态时中断,即没有信号量。 其中这两个退出与 -EINR 所以响应代码。

了解此函数的用法 down(( 获取信号量。 如果不允许更多任务获取 信号量,调用此函数将使任务进入睡眠状态,直到 信号量发布。这意味着如果调用过程中断,它不会被中断。或被杀。底层逻辑在第二个参数中与 _down_common(( 不同

因此,建议使用两个建议中的任何一个,以便在中断时可以对其进行处理。调用进程被杀死后也没有用保留它。

主要的东西弃用功能更有可能在将来停止使用。 在这种情况下,它没有,因为它在编写本文时仍在 4.16 中可用,这是最新的内核。

最新更新