The members of the mount structure, specifically the conf and flags members,
modify the behavior of some of the iofunc layer functions.
This optional structure contains at least the following:
typedef struct _iofunc_mount {
uint32_t flags;
uint32_t conf;
dev_t dev;
int32_t blocksize;
iofunc_funcs_t *funcs;
} iofunc_mount_t;
The variables are:
- flags
- Contains one relevant bit (manifest constant IOFUNC_MOUNT_32BIT),
which indicates that the offsets used by this resource manager are 32-bit (as opposed to the extended 64-bit offsets).
The user-modifiable mount flags are defined as IOFUNC_MOUNT_FLAGS_PRIVATE
(see <sys/iofunc.h>).
- conf
- Contains several bits:
- IOFUNC_PC_CHOWN_RESTRICTED
- Causes the default handler for the _IO_CHOWN
message to behave in a manner defined by POSIX as
"chown-restricted".
- IOFUNC_PC_NO_TRUNC
- Has no effect on the iofunc layer libraries,
but is returned by the iofunc layer's default _IO_PATHCONF handler.
- IOFUNC_PC_SYNC_IO
- If not set, causes the default iofunc layer _IO_OPEN
handler to fail if the client specified any one of
O_DSYNC, O_RSYNC, or O_SYNC.
- IOFUNC_PC_LINK_DIR
- Controls whether or not root is allowed to link and unlink directories.
Note that the options mentioned above for the conf
member are returned by the iofunc layer _IO_PATHCONF default handler.
- dev
- Contains the device number for the filesystem.
This number is returned to the client's stat() function
in the struct stat st_dev member.
- blocksize
- Contains the block size of the device.
On filesystem types of resource managers, this indicates the native blocksize of the disk, e.g. 512 bytes.
- funcs
- Contains the following structure:
struct _iofunc_funcs {
unsigned nfuncs;
IOFUNC_OCB_T *(*ocb_calloc) (resmgr_context_t *ctp,
IOFUNC_ATTR_T *attr);
void (*ocb_free) (IOFUNC_OCB_T *ocb);
};
where:
- nfuncs
- Indicates the number of functions present in the structure;
it should be filled with the manifest constant _IOFUNC_NFUNCS.
- ocb_calloc() and ocb_free()
- Allows you to override the OCBs on a per-mountpoint basis.
(See the section titled
"Extending the OCB and attribute structures"
in the Extending the POSIX-Layer Data Structures chapter.)
If these members are NULL, then the default library versions are used.
You must specify either both or neither of these functions —
they operate as a matched pair.