Default handler for _IO_CONNECT messages
#include <sys/iofunc.h> int iofunc_open_default( resmgr_context_t *ctp, io_open_t *msg, iofunc_attr_t *attr, void *extra );
- A pointer to a resmgr_context_t structure that the resource-manager library uses to pass context information between functions.
- 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().
- A pointer to the iofunc_attr_t structure that defines the characteristics of the device that the resource manager is controlling.
- 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().
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The iofunc_open_default() function implements the default actions for the _IO_CONNECT message in a resource manager. This function calls:
- iofunc_open() to check the client's open mode against the resources attributes to see if the client can open the resource in that mode
- iofunc_ocb_calloc() to allocate an Open Control Block (OCB)
- iofunc_ocb_attach() to initialize the OCB
- resmgr_open_bind() to bind the newly-created OCB to the request.
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).
- Successful completion.
- There's insufficient memory to allocate the OCB.
- There's insufficient memory to allocate an internal data structure required by resmgr_open_bind().