gpt4 book ai didi

linux-kernel - 我应该在Linux内核开发中使用哪种互斥锁变量?

转载 作者:行者123 更新时间:2023-12-04 06:39:39 24 4
gpt4 key购买 nike

AFAIK是在编写LDD3(第3版Linux设备驱动程序)之后将互斥量API引入内核的,因此在本书中没有进行介绍。

这本书描述了如何使用内核的信号量API来实现互斥功能。

建议使用down_interruptable()而不是down():

You do not, as a general rule, want to use noninterruptible operations unless there truly is no alternative. Non-interruptible operations are a good way to create unkillable processes (the dreaded “D state” seen in ps), and annoy your users [Linux Device Drivers 3rd ed]



现在。这是我的问题:

互斥量API具有两个“相似”功能: mutex_lock_killable()mutex_lock_interruptable()。我应该选择哪一个?

最佳答案

使用mutex_lock_interruptible()函数可以使您的驱动程序被任何信号中断。
这意味着应该编写系统调用,以便可以重新启动它。
(另请参见ERESTARTSYS。)

使用mutex_lock_killable()允许您的驱动程序仅被实际上杀死该进程的信号打断,即该进程没有机会查看系统调用的结果,甚至无法重试。

当您可以确保互斥量不会长时间保留时,请使用mutex_lock()

关于linux-kernel - 我应该在Linux内核开发中使用哪种互斥锁变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18298962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com