2 #include <sys/stream.h>
3 #include <sys/cmn_err.h>
10 ioc_ok_ack( queue_t *q, mblk_t *m, int rval )
15 if (( m0 = unlinkb( m )) != NULL ) {
19 if ( m->b_wptr - m->b_rptr < sizeof( struct iocblk )) {
20 cmn_err( CE_CONT, "ioc_ok_ack too small\n" );
24 m->b_datap->db_type = M_IOCACK;
25 m->b_wptr = m->b_rptr + sizeof( struct iocblk );
26 ioc = (struct iocblk *)m->b_rptr;
35 ioc_error_ack( queue_t *q, mblk_t *m, int errno )
40 if (( m0 = unlinkb( m )) != NULL ) {
44 if ( m->b_wptr - m->b_rptr < sizeof( struct iocblk )) {
45 cmn_err( CE_CONT, "ioc_error_ack too small\n" );
49 m->b_datap->db_type = M_IOCNAK;
50 m->b_wptr = m->b_rptr + sizeof( struct iocblk );
51 ioc = (struct iocblk *)m->b_rptr;
52 ioc->ioc_error = errno;
60 ioc_copyin( queue_t *q, mblk_t *m, mblk_t *private, caddr_t addr, uint size )
65 if (( m0 = unlinkb( m )) != NULL ) {
70 /* supposedly this will fit anyway */
71 if ( m->b_wptr - m->b_rptr < sizeof( struct copyreq )) {
72 cmn_err( CE_CONT, "ioc_copyin too small\n" );
77 m->b_datap->db_type = M_COPYIN;
78 m->b_wptr = m->b_rptr + sizeof( struct copyreq );
79 cq = (struct copyreq *)m->b_rptr;
83 cq->cq_private = private;
89 ioc_copyout( queue_t *q, mblk_t *m, mblk_t *private, caddr_t data,
90 caddr_t addr, uint size )
95 if (( m0 = unlinkb( m )) != NULL ) {
100 /* supposedly this will fit anyway */
101 if ( m->b_wptr - m->b_rptr < sizeof( struct copyreq )) {
102 cmn_err( CE_CONT, "ioc_copyout too small\n" );
107 if (( m0 = allocb( size, BPRI_MED )) == NULL ) {
108 cmn_err( CE_CONT, "ioc_copyout nomem\n" );
112 m0->b_wptr = m0->b_rptr + size;
113 bcopy( data, m0->b_rptr, size );
116 m->b_datap->db_type = M_COPYOUT;
117 m->b_wptr = m->b_rptr + sizeof( struct copyreq );
118 cq = (struct copyreq *)m->b_rptr;
122 cq->cq_private = private;