文件系统事件管理器
在运行
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 | 通知filesystems 与event 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) 保留以供将来使用。