STREAMS-UX Programmer's Guide (February 2007)

Modules and Drivers
Entry Points
Chapter 4
74
* (for example count should be exactly of integer size
* for this driver user data)
*/
if (iocp->ioc_count != sizeof(int)) {
/* Set error value */
iocp->ioc_error = EINVAL;
goto log_error;
}
if (mp->b_cont == NULL) {
goto log_error;
}
/* Process actual user data from 2nd mesage block */
set_mydrv_options(mydata, *(int *)mp->b_cont->b_rptr);
/* Send acknowledgement upstream */
mp->b_datap->db_type = M_IOCACK;
/* no data returned to user */
iocp->ioc_count = 0;
qreply(q, mp);
break;
log_error:
/* error, send negative acknowledgement */
default:
/* unrecognized ioctls, send negative acknowledgement */
mp->b_datap->db_type = M_IOCNAK;
/* No data returned for negative acknowledgement messages */
iocp->ioc_count = 0;
qreply(q,mp);
break;
}
}
}