Lines Matching refs:mp

55 #define	MI_IS_TRANSPARENT(mp)	(mp->b_cont && \
56 (mp->b_cont->b_rptr != mp->b_cont->b_wptr))
203 mi_copyin(queue_t *q, MBLKP mp, char *uaddr, size_t len)
205 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
206 struct copyreq *cq = (struct copyreq *)mp->b_rptr;
207 struct copyresp *cp = (struct copyresp *)mp->b_rptr;
211 ASSERT(mp->b_datap->db_type == M_IOCTL && !uaddr);
215 MI_COPY_COUNT(mp) = 1;
216 MI_COPY_DIRECTION(mp) = MI_COPY_IN;
217 cq->cq_private = mp->b_cont;
220 bcopy(mp->b_cont->b_rptr, &cq->cq_addr, sizeof (cq->cq_addr));
221 mp->b_cont = NULL;
222 mp->b_datap->db_type = M_COPYIN;
223 qreply(q, mp);
236 err = miocpullup(mp, len);
250 mp1->b_cont = mp->b_cont;
251 mp->b_cont = mp1;
252 MI_COPY_COUNT(mp) = 1;
253 MI_COPY_DIRECTION(mp) = MI_COPY_IN;
254 mp->b_cont = mp1->b_cont;
261 mp->b_datap->db_type = M_IOCDATA;
264 put(q, mp);
270 if (mp->b_cont) {
271 freemsg(mp->b_cont);
272 mp->b_cont = NULL;
274 mp->b_datap->db_type = M_IOCACK;
275 qreply(q, mp);
294 mi_copyin_n(queue_t *q, MBLKP mp, size_t offset, size_t len)
296 struct copyreq *cq = (struct copyreq *)mp->b_rptr;
298 ASSERT(mp->b_datap->db_type == M_IOCDATA);
300 MI_COPY_COUNT(mp)++;
301 MI_COPY_DIRECTION(mp) = MI_COPY_IN;
302 cq->cq_private = mp->b_cont;
305 bcopy(mp->b_cont->b_rptr, &cq->cq_addr, sizeof (cq->cq_addr));
307 mp->b_cont = NULL;
308 mp->b_datap->db_type = M_COPYIN;
309 qreply(q, mp);
313 mi_copyout(queue_t *q, MBLKP mp)
315 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
321 if (mp->b_datap->db_type != M_IOCDATA || !mp->b_cont) {
322 mi_copy_done(q, mp, EPROTO);
326 mp1 = mp->b_cont;
328 mi_copy_done(q, mp, (int)(uintptr_t)cp->cp_rval);
331 if (!mp1->b_cont->b_cont && !MI_IS_TRANSPARENT(mp)) {
334 mp->b_cont = mp1->b_cont;
336 mp1 = mp->b_cont;
341 mp->b_datap->db_type = M_IOCACK;
342 qreply(q, mp);
345 if (MI_COPY_DIRECTION(mp) == MI_COPY_IN) {
347 MI_COPY_DIRECTION(mp) = MI_COPY_OUT;
348 MI_COPY_COUNT(mp) = 1;
350 ++MI_COPY_COUNT(mp);
362 mp->b_datap->db_type = M_COPYOUT;
363 mp->b_cont = mp1;
368 qreply(q, mp);
372 mi_copyout_alloc(queue_t *q, MBLKP mp, char *uaddr, size_t len,
375 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
378 if (mp->b_datap->db_type == M_IOCTL) {
385 freemsg(mp->b_cont);
386 mp->b_cont = NULL;
387 mp->b_datap->db_type = M_IOCACK;
388 qreply(q, mp);
392 mp1->b_cont = mp->b_cont;
393 mp->b_cont = mp1;
395 MI_COPY_COUNT(mp) = 0;
396 MI_COPY_DIRECTION(mp) = MI_COPY_OUT;
398 mp->b_datap->db_type = M_IOCDATA;
404 mi_copy_done(q, mp, ENOMEM);
407 linkb(mp, mp1);
413 mi_copy_done(queue_t *q, MBLKP mp, int err)
418 if (!mp)
420 if (!q || (mp->b_wptr - mp->b_rptr) < sizeof (struct iocblk)) {
421 freemsg(mp);
424 iocp = (struct iocblk *)mp->b_rptr;
425 mp->b_datap->db_type = M_IOCACK;
429 if ((mp1 = mp->b_cont) != NULL) {
434 freemsg(mp->b_cont);
435 mp->b_cont = NULL;
437 qreply(q, mp);
441 mi_copy_state(queue_t *q, MBLKP mp, MBLKP *mpp)
443 struct iocblk *iocp = (struct iocblk *)mp->b_rptr;
447 mp1 = mp->b_cont;
448 mp->b_cont = cp->cp_private;
451 mi_copy_done(q, mp, ENOMEM);
454 linkb(mp->b_cont, mp1);
457 mi_copy_done(q, mp, (int)(uintptr_t)cp->cp_rval);
460 if (mpp && MI_COPY_DIRECTION(mp) == MI_COPY_IN)
462 return (MI_COPY_STATE(mp));
634 mi_mpprintf(MBLKP mp, char *fmt, ...)
640 if (mp) {
642 (char *)mp);
644 (void) mi_mpprintf_putc((char *)mp, '\0');
652 mi_mpprintf_nr(MBLKP mp, char *fmt, ...)
658 if (mp) {
659 (void) adjmsg(mp, -1);
661 (char *)mp);
663 (void) mi_mpprintf_putc((char *)mp, '\0');
672 MBLKP mp = (MBLKP)cookie;
674 while (mp->b_cont)
675 mp = mp->b_cont;
676 if (mp->b_wptr >= mp->b_datap->db_lim) {
677 mp->b_cont = allocb(1024, BPRI_HI);
678 mp = mp->b_cont;
679 if (!mp)
682 *mp->b_wptr++ = (unsigned char)ch;
876 mi_offset_param(mblk_t *mp, size_t offset, size_t len)
880 if (!mp)
882 msg_len = mp->b_wptr - mp->b_rptr;
886 return (&mp->b_rptr[offset]);
890 mi_offset_paramc(mblk_t *mp, size_t offset, size_t len)
894 for (; mp; mp = mp->b_cont) {
895 int type = mp->b_datap->db_type;
897 if (param = mi_offset_param(mp, offset, len))
899 if (offset < mp->b_wptr - mp->b_rptr)
901 offset -= mp->b_wptr - mp->b_rptr;
1084 mi_timer(queue_t *q, MBLKP mp, clock_t tim)
1090 if (!q || !mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB))
1092 mtb = (MTBP)mp->b_datap->db_base;
1093 ASSERT(mp->b_datap->db_type == M_PCSIG);
1101 ASSERT(mtb->mtb_q->q_first == mp ||
1102 mp->b_prev || mp->b_next);
1111 ASSERT(mtb->mtb_q->q_first == mp ||
1112 mp->b_prev || mp->b_next);
1119 ASSERT(mtb->mtb_q->q_first == mp ||
1120 mp->b_prev || mp->b_next);
1132 mi_timer_stop(mp);
1135 mi_timer_move(q, mp);
1152 MBLKP mp;
1155 if ((mp = allocb(size + sizeof (MTB), BPRI_HI)) != NULL) {
1156 mp->b_datap->db_type = M_PCSIG;
1157 mtb = (MTBP)mp->b_datap->db_base;
1158 mp->b_rptr = (uchar_t *)&mtb[1];
1159 mp->b_wptr = mp->b_rptr + size;
1161 mtb->mtb_mp = mp;
1163 return (mp);
1190 mi_timer_free(MBLKP mp)
1195 if (!mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB))
1197 mtb = (MTBP)mp->b_datap->db_base;
1202 ASSERT(mtb->mtb_q->q_first == mp ||
1203 mp->b_prev || mp->b_next);
1210 ASSERT(mtb->mtb_q->q_first == mp ||
1211 mp->b_prev || mp->b_next);
1217 ASSERT(mtb->mtb_q == NULL || mtb->mtb_q->q_first != mp);
1218 freemsg(mp);
1225 mi_timer_move(queue_t *q, MBLKP mp)
1230 if (!q || !mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB))
1233 mtb = (MTBP)mp->b_datap->db_base;
1245 ASSERT(mtb->mtb_q->q_first == mp ||
1246 mp->b_prev || mp->b_next);
1247 rmvq(mtb->mtb_q, mp);
1248 ASSERT(mtb->mtb_q->q_first != mp &&
1249 mp->b_prev == NULL && mp->b_next == NULL);
1251 (void) putq(mtb->mtb_q, mp);
1262 ASSERT(mtb->mtb_q->q_first == mp ||
1263 mp->b_prev || mp->b_next);
1264 rmvq(mtb->mtb_q, mp);
1265 ASSERT(mtb->mtb_q->q_first != mp &&
1266 mp->b_prev == NULL && mp->b_next == NULL);
1268 (void) putq(mtb->mtb_q, mp);
1277 mi_timer_stop(MBLKP mp)
1282 if (!mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB))
1285 mtb = (MTBP)mp->b_datap->db_base;
1290 ASSERT(mtb->mtb_q->q_first == mp ||
1291 mp->b_prev || mp->b_next);
1297 ASSERT(mtb->mtb_q->q_first == mp ||
1298 mp->b_prev || mp->b_next);
1310 mi_timer_valid(MBLKP mp)
1315 if (!mp || (mp->b_rptr - mp->b_datap->db_base) != sizeof (MTB) ||
1316 mp->b_datap->db_type != M_PCSIG)
1318 mtb = (MTBP)mp->b_datap->db_base;
1327 freemsg(mp);
1353 mi_tpi_addr_and_opt(MBLKP mp, char *addr, t_scalar_t addr_length,
1367 tudi = (struct T_unitdata_ind *)mp->b_rptr;
1368 tudi->SRC_offset = (t_scalar_t)(mp->b_wptr - mp->b_rptr);
1371 bcopy(addr, (char *)mp->b_wptr, addr_length);
1372 mp->b_wptr += addr_length;
1374 tudi->OPT_offset = (t_scalar_t)(mp->b_wptr - mp->b_rptr);
1377 bcopy(opt, (char *)mp->b_wptr, opt_length);
1378 mp->b_wptr += opt_length;
1387 MBLKP mp;
1390 if ((mp = mi_tpi_trailer_alloc(trailer_mp, len, T_CONN_CON)) != NULL) {
1391 mp->b_wptr = &mp->b_rptr[sizeof (struct T_conn_con)];
1392 mi_tpi_addr_and_opt(mp, src, src_length, opt, opt_length);
1394 return (mp);
1402 MBLKP mp;
1405 if ((mp = mi_tpi_trailer_alloc(trailer_mp, len, T_CONN_IND)) != NULL) {
1406 mp->b_wptr = &mp->b_rptr[sizeof (struct T_conn_ind)];
1407 mi_tpi_addr_and_opt(mp, src, src_length, opt, opt_length);
1408 ((struct T_conn_ind *)mp->b_rptr)->SEQ_number = seqnum;
1409 mp->b_datap->db_type = M_PROTO;
1411 return (mp);
1420 MBLKP mp;
1424 if ((mp = mi_tpi_trailer_alloc(trailer_mp, len, T_EXTCONN_IND)) !=
1426 mp->b_wptr = &mp->b_rptr[sizeof (struct T_extconn_ind)];
1427 mi_tpi_addr_and_opt(mp, src, src_length, opt, opt_length);
1428 ((struct T_extconn_ind *)mp->b_rptr)->DEST_length = dst_length;
1429 ((struct T_extconn_ind *)mp->b_rptr)->DEST_offset =
1430 (t_scalar_t)(mp->b_wptr - mp->b_rptr);
1432 bcopy(dst, (char *)mp->b_wptr, dst_length);
1433 mp->b_wptr += dst_length;
1435 ((struct T_extconn_ind *)mp->b_rptr)->SEQ_number = seqnum;
1436 mp->b_datap->db_type = M_PROTO;
1438 return (mp);
1444 MBLKP mp;
1447 if ((mp = mi_tpi_trailer_alloc(trailer_mp,
1449 tdi = (struct T_discon_ind *)mp->b_rptr;
1453 return (mp);
1457 * Allocate and fill in a TPI err ack packet using the 'mp' passed in
1461 mi_tpi_err_ack_alloc(MBLKP mp, t_scalar_t tlierr, int unixerr)
1466 if (!mp)
1468 error_prim = ((TPRIMP)mp->b_rptr)->type;
1469 if ((mp = tpi_ack_alloc(mp, sizeof (struct T_error_ack),
1471 teackp = (struct T_error_ack *)mp->b_rptr;
1476 return (mp);
1480 mi_tpi_ok_ack_alloc_extra(MBLKP mp, int extra)
1484 if (!mp)
1486 correct_prim = ((TPRIMP)mp->b_rptr)->type;
1487 if ((mp = tpi_ack_alloc(mp, sizeof (struct T_ok_ack) + extra,
1489 ((struct T_ok_ack *)mp->b_rptr)->CORRECT_prim = correct_prim;
1490 mp->b_wptr -= extra;
1492 return (mp);
1496 mi_tpi_ok_ack_alloc(MBLKP mp)
1498 return (mi_tpi_ok_ack_alloc_extra(mp, 0));
1504 MBLKP mp;
1506 if ((mp = allocb(sizeof (struct T_ordrel_ind), BPRI_HI)) != NULL) {
1507 mp->b_datap->db_type = M_PROTO;
1508 ((struct T_ordrel_ind *)mp->b_rptr)->PRIM_type = T_ORDREL_IND;
1509 mp->b_wptr += sizeof (struct T_ordrel_ind);
1511 return (mp);
1517 MBLKP mp;
1519 if ((mp = allocb(size, BPRI_MED)) != NULL) {
1520 mp->b_cont = trailer_mp;
1521 mp->b_datap->db_type = M_PROTO;
1522 ((union T_primitives *)mp->b_rptr)->type = type;
1523 mp->b_wptr += size;
1525 return (mp);
1533 MBLKP mp;
1537 if ((mp = allocb(len, BPRI_HI)) != NULL) {
1538 mp->b_datap->db_type = M_PROTO;
1539 tudei = (struct T_uderror_ind *)mp->b_rptr;
1542 mp->b_wptr = &mp->b_rptr[sizeof (struct T_uderror_ind)];
1543 mi_tpi_addr_and_opt(mp, dest, dest_length, opt, opt_length);
1545 return (mp);