udev-从 udev_device_get_action 更改事件

udev-从 udev_device_get_action 更改事件

我正在监控连接到主机的所有设备的事件。Linux 有 udev 守护进程,它监听所有设备特定事件,如在线、离线、添加、删除和改变

我使用linux提供的一个函数udev_device_get_action,用于获取该设备上的事件/操作。

在我的机器上,我不断得到改变事件从此函数返回的代码变量。[它返回字符指针]

我检查了 Linux 代码的功能udev_device_get_action,它只是返回行动来自 udev 设备结构。

UDEV_EXPORT const char *udev_device_get_action(struct udev_device *udev_device)
{
        if (udev_device == NULL)
                return NULL;
        return udev_device->action;
}

那么,我怎么知道这些变化事件到底来自哪里呢?

答案1

uevents 由内核本身生成(即由内核驱动程序生成)。

udev 接收它们 网络链接(7),使用家族 NETLINK_KOBJECT_UEVENT,组 1。然后,它从规则和 hwdb 添加各种额外字段,并将扩展的 uevent 重新广播到 kobject-uevent 组 2,libudev 最终在其中接收它们。

可以手动触发 uevents(例如,通过将“添加”或“更改”写入给定设备的/sys/…/uevent文件),但是通常不会这样做,除非使用“udevadm trigger”。

相关内容