iofunc_open_default()

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.

See the “Examples” section in the description of iofunc_open() for the skeleton outline of the functionality (the second example, where resmgr_attach() doesn't specify that the managed resource is a directory).

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

See also:

iofunc_func_init(), iofunc_ocb_attach(), iofunc_ocb_calloc(), iofunc_open(), iofunc_time_update(), resmgr_attach(), resmgr_connect_funcs_t,, resmgr_open_bind()

Writing a Resource Manager

Resource Managers chapter of Getting Started with QNX Neutrino