Register for notification I/O function handler
QNX SDP8.0Getting Started with the QNX OSDeveloperUser
Prototype:
int (*notify) ( resmgr_context_t *ctp,
io_notify_t *msg,
RESMGR_OCB_T *ocb )
Classification:
I/ODefault handler:
noneHelper functions:
iofunc_notify(), iofunc_notify_remove(), iofunc_notify_remove_strict(), iofunc_notify_trigger(), iofunc_notify_trigger_strict()Client functions:
poll(), select(), ionotify()Messages:
_IO_NOTIFY, _IO_NOTIFY64Data structure:
struct _io_notify {
uint16_t type;
uint16_t combine_len;
int32_t action;
int32_t flags;
struct __sigevent32 event;
/* The fields `mgr` to `timo` are only valid if
* (flags & _NOTIFY_COND_EXTEN)
* The full header must be present regardless of the flags.
*/
int32_t mgr[2]; /* For use by manager */
int32_t flags_extra_mask;
int32_t flags_exten;
int32_t nfds;
int32_t fd_first;
int32_t nfds_ready;
int64_t timo;
/* struct pollfd fds[nfds]; */
};
struct _io_notify64 {
uint16_t type;
uint16_t combine_len;
int32_t action;
int32_t flags;
struct __sigevent32 old_event;
/* The fields `mgr` to `timo` are only valid if
* (flags & _NOTIFY_COND_EXTEN)
* The full header must be present regardless of the flags.
*/
int32_t mgr[2]; /* For use by manager */
int32_t flags_extra_mask;
int32_t flags_exten;
int32_t nfds;
int32_t fd_first;
int32_t nfds_ready;
int64_t timo;
union {
struct __sigevent32 event32;
struct __sigevent64 event64;
};
/* struct pollfd fds[nfds]; */
};
struct _io_notify_reply {
uint32_t zero;
uint32_t flags; /* actions above */
int32_t flags2; /* flags above */
struct __sigevent32 event;
/* Following fields only updated by new managers (if valid) */
int32_t mgr[2]; /* For use by manager */
int32_t flags_extra_mask;
int32_t flags_exten;
int32_t nfds;
int32_t fd_first;
int32_t nfds_ready;
int64_t timo;
/* struct pollfd fds[nfds]; */
};
struct _io_notify_reply64 {
uint32_t zero;
uint32_t flags; /* actions */
int32_t flags2; /* flags above */
struct __sigevent32 old_event;
/* Following fields only updated by new managers (if valid) */
int32_t mgr[2]; /* For use by manager */
int32_t flags_extra_mask;
int32_t flags_exten;
int32_t nfds;
int32_t fd_first;
int32_t nfds_ready;
int64_t timo;
union {
struct __sigevent32 event32;
struct __sigevent64 event64;
};
/* struct pollfd fds[nfds]; */
};
typedef union {
struct _io_notify i;
struct _io_notify64 i64;
struct _io_notify_reply o;
struct _io_notify_reply64 o64;
} io_notify_t;
Description:
This handler is responsible for installing, polling, or removing a notification request. The action and flags determine the kind of notification operation and conditions; the event is a struct sigevent structure that defines the notification event (if any) that the client wishes to be signaled with. You'd use the MsgDeliverEvent() or iofunc_notify_trigger() functions to deliver the event to the client.Returns:
The status via the helper macro _RESMGR_STATUS(); the flags are returned via message reply.Referenced by:
resmgr_io_funcs_t I/O tablePage updated:
