Updated: October 26, 2022

Filesystem event manager

Note: The random daemon must be running before you start fsevmgr.


fsevmgr [options] [command]

Runs on:

QNX Neutrino


Enable debugging output on stdout.
-F group id
(QNX Neutrino 7.0 or later) The group ID or name for the fsnotify device; see below.
-f fsnotify_name
(QNX Neutrino 7.0 or later) The name for fsnotify to register (default: /dev/fsnotify).
Don't change the name of /dev/fsnotify; doing so will break the inotify system.
-k size
The size of each mailbox event queue, in kibibytes (default: 64 KB).
Allow multiple events to be returned per read(). This is enabled for all inotify-style watches.
-N group_id
(QNX Neutrino 7.0 or later) The group ID or name for the fsevents device; see below.
-n fsevent_name
The name for fsevents to register (default: /dev/fsevents).
-s size
The size of the master event queue, in kibibytes (default: 100 KB).
-U uid:gid
Switch to the given user ID and group ID once running.
-w time
The number of milliseconds to delay before notifying io-blk instances.
Suppress the notification of the event manager load.
A specific command to execute; one of the following:
-c id,string
Insert an event into the event manager queue.
-D value
(QNX Neutrino 7.0 or later) Set the debugging level.
Display statistics.
-M muid
(QNX Neutrino 7.0 or later) Report the status of the given mailbox.
-P path
(QNX Neutrino 7.0 or later) Poll the event manager and display the output on the given path.
Poll the event manager and display the output on standard output.
Display the primary event queue on standard output.
(QNX Neutrino 7.0 or later) Report the event manager's status.
Notify filesystems to resynchronize themselves with the event manager.


The fsevmgr manager gathers events from the block I/O (io-blk.so) system and sends them to clients that want to be notified of changes to a filesystem. It uses “mailboxes” to manage event queues, creating one mailbox to serve as the master event queue, and then creating a mailbox for each open() request from a client.

If you specify a command argument, fsevmgr completes the requested operation, and then exits immediately. If you don't specify a command, fsevmgr runs in the background.

By default, fsevmgr registers these interfaces in the system namespace:

Used by the inode notify system as a source of inotify_event structures; see inotify_init() in the C Library Reference.
Used by clients to read events from, in fsev_t structures.

In order to function, the devb-* driver needs to be able to locate these names, and needs write permission to them. The fsevmgr advertises itself to devb-* on starting (unless you specify the -y option). If the devb-* driver isn't running as root (that is, you specified a user ID and a group ID on its command line), the group ID for the fsevents and fsnotify devices must match the primary or supplementary group ID given to devb-*. For example, the following commands start devb-ahci as uid 121 and gid 132, giving it access to the fsnotify and fsevents entries:

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

The fsevmgr manager uses the following custom abilities, which are given to root users by default: