The same type of operation that was done to handle the pread()/_IO_XTYPE_OFFSET case can be used for handling the client's readcond() call:
typedef struct {
struct _io_read read;
struct _xtype_readcond cond;
} io_readcond_t
Then:
struct _xtype_readcond *cond
...
CASE _IO_XTYPE_READCOND:
cond = &((io_readcond_t *)msg)->cond
break;
}
Then your manager has to properly interpret and deal with the arguments to readcond(). For more information, see the QNX Neutrino C Library Reference.