- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
目前我正在编写一个驱动程序模块,它在 sysfs 中提供了一些条目。我通过驱动程序源代码树和互联网阅读了很多。我发现了两个调用 sysfs_create_group() 的方法:
a) 最常见:在 Driver 的 probe() 函数中。喜欢这里的建议 How to attach file operations to sysfs attribute in platform driver?
我看的随机事物: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/rtc/rtc-ds1307.c#n1580
b) 在驱动程序结构中。 http://kroah.com/log/blog/2013/06/26/how-to-create-a-sysfs-file-correctly/
我知道,Greg KH 是一位非常知名的开发人员。所以我试着听从他的建议。在 bla_show()/bla_store() 函数中,我试图获取我的驱动程序私有(private)数据,但我的 printk() 显示的地址与我在 probe() 函数中打印的地址有很大不同。我的私有(private)数据是(空)。这是错误的。
当我使用 approch a) 时,它按预期工作,但正如 Greg KH 所说,它也是错误的。我在不同驱动程序的稳定树中看到了很多。 Greg 写道,用户空间已经收到有新设备的通知,但 LDD3 书中指出,探测功能用于确定设备是否存在。
总结一下我的问题:
LDD3:https://static.lwn.net/images/pdf/LDD3/ch14.pdfPDF第24页
probe is a function called to query the existence of a specific device (and whether this driver can work with it), remove is called when the device is removed from the system,and shutdown is called at shutdown time to quiesce the device.
我比以前更糊涂了.....
最好的问候乔治
最佳答案
设备驱动程序是一种控制连接到您计算机的特定类型设备的程序。
平台设备本质上是不可发现的,即硬件不能说“嘿!我在场!”到软件。因此,对于这些类型的设备,我们需要一个称为平台驱动程序的驱动程序。驱动程序提供 probe() 和 remove() 方法。
struct platform_driver {
int (*probe)(struct platform_device *);
int (*remove)(struct platform_device *);
.
.
struct device_driver driver;// this file has 2 parameter name or owner.
};
probe() 一般应验证指定的设备硬件实际存在。首先我们注册我们的驱动程序。一旦找到设备,它就会调用驱动程序探测。它正在使用名称搜索设备。
Ans :您的设备可用,然后您需要 sysfs 条目进行通信(到用户空间)。所以从概念上讲,您需要在探测中定义您的 sysfs 条目。
sys_notify 对您的属性起作用,它会导致您的用户空间代码唤醒。当 sysfs 可用于用户空间时,它将触发。它只是避免了阻塞调用。当内核没有 sysfs 时,它不会通知用户空间。
sysfs是Linux内核提供的一个虚拟文件系统,通过虚拟文件将内核的设备模型中的各种内核子系统、硬件设备和相关设备驱动的信息导出到用户空间。当您的设备可用时,您需要此条目来导出您的信息。
关于linux - sysfs_create_group() : Where to call?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37838328/
目前我正在编写一个驱动程序模块,它在 sysfs 中提供了一些条目。我通过驱动程序源代码树和互联网阅读了很多。我发现了两个调用 sysfs_create_group() 的方法: a) 最常见:在 D
两个函数的原型(prototype): int sysfs_create_group(struct kobject *kobj, const struct attribute_group *grp)
我是一名优秀的程序员,十分优秀!