Lines Matching refs:mp
55 #define MI_IS_TRANSPARENT(mp) (mp->b_cont && \ argument
56 (mp->b_cont->b_rptr != mp->b_cont->b_wptr))
203 mi_copyin(queue_t *q, MBLKP mp, char *uaddr, size_t len) in mi_copyin() argument
205 struct iocblk *iocp = (struct iocblk *)mp->b_rptr; in mi_copyin()
206 struct copyreq *cq = (struct copyreq *)mp->b_rptr; in mi_copyin()
207 struct copyresp *cp = (struct copyresp *)mp->b_rptr; in mi_copyin()
211 ASSERT(mp->b_datap->db_type == M_IOCTL && !uaddr); in mi_copyin()
215 MI_COPY_COUNT(mp) = 1; in mi_copyin()
216 MI_COPY_DIRECTION(mp) = MI_COPY_IN; in mi_copyin()
217 cq->cq_private = mp->b_cont; in mi_copyin()
220 bcopy(mp->b_cont->b_rptr, &cq->cq_addr, sizeof (cq->cq_addr)); in mi_copyin()
221 mp->b_cont = NULL; in mi_copyin()
222 mp->b_datap->db_type = M_COPYIN; in mi_copyin()
223 qreply(q, mp); in mi_copyin()
236 err = miocpullup(mp, len); in mi_copyin()
250 mp1->b_cont = mp->b_cont; in mi_copyin()
251 mp->b_cont = mp1; in mi_copyin()
252 MI_COPY_COUNT(mp) = 1; in mi_copyin()
253 MI_COPY_DIRECTION(mp) = MI_COPY_IN; in mi_copyin()
254 mp->b_cont = mp1->b_cont; in mi_copyin()
261 mp->b_datap->db_type = M_IOCDATA; in mi_copyin()
264 put(q, mp); in mi_copyin()
270 if (mp->b_cont) { in mi_copyin()
271 freemsg(mp->b_cont); in mi_copyin()
272 mp->b_cont = NULL; in mi_copyin()
274 mp->b_datap->db_type = M_IOCACK; in mi_copyin()
275 qreply(q, mp); in mi_copyin()
294 mi_copyin_n(queue_t *q, MBLKP mp, size_t offset, size_t len) in mi_copyin_n() argument
296 struct copyreq *cq = (struct copyreq *)mp->b_rptr; in mi_copyin_n()
298 ASSERT(mp->b_datap->db_type == M_IOCDATA); in mi_copyin_n()
300 MI_COPY_COUNT(mp)++; in mi_copyin_n()
301 MI_COPY_DIRECTION(mp) = MI_COPY_IN; in mi_copyin_n()
302 cq->cq_private = mp->b_cont; in mi_copyin_n()
305 bcopy(mp->b_cont->b_rptr, &cq->cq_addr, sizeof (cq->cq_addr)); in mi_copyin_n()
307 mp->b_cont = NULL; in mi_copyin_n()
308 mp->b_datap->db_type = M_COPYIN; in mi_copyin_n()
309 qreply(q, mp); in mi_copyin_n()
313 mi_copyout(queue_t *q, MBLKP mp) in mi_copyout() argument
315 struct iocblk *iocp = (struct iocblk *)mp->b_rptr; in mi_copyout()
321 if (mp->b_datap->db_type != M_IOCDATA || !mp->b_cont) { in mi_copyout()
322 mi_copy_done(q, mp, EPROTO); in mi_copyout()
326 mp1 = mp->b_cont; in mi_copyout()
328 mi_copy_done(q, mp, (int)(uintptr_t)cp->cp_rval); in mi_copyout()
331 if (!mp1->b_cont->b_cont && !MI_IS_TRANSPARENT(mp)) { in mi_copyout()
334 mp->b_cont = mp1->b_cont; in mi_copyout()
336 mp1 = mp->b_cont; in mi_copyout()
341 mp->b_datap->db_type = M_IOCACK; in mi_copyout()
342 qreply(q, mp); in mi_copyout()
345 if (MI_COPY_DIRECTION(mp) == MI_COPY_IN) { in mi_copyout()
347 MI_COPY_DIRECTION(mp) = MI_COPY_OUT; in mi_copyout()
348 MI_COPY_COUNT(mp) = 1; in mi_copyout()
350 ++MI_COPY_COUNT(mp); in mi_copyout()
362 mp->b_datap->db_type = M_COPYOUT; in mi_copyout()
363 mp->b_cont = mp1; in mi_copyout()
368 qreply(q, mp); in mi_copyout()
372 mi_copyout_alloc(queue_t *q, MBLKP mp, char *uaddr, size_t len, in mi_copyout_alloc() argument
375 struct iocblk *iocp = (struct iocblk *)mp->b_rptr; in mi_copyout_alloc()
378 if (mp->b_datap->db_type == M_IOCTL) { in mi_copyout_alloc()
385 freemsg(mp->b_cont); in mi_copyout_alloc()
386 mp->b_cont = NULL; in mi_copyout_alloc()
387 mp->b_datap->db_type = M_IOCACK; in mi_copyout_alloc()
388 qreply(q, mp); in mi_copyout_alloc()
392 mp1->b_cont = mp->b_cont; in mi_copyout_alloc()
393 mp->b_cont = mp1; in mi_copyout_alloc()
395 MI_COPY_COUNT(mp) = 0; in mi_copyout_alloc()
396 MI_COPY_DIRECTION(mp) = MI_COPY_OUT; in mi_copyout_alloc()
398 mp->b_datap->db_type = M_IOCDATA; in mi_copyout_alloc()
404 mi_copy_done(q, mp, ENOMEM); in mi_copyout_alloc()
407 linkb(mp, mp1); in mi_copyout_alloc()
413 mi_copy_done(queue_t *q, MBLKP mp, int err) in mi_copy_done() argument
418 if (!mp) in mi_copy_done()
420 if (!q || (mp->b_wptr - mp->b_rptr) < sizeof (struct iocblk)) { in mi_copy_done()
421 freemsg(mp); in mi_copy_done()
424 iocp = (struct iocblk *)mp->b_rptr; in mi_copy_done()
425 mp->b_datap->db_type = M_IOCACK; in mi_copy_done()
429 if ((mp1 = mp->b_cont) != NULL) { in mi_copy_done()
434 freemsg(mp->b_cont); in mi_copy_done()
435 mp->b_cont = NULL; in mi_copy_done()
437 qreply(q, mp); in mi_copy_done()
441 mi_copy_state(queue_t *q, MBLKP mp, MBLKP *mpp) in mi_copy_state() argument
443 struct iocblk *iocp = (struct iocblk *)mp->b_rptr; in mi_copy_state()
447 mp1 = mp->b_cont; in mi_copy_state()
448 mp->b_cont = cp->cp_private; in mi_copy_state()
451 mi_copy_done(q, mp, ENOMEM); in mi_copy_state()
454 linkb(mp->b_cont, mp1); in mi_copy_state()
457 mi_copy_done(q, mp, (int)(uintptr_t)cp->cp_rval); in mi_copy_state()
460 if (mpp && MI_COPY_DIRECTION(mp) == MI_COPY_IN) in mi_copy_state()
462 return (MI_COPY_STATE(mp)); in mi_copy_state()
634 mi_mpprintf(MBLKP mp, char *fmt, ...) in mi_mpprintf() argument
640 if (mp) { in mi_mpprintf()
642 (char *)mp); in mi_mpprintf()
644 (void) mi_mpprintf_putc((char *)mp, '\0'); in mi_mpprintf()
652 mi_mpprintf_nr(MBLKP mp, char *fmt, ...) in mi_mpprintf_nr() argument
658 if (mp) { in mi_mpprintf_nr()
659 (void) adjmsg(mp, -1); in mi_mpprintf_nr()
661 (char *)mp); in mi_mpprintf_nr()
663 (void) mi_mpprintf_putc((char *)mp, '\0'); in mi_mpprintf_nr()
672 MBLKP mp = (MBLKP)cookie; in mi_mpprintf_putc() local
674 while (mp->b_cont) in mi_mpprintf_putc()
675 mp = mp->b_cont; in mi_mpprintf_putc()
676 if (mp->b_wptr >= mp->b_datap->db_lim) { in mi_mpprintf_putc()
677 mp->b_cont = allocb(1024, BPRI_HI); in mi_mpprintf_putc()
678 mp = mp->b_cont; in mi_mpprintf_putc()
679 if (!mp) in mi_mpprintf_putc()
682 *mp->b_wptr++ = (unsigned char)ch; in mi_mpprintf_putc()
876 mi_offset_param(mblk_t *mp, size_t offset, size_t len) in mi_offset_param() argument
880 if (!mp) in mi_offset_param()
882 msg_len = mp->b_wptr - mp->b_rptr; in mi_offset_param()
886 return (&mp->b_rptr[offset]); in mi_offset_param()
890 mi_offset_paramc(mblk_t *mp, size_t offset, size_t len) in mi_offset_paramc() argument
894 for (; mp; mp = mp->b_cont) { in mi_offset_paramc()
895 int type = mp->b_datap->db_type; in mi_offset_paramc()
897 if (param = mi_offset_param(mp, offset, len)) in mi_offset_paramc()
899 if (offset < mp->b_wptr - mp->b_rptr) in mi_offset_paramc()
901 offset -= mp->b_wptr - mp->b_rptr; in mi_offset_paramc()
1084 mi_timer(queue_t *q, MBLKP mp, clock_t tim) in mi_timer() argument
1090 if (!q || !mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB)) in mi_timer()
1092 mtb = (MTBP)mp->b_datap->db_base; in mi_timer()
1093 ASSERT(mp->b_datap->db_type == M_PCSIG); in mi_timer()
1101 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer()
1102 mp->b_prev || mp->b_next); in mi_timer()
1111 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer()
1112 mp->b_prev || mp->b_next); in mi_timer()
1119 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer()
1120 mp->b_prev || mp->b_next); in mi_timer()
1132 mi_timer_stop(mp); in mi_timer()
1135 mi_timer_move(q, mp); in mi_timer()
1152 MBLKP mp; in mi_timer_alloc() local
1155 if ((mp = allocb(size + sizeof (MTB), BPRI_HI)) != NULL) { in mi_timer_alloc()
1156 mp->b_datap->db_type = M_PCSIG; in mi_timer_alloc()
1157 mtb = (MTBP)mp->b_datap->db_base; in mi_timer_alloc()
1158 mp->b_rptr = (uchar_t *)&mtb[1]; in mi_timer_alloc()
1159 mp->b_wptr = mp->b_rptr + size; in mi_timer_alloc()
1161 mtb->mtb_mp = mp; in mi_timer_alloc()
1163 return (mp); in mi_timer_alloc()
1192 mi_timer_free(MBLKP mp) in mi_timer_free() argument
1197 if (!mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB)) in mi_timer_free()
1199 mtb = (MTBP)mp->b_datap->db_base; in mi_timer_free()
1204 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer_free()
1205 mp->b_prev || mp->b_next); in mi_timer_free()
1212 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer_free()
1213 mp->b_prev || mp->b_next); in mi_timer_free()
1219 ASSERT(mtb->mtb_q == NULL || mtb->mtb_q->q_first != mp); in mi_timer_free()
1220 freemsg(mp); in mi_timer_free()
1227 mi_timer_move(queue_t *q, MBLKP mp) in mi_timer_move() argument
1232 if (!q || !mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB)) in mi_timer_move()
1235 mtb = (MTBP)mp->b_datap->db_base; in mi_timer_move()
1247 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer_move()
1248 mp->b_prev || mp->b_next); in mi_timer_move()
1249 rmvq(mtb->mtb_q, mp); in mi_timer_move()
1250 ASSERT(mtb->mtb_q->q_first != mp && in mi_timer_move()
1251 mp->b_prev == NULL && mp->b_next == NULL); in mi_timer_move()
1253 (void) putq(mtb->mtb_q, mp); in mi_timer_move()
1264 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer_move()
1265 mp->b_prev || mp->b_next); in mi_timer_move()
1266 rmvq(mtb->mtb_q, mp); in mi_timer_move()
1267 ASSERT(mtb->mtb_q->q_first != mp && in mi_timer_move()
1268 mp->b_prev == NULL && mp->b_next == NULL); in mi_timer_move()
1270 (void) putq(mtb->mtb_q, mp); in mi_timer_move()
1279 mi_timer_stop(MBLKP mp) in mi_timer_stop() argument
1284 if (!mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB)) in mi_timer_stop()
1287 mtb = (MTBP)mp->b_datap->db_base; in mi_timer_stop()
1292 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer_stop()
1293 mp->b_prev || mp->b_next); in mi_timer_stop()
1299 ASSERT(mtb->mtb_q->q_first == mp || in mi_timer_stop()
1300 mp->b_prev || mp->b_next); in mi_timer_stop()
1312 mi_timer_valid(MBLKP mp) in mi_timer_valid() argument
1317 if (!mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB) || in mi_timer_valid()
1318 mp->b_datap->db_type != M_PCSIG) in mi_timer_valid()
1320 mtb = (MTBP)mp->b_datap->db_base; in mi_timer_valid()
1329 freemsg(mp); in mi_timer_valid()
1355 mi_tpi_addr_and_opt(MBLKP mp, char *addr, t_scalar_t addr_length, in mi_tpi_addr_and_opt() argument
1369 tudi = (struct T_unitdata_ind *)mp->b_rptr; in mi_tpi_addr_and_opt()
1370 tudi->SRC_offset = (t_scalar_t)(mp->b_wptr - mp->b_rptr); in mi_tpi_addr_and_opt()
1373 bcopy(addr, (char *)mp->b_wptr, addr_length); in mi_tpi_addr_and_opt()
1374 mp->b_wptr += addr_length; in mi_tpi_addr_and_opt()
1376 tudi->OPT_offset = (t_scalar_t)(mp->b_wptr - mp->b_rptr); in mi_tpi_addr_and_opt()
1379 bcopy(opt, (char *)mp->b_wptr, opt_length); in mi_tpi_addr_and_opt()
1380 mp->b_wptr += opt_length; in mi_tpi_addr_and_opt()
1389 MBLKP mp; in mi_tpi_conn_con() local
1392 if ((mp = mi_tpi_trailer_alloc(trailer_mp, len, T_CONN_CON)) != NULL) { in mi_tpi_conn_con()
1393 mp->b_wptr = &mp->b_rptr[sizeof (struct T_conn_con)]; in mi_tpi_conn_con()
1394 mi_tpi_addr_and_opt(mp, src, src_length, opt, opt_length); in mi_tpi_conn_con()
1396 return (mp); in mi_tpi_conn_con()
1404 MBLKP mp; in mi_tpi_conn_ind() local
1407 if ((mp = mi_tpi_trailer_alloc(trailer_mp, len, T_CONN_IND)) != NULL) { in mi_tpi_conn_ind()
1408 mp->b_wptr = &mp->b_rptr[sizeof (struct T_conn_ind)]; in mi_tpi_conn_ind()
1409 mi_tpi_addr_and_opt(mp, src, src_length, opt, opt_length); in mi_tpi_conn_ind()
1410 ((struct T_conn_ind *)mp->b_rptr)->SEQ_number = seqnum; in mi_tpi_conn_ind()
1411 mp->b_datap->db_type = M_PROTO; in mi_tpi_conn_ind()
1413 return (mp); in mi_tpi_conn_ind()
1422 MBLKP mp; in mi_tpi_extconn_ind() local
1426 if ((mp = mi_tpi_trailer_alloc(trailer_mp, len, T_EXTCONN_IND)) != in mi_tpi_extconn_ind()
1428 mp->b_wptr = &mp->b_rptr[sizeof (struct T_extconn_ind)]; in mi_tpi_extconn_ind()
1429 mi_tpi_addr_and_opt(mp, src, src_length, opt, opt_length); in mi_tpi_extconn_ind()
1430 ((struct T_extconn_ind *)mp->b_rptr)->DEST_length = dst_length; in mi_tpi_extconn_ind()
1431 ((struct T_extconn_ind *)mp->b_rptr)->DEST_offset = in mi_tpi_extconn_ind()
1432 (t_scalar_t)(mp->b_wptr - mp->b_rptr); in mi_tpi_extconn_ind()
1434 bcopy(dst, (char *)mp->b_wptr, dst_length); in mi_tpi_extconn_ind()
1435 mp->b_wptr += dst_length; in mi_tpi_extconn_ind()
1437 ((struct T_extconn_ind *)mp->b_rptr)->SEQ_number = seqnum; in mi_tpi_extconn_ind()
1438 mp->b_datap->db_type = M_PROTO; in mi_tpi_extconn_ind()
1440 return (mp); in mi_tpi_extconn_ind()
1446 MBLKP mp; in mi_tpi_discon_ind() local
1449 if ((mp = mi_tpi_trailer_alloc(trailer_mp, in mi_tpi_discon_ind()
1451 tdi = (struct T_discon_ind *)mp->b_rptr; in mi_tpi_discon_ind()
1455 return (mp); in mi_tpi_discon_ind()
1463 mi_tpi_err_ack_alloc(MBLKP mp, t_scalar_t tlierr, int unixerr) in mi_tpi_err_ack_alloc() argument
1468 if (!mp) in mi_tpi_err_ack_alloc()
1470 error_prim = ((TPRIMP)mp->b_rptr)->type; in mi_tpi_err_ack_alloc()
1471 if ((mp = tpi_ack_alloc(mp, sizeof (struct T_error_ack), in mi_tpi_err_ack_alloc()
1473 teackp = (struct T_error_ack *)mp->b_rptr; in mi_tpi_err_ack_alloc()
1478 return (mp); in mi_tpi_err_ack_alloc()
1482 mi_tpi_ok_ack_alloc_extra(MBLKP mp, int extra) in mi_tpi_ok_ack_alloc_extra() argument
1486 if (!mp) in mi_tpi_ok_ack_alloc_extra()
1488 correct_prim = ((TPRIMP)mp->b_rptr)->type; in mi_tpi_ok_ack_alloc_extra()
1489 if ((mp = tpi_ack_alloc(mp, sizeof (struct T_ok_ack) + extra, in mi_tpi_ok_ack_alloc_extra()
1491 ((struct T_ok_ack *)mp->b_rptr)->CORRECT_prim = correct_prim; in mi_tpi_ok_ack_alloc_extra()
1492 mp->b_wptr -= extra; in mi_tpi_ok_ack_alloc_extra()
1494 return (mp); in mi_tpi_ok_ack_alloc_extra()
1498 mi_tpi_ok_ack_alloc(MBLKP mp) in mi_tpi_ok_ack_alloc() argument
1500 return (mi_tpi_ok_ack_alloc_extra(mp, 0)); in mi_tpi_ok_ack_alloc()
1506 MBLKP mp; in mi_tpi_ordrel_ind() local
1508 if ((mp = allocb(sizeof (struct T_ordrel_ind), BPRI_HI)) != NULL) { in mi_tpi_ordrel_ind()
1509 mp->b_datap->db_type = M_PROTO; in mi_tpi_ordrel_ind()
1510 ((struct T_ordrel_ind *)mp->b_rptr)->PRIM_type = T_ORDREL_IND; in mi_tpi_ordrel_ind()
1511 mp->b_wptr += sizeof (struct T_ordrel_ind); in mi_tpi_ordrel_ind()
1513 return (mp); in mi_tpi_ordrel_ind()
1519 MBLKP mp; in mi_tpi_trailer_alloc() local
1521 if ((mp = allocb(size, BPRI_MED)) != NULL) { in mi_tpi_trailer_alloc()
1522 mp->b_cont = trailer_mp; in mi_tpi_trailer_alloc()
1523 mp->b_datap->db_type = M_PROTO; in mi_tpi_trailer_alloc()
1524 ((union T_primitives *)mp->b_rptr)->type = type; in mi_tpi_trailer_alloc()
1525 mp->b_wptr += size; in mi_tpi_trailer_alloc()
1527 return (mp); in mi_tpi_trailer_alloc()
1535 MBLKP mp; in mi_tpi_uderror_ind() local
1539 if ((mp = allocb(len, BPRI_HI)) != NULL) { in mi_tpi_uderror_ind()
1540 mp->b_datap->db_type = M_PROTO; in mi_tpi_uderror_ind()
1541 tudei = (struct T_uderror_ind *)mp->b_rptr; in mi_tpi_uderror_ind()
1544 mp->b_wptr = &mp->b_rptr[sizeof (struct T_uderror_ind)]; in mi_tpi_uderror_ind()
1545 mi_tpi_addr_and_opt(mp, dest, dest_length, opt, opt_length); in mi_tpi_uderror_ind()
1547 return (mp); in mi_tpi_uderror_ind()