内核中如何触发uevent

uevents通过netlink套接字从内核空间发送到用户空间。

在内核中,必须有东西触发事件。

我想有两种可能性:

  1. 硬件中断 – 这意味着,一旦硬件中断发生,内核发送事件到用户空间,表示发生了一些事件。

  2. 软件轮询 – 这意味着,总是有一个守护进程来检查这些文件系统,看看是否有任何改变。 如果是这样,那么将这些信息更新到上层。

有谁能提供你的反馈?

谢谢

我不同意你的投票。 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_ueventkobject_uevent_env 。 这些功能在上面列出的操作中被调用。

最后,回答你的问题。 没有预定义的情况下会触发uevent。 如果你搜索kobject_ueventkobject_uevent_env调用,你会发现它发生在不同的不相关的内核子系统的回调。

uevent是内核设施,统一来自各种不相关驱动程序的通知 。 所以我觉得没有什么可以触发事件的众所周知的事情。