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.