I/O resources aren't built into the microkernel, but are instead provided by resource manager processes that may be started dynamically at runtime. The procnto manager allows resource managers, through a standard API, to adopt a subset of the pathname space as a "domain of authority" to administer.
As other resource managers adopt their respective domains of authority, procnto becomes responsible for maintaining a pathname tree to track the processes that own portions of the pathname space. An adopted pathname is sometimes referred to as a "prefix" because it prefixes any pathnames that lie beneath it; prefixes can be arranged in a hierarchy called a prefix tree. The adopted pathname is also called a mountpoint, because that's where a server mounts into the pathname.
This approach to pathname space management is what allows QNX Neutrino to preserve the POSIX semantics for device and file access, while making the presence of those services optional for small embedded systems.
At startup, procnto populates the pathname space with the following pathname prefixes:
Prefix | Description |
---|---|
/ | Root of the filesystem. |
/proc/boot/ | Some of the files from the boot image presented as a flat filesystem. |
/proc/pid | The running processes, each represented by its process ID (PID). For more information, see "Controlling processes via the /proc filesystem" in the Processes chapter of the QNX Neutrino Programmer's Guide. |
/dev/zero | A device that always returns zero. Used for allocating zero-filled pages using the mmap() function. |
/dev/mem | A device that represents all physical memory. |