1

我使用一些 initcall 级别(比如 late_initcall)加载了一个驱动程序作为引导的一部分。作为模块 init 的一部分,它向 udev 注册以自动创建设备节点(t|g)。问题是模块如何知道 udev 守护进程在引导过程中是否正在运行。否则,用户空间将无法使用设备文件,从而导致驱动程序和设备无用。

谢谢。

4

1 回答 1

3

首先udev是创建设备节点的一种机制。您的代码应该在内核设备模型中创建一个设备,然后某些东西将为您的设备创建一个设备节点/dev。在可能只是一个简单的 shell 脚本的嵌入式系统上。

就时间而言,如果您的设备是在启动早期创建的,那么一旦 udev 启动并运行,udev 和内核将处理重播创建事件。这是通过 udev 扫描/sys和写入每个设备"add"的文件来实现的。uevent这告诉内核发送创建事件,udev 通过 netlink(或者它可以使用uevent_helper)接收。

此外,即使没有 udev,您的设备也会出现在/sys您可以查询其主要和次要编号并手动创建设备节点的地方。

于 2012-08-19T10:10:46.323 回答