在我的驱动程序的 file_operations 结构中,我有:
struct file_operations Fops = {
read: device_read,
write: device_write,
unlocked_ioctl: device_ioctl,
...
};
IE。没有使用 ioctl 字段。这是否足以避免大内核锁并在没有任何同步的情况下进入 device_ioctl() ?或者我是否也必须更改代码的用户空间部分中的 ioctl() 调用?
阅读这篇 LWN 文章:http://lwn.net/Articles/119652/ http://lwn.net/Articles/119652/
另外,在 2.6.33 和 2.6.35 rc 之间的某个时候(使用 git-diff 找出哪个提交),现在当仅定义 .ioctl 时,内核会发出警告。
这是朝着更明确、更细粒度的锁定迈出的一步。另请注意,仅更改函数签名和指针将进行编译,但会引入竞争条件的可能性(两个用户空间应用程序同时执行 ioctl 调用)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)