fsevmgr

Updated: April 19, 2023

Filesystem event manager

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

Syntax:

fsevmgr [options] [command]

Runs on:

QNX Neutrino

Options:

-d
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).
CAUTION:
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).
-m
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.
-y
Suppress the notification of the event manager load.
command
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.
-j
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.
-p
Poll the event manager and display the output on standard output.
-r
Display the primary event queue on standard output.
-S
(QNX Neutrino 7.0 or later) Report the event manager's status.
-u
Notify filesystems to resynchronize themselves with the event manager.

Description:

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:

/dev/fsnotify
Used by the inode notify system as a source of inotify_event structures; see inotify_init() in the C Library Reference.
/dev/fsevents
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: