fsevmgr

Posted by Underdog Linux on January 3, 2024

文件系统事件管理器

在运行fsevmgr 之前需要先运行random 守护程序

语法

fsevmgr [options] [command]

选项

-d

在标准输出上启用调试输出。

-F group id

(QNX Neutrino 7.0 或更高版本)fsnotify 设备的 group ID 或 name; 见下文。

-f fsnotify_name

(QNX Neutrino 7.0 或更高版本)要注册的 fsnotify 的名称(默认值:/dev/fsnotify)。

不要更改 /dev/fsnotify 的名称; 这样做会破坏 inotify 系统。

-k size

每个mailbox 事件队列的大小,以KB为单位(默认值:64 KB)。

-m

允许每次 read() 返回多个事件。 所有 inotify-style 的监测均启用此功能。

-N group_id

(QNX Neutrino 7.0 或更高版本)fsevents 设备的group ID或名称; 见下文。

-n fsevent_name

要注册的 fsevents 的名称(默认值:/dev/fsevents)。

-s size

主事件队列的大小,以 KB 为单位(默认值:100 KB)。

-U uid:gid

运行后切换到给定的user ID 和group ID。

-w time

通知 io-blk 实例之前延迟的毫秒数。

-y

抑制event manager负载的通知。

command

要执行的特定命令; 以下之一:

Col1 Col2
-c id,string 将事件插入event manage队列
-D value (QNX Neutrino 7.0 或更高版本)设置调试级别
-j 显示统计数据
-M muid (QNX Neutrino 7.0 或更高版本)报告给定mailbox的状态
-P path (QNX Neutrino 7.0 或更高版本)轮询事件管理器并在给定路径上显示输出
-p 轮询事件管理器并在标准输出上显示输出
-r 在标准输出上显示primary event队列
-S (QNX Neutrino 7.0 或更高版本)报告事件管理器的状态
-u 通知filesystemsevent manager重新同步

描述

fsevmgr 管理器从块 I/O (io-blk.so) 系统收集事件,并将它们发送到想要收到文件系统更改通知的客户端。 它使用mailboxes来管理事件队列,创建一个mailbox 作为主事件队列,然后为来自客户端的每个 open() 请求创建一个mailbox 。

  • 如果指定command 参数,fsvmgr 会完成请求的操作,然后立即退出。
  • 如果您不指定命令,fsvmgr 将在后台运行

默认情况下,fsvmgr 在系统命名空间中注册这些接口:

/dev/fsnotify

由 inode notify系统用作 inotify_event 结构的来源; 参阅inotify_init

/dev/fsevents

客户端使用 fsev_t 结构读取事件。

为了发挥作用,devb-* 驱动程序需要能够找到这些名称,并且需要对它们有写入权限。

fsvmgr 在启动时将自身通告给 devb-(除非您指定 -y 选项)。 如果 devb- 驱动程序不是以 root 身份运行(即,您在其命令行上指定了用户 ID 和组 ID),则 fsevents 和 fsnotify 设备的组 ID 必须与提供给 devb-* 的主要或补充组 ID 匹配。 例如,以下命令以 uid 121 和 gid 132 启动 devb-ahci,使其能够访问 fsnotify 和 fsevents 条目:

fsevmgr -F 132 -N 132
devb-ahci cam user=121:132

fsvmgr 管理器使用以下自定义功能,默认情况下为 root 用户提供这些功能:

  • fsevmgr/qnxext (INOTIFY_ABILITY_QNX_EXT) 检查想要侦听任何 QNX extended inotify 事件的进程。

  • fsevmgr/recurse (INOTIFY_ABILITY_RECURSE) 保留以供将来使用。