uevents通过netlink套接字从内核空间发送到用户空间。
在内核中,必须有东西触发事件。
我想有两种可能性:
硬件中断 – 这意味着,一旦硬件中断发生,内核发送事件到用户空间,表示发生了一些事件。
软件轮询 – 这意味着,总是有一个守护进程来检查这些文件系统,看看是否有任何改变。 如果是这样,那么将这些信息更新到上层。
有谁能提供你的反馈?
谢谢
我不同意你的投票。 uevent
是基于事件的,所以没有轮询。
触发事件在很多情况下发生,我宁愿开始研究什么类型的存在?
一点搜索,在这里你去 – 在include / linux / kobject.h
enum kobject_action { KOBJ_ADD, KOBJ_REMOVE, KOBJ_CHANGE, KOBJ_MOVE, KOBJ_ONLINE, KOBJ_OFFLINE, KOBJ_MAX };
所以就是
KOBJ_MAX
是特殊的标记和枚举。
有2个函数实际上发送uevent – kobject_uevent
和kobject_uevent_env
。 这些功能在上面列出的操作中被调用。
最后,回答你的问题。 没有预定义的情况下会触发uevent。 如果你搜索kobject_uevent
和kobject_uevent_env
调用,你会发现它发生在不同的不相关的内核子系统的回调。
uevent是内核设施,统一来自各种不相关驱动程序的通知 。 所以我觉得没有什么可以触发事件的众所周知的事情。