Unblock I/O function handler

Updated: April 19, 2023

Prototype:

int (*unblock) ( resmgr_context_t *ctp,
                io_pulse_t *msg,
                RESMGR_OCB_T *ocb ) 

Classification:

I/O (synthesized by kernel, synthesized by library)

Default handler:

iofunc_unblock_default()

Helper functions:

iofunc_unblock()

Client function:

none—kernel action due to signal or timeout

Messages:

none—synthesized by library

Data structure:

pointer to message structure being interrupted

Description:

This is the I/O message version of the unblock outcall, synthesized by the library as a result of a kernel pulse due to the client's attempt to unblock during the I/O message phase. The unblock connect function handler is substantially the same (see the preceding section).
Common to both unblock handlers (connect and I/O) is the characteristic that the client wishes to unblock, but is at the mercy of the resource manager. The resource manager must reply to the client's message in order to unblock the client. (This is discussed in the Message Passing chapter when we looked at the ChannelCreate() flags, particularly the _NTO_CHF_UNBLOCK flag).

Returns:

The status via the helper macro _RESMGR_STATUS().
See the section in the Message Passing chapter, titled “Using the _NTO_MI_UNBLOCK_REQ for a detailed discussion of unblocking strategies.

Referenced by:

resmgr_io_funcs_t I/O table

Permission checking:

The default implementation iofunc_unblock_default() does not perform any permission checking.