我正在开发一个创建sysfs属性文件的驱动程序。旨在通过使用poll()
方法向应用程序通知此属性的更改。我打算使用sysfs_notify()
函数。只要您拥有属性的kobject
(sysfs_notify()
要求将其作为第一个参数),这很容易做到。如果使用kobject
及相关功能,获取sysfs_create_file()
非常简单。
我在correctly creating a sysfs file上阅读了这篇文章,解决了设备存在的用户空间通知与sysfs文件创建之间可能存在的竞争条件。这个解决方案也更清晰。
但是,我无法弄清楚如何为kobject
中可以使用的每个属性(或父级)获取sysfs_notify()
。在某一点上,struct device_driver
等结构的成员为struct kobject kobj;
。用struct driver_private *p;
取代了(10年前)。此私有结构现在包含实际的kobject
,无法使用。
我可以使用sysfs_notify()
的新形式,还是有其他方法可以获得正确的kobject
?我可能不得不回到“手动”创建sysfs属性。