mount()

Updated: April 19, 2023

Mount a filesystem

Synopsis:

#include <sys/mount.h>

int mount( const char* spec, 
           const char* dir, 
           int flags, 
           const char* type, 
           const void* data, 
           int datalen );

Arguments:

spec
A null-terminated string describing a special device (e.g., /dev/hd0t177), or NULL if there's no special device.
dir
A null-terminated string that names the directory that you want to mount (e.g., /mnt/home).
flags
Flags that are passed to the driver:
  • _MFLAG_OCB — ignore the special device string, and contact all servers.
  • _MOUNT_READONLY — mark the filesystem mountpoint as read-only.
  • _MOUNT_NOEXEC — don't allow executables to load.
  • _MOUNT_NOSUID — don't honor setuid bits on the filesystem.
  • _MOUNT_NOCREAT — don't allow file creation on the filesystem.
  • _MOUNT_OFF32 — limit off_t to 32 bits.
  • _MOUNT_NOATIME — disable logging of file access times.
  • _MOUNT_BEFORE — call resmgr_attach() with _RESMGR_FLAG_BEFORE.
  • _MOUNT_AFTER — call resmgr_attach() with _RESMGR_FLAG_AFTER.
  • _MOUNT_OPAQUE — call resmgr_attach() with _RESMGR_FLAG_OPAQUE.
  • _MOUNT_UNMOUNT — unmount this path.
  • _MOUNT_REMOUNT — this path is already mounted; perform an update.
  • _MOUNT_FORCE — force an unmount or a remount change.
  • _MOUNT_ENUMERATE — autodetect on this device.
type
A null-terminated string with the filesystem type (e.g., nfs, cifs, qnx6, network).
data
A pointer to additional data to be sent to the manager. If datalen is <0, the data points to a null-terminated string.
datalen
The length of the data, in bytes, that's being sent to the server, or <0 if the data is a null-terminated string.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The mount() function sends a request to servers to mount the services provided by spec and type at dir.

Note: Updating the mount resets the other mount flags to their default values. To determine which flags are currently set, use the DCMD_ALL_GETMOUNTFLAGS devctl() command, and then OR in _MOUNT_REMOUNT. For example:
int flags;

if(devctl(fd, DCMD_ALL_GETMOUNTFLAGS, &flags, sizeof flags, NULL) == EOK) {
    flags |= _MOUNT_REMOUNT;
    ...
}

If you set _MFLAG_OCB in the flags, then the special device string is ignored, and all servers are contacted. If you don't set this bit, and the special device spec exists, then only the server that created that device is contacted, and the full path to spec is provided.

If datalen is any value <0, and there's a data pointer, the function assumes that the data pointer is a pointer to a string.

Returns:

-1 on failure; no server supports the request (errno is set).

Classification:

QNX Neutrino

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler Yes
Thread Yes