iofunc_open_default()

Updated: October 26, 2022

Default handler for _IO_CONNECT messages

Synopsis:

#include <sys/iofunc.h>

int iofunc_open_default( resmgr_context_t *ctp,
                         io_open_t *msg,
                         iofunc_attr_t *attr,
                         void *extra );

Arguments:

ctp
A pointer to a resmgr_context_t structure that the resource-manager library uses to pass context information between functions.
msg
A pointer to the io_open_t structure that contains the message that the resource manager received. For more information, see the documentation for iofunc_open().
attr
A pointer to the iofunc_attr_t structure that defines the characteristics of the device that the resource manager is controlling.
extra
Extra information from the library. If you're calling iofunc_open_default() from a resource manager's open() function (see resmgr_connect_funcs_t), simply pass the extra argument that's passed to open().

Library:

libc

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

Description:

The iofunc_open_default() function implements the default actions for the _IO_CONNECT message in a resource manager. This function calls:

You can place this function directly into the connect_funcs table passed to resmgr_attach(), at the open position, or you can call iofunc_func_init() to initialize all of the functions to their default values.

For an outline of what this function does, see Writing the entire function yourself in the Fleshing Out the Skeleton chapter of Writing a Resource Manager.

Returns:

EOK
Successful completion.
EINVAL
The requested synchronized modes (O_SYNC, O_DSYNC, O_RSYNC) aren't supported (i.e, IOFUNC_PC_SYNC_IO isn't set in the device's mount configuration).
ENOSPC
There's insufficient memory to allocate the OCB.
ENOMEM
There's insufficient memory to allocate an internal data structure required by resmgr_open_bind().

Classification:

QNX Neutrino

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