Lines Matching refs:pdi
483 pdescinfo_t *pdi, n_pdi; in mmd_copy() local
497 pdi = &(pd->pd_pdi); in mmd_copy()
504 ASSERT(pdi->flags & PDESC_HAS_REF); in mmd_copy()
505 if (pdi->flags & PDESC_HBUF_REF) { in mmd_copy()
510 n_pdi.hdr_base = REL_OFF(pdi->hdr_base, base, n_base); in mmd_copy()
511 n_pdi.hdr_rptr = REL_OFF(pdi->hdr_rptr, base, n_base); in mmd_copy()
512 n_pdi.hdr_wptr = REL_OFF(pdi->hdr_wptr, base, n_base); in mmd_copy()
513 n_pdi.hdr_lim = REL_OFF(pdi->hdr_lim, base, n_base); in mmd_copy()
516 if (pdi->flags & PDESC_PBUF_REF) { in mmd_copy()
518 n_pdi.pld_cnt = pdi->pld_cnt; in mmd_copy()
520 for (i = 0; i < pdi->pld_cnt; i++) { in mmd_copy()
521 idx = pdi->pld_ary[i].pld_pbuf_idx; in mmd_copy()
536 REL_OFF(pdi->pld_ary[i].pld_rptr, in mmd_copy()
539 REL_OFF(pdi->pld_ary[i].pld_wptr, in mmd_copy()
634 #define HBUF_REF_VALID(mmd, pdi) \ argument
635 ((mmd)->mmd_hbuf != NULL && (pdi)->hdr_rptr != NULL && \
636 (pdi)->hdr_wptr != NULL && (pdi)->hdr_base != NULL && \
637 (pdi)->hdr_lim != NULL && (pdi)->hdr_lim >= (pdi)->hdr_base && \
638 (pdi)->hdr_wptr >= (pdi)->hdr_rptr && \
639 (pdi)->hdr_base <= (pdi)->hdr_rptr && \
640 (pdi)->hdr_lim >= (pdi)->hdr_wptr && \
641 (pdi)->hdr_base >= (mmd)->mmd_hbuf->b_rptr && \
643 (pdi->hdr_base - (mmd)->mmd_hbuf->b_rptr), \
644 PDESC_HDRSIZE(pdi)))
650 pbuf_ref_valid(multidata_t *mmd, pdescinfo_t *pdi) in pbuf_ref_valid() argument
657 if (pdi->pld_cnt == 0 || pdi->pld_cnt > mmd->mmd_pbuf_cnt) { in pbuf_ref_valid()
662 pa = &pdi->pld_ary[0]; in pbuf_ref_valid()
663 while (valid && i < pdi->pld_cnt) { in pbuf_ref_valid()
670 PDESC_PLD_SPAN_SIZE(pdi, i))); in pbuf_ref_valid()
678 "(valid 0x%p-0x%p len %d)\n", (void *)pdi, in pbuf_ref_valid()
679 i, pdi->pld_cnt, idx, mmd->mmd_pbuf_cnt, in pbuf_ref_valid()
682 (int)PDESC_PLD_SPAN_SIZE(pdi, i), in pbuf_ref_valid()
701 mmd_addpdesc(multidata_t *mmd, pdescinfo_t *pdi, int *err, int kmflags) in mmd_addpdesc() argument
705 ASSERT(pdi != NULL); in mmd_addpdesc()
706 ASSERT(pdi->flags & PDESC_HAS_REF); in mmd_addpdesc()
710 (((pdi->flags & PDESC_HBUF_REF) && !HBUF_REF_VALID(mmd, pdi)) || in mmd_addpdesc()
711 ((pdi->flags & PDESC_PBUF_REF) && !pbuf_ref_valid(mmd, pdi)))) { in mmd_addpdesc()
717 return (mmd_addpdesc_int(mmd, pdi, err, kmflags)); in mmd_addpdesc()
725 mmd_addpdesc_int(multidata_t *mmd, pdescinfo_t *pdi, int *err, int kmflags) in mmd_addpdesc_int() argument
730 ASSERT(pdi->flags & PDESC_HAS_REF); in mmd_addpdesc_int()
731 ASSERT(!(pdi->flags & PDESC_HBUF_REF) || HBUF_REF_VALID(mmd, pdi)); in mmd_addpdesc_int()
732 ASSERT(!(pdi->flags & PDESC_PBUF_REF) || pbuf_ref_valid(mmd, pdi)); in mmd_addpdesc_int()
773 PDI_COPY(pdi, &(pd->pd_pdi)); in mmd_addpdesc_int()
908 mmd_getpdesc(multidata_t *mmd, pdesc_t *pd, pdescinfo_t *pdi, uint_t forw, in mmd_getpdesc() argument
950 if (pd != NULL && pdi != NULL) in mmd_getpdesc()
951 PDI_COPY(&(pd->pd_pdi), pdi); in mmd_getpdesc()
962 mmd_getfirstpdesc(multidata_t *mmd, pdescinfo_t *pdi) in mmd_getfirstpdesc() argument
964 return (mmd_getpdesc(mmd, NULL, pdi, 1, B_FALSE)); in mmd_getfirstpdesc()
971 mmd_getlastpdesc(multidata_t *mmd, pdescinfo_t *pdi) in mmd_getlastpdesc() argument
973 return (mmd_getpdesc(mmd, NULL, pdi, 0, B_FALSE)); in mmd_getlastpdesc()
980 mmd_getnextpdesc(pdesc_t *pd, pdescinfo_t *pdi) in mmd_getnextpdesc() argument
982 return (mmd_getpdesc(pd->pd_slab->pds_mmd, pd, pdi, 1, B_FALSE)); in mmd_getnextpdesc()
989 mmd_getprevpdesc(pdesc_t *pd, pdescinfo_t *pdi) in mmd_getprevpdesc() argument
991 return (mmd_getpdesc(pd->pd_slab->pds_mmd, pd, pdi, 0, B_FALSE)); in mmd_getprevpdesc()
1000 pdi_in_range(pdescinfo_t *pdi, pdescinfo_t *c_pdi) in pdi_in_range() argument
1003 struct pld_ary_s *pa = &pdi->pld_ary[0]; in pdi_in_range()
1006 if (pdi->hdr_base < c_pdi->hdr_base || pdi->hdr_lim > c_pdi->hdr_lim) in pdi_in_range()
1016 if (pdi->pld_cnt < c_pdi->pld_cnt) in pdi_in_range()
1033 mmd_adjpdesc(pdesc_t *pd, pdescinfo_t *pdi) in mmd_adjpdesc() argument
1039 ASSERT(pdi != NULL); in mmd_adjpdesc()
1050 if (!(pdi->flags & PDESC_HAS_REF)) in mmd_adjpdesc()
1055 (((pdi->flags & PDESC_HBUF_REF) && !HBUF_REF_VALID(mmd, pdi)) || in mmd_adjpdesc()
1056 ((pdi->flags & PDESC_PBUF_REF) && !pbuf_ref_valid(mmd, pdi)))) in mmd_adjpdesc()
1061 if (!pdi_in_range(pdi, c_pdi)) in mmd_adjpdesc()
1065 PDI_COPY(pdi, c_pdi); in mmd_adjpdesc()
1080 pdescinfo_t *pdi; in mmd_transform() local
1096 pdi = &(pd->pd_pdi); in mmd_transform()
1097 if (pdi->flags & PDESC_HBUF_REF) in mmd_transform()
1098 h_size = PDESC_HDRL(pdi); in mmd_transform()
1099 if (pdi->flags & PDESC_PBUF_REF) { in mmd_transform()
1100 for (i = 0; i < pdi->pld_cnt; i++) in mmd_transform()
1101 p_size += PDESC_PLD_SPAN_SIZE(pdi, i); in mmd_transform()
1112 if ((pdi->flags & PDESC_HBUF_REF) && h_size > 0) { in mmd_transform()
1113 bcopy(pdi->hdr_rptr, mp->b_wptr, h_size); in mmd_transform()
1118 if ((pdi->flags & PDESC_PBUF_REF) && p_size > 0) { in mmd_transform()
1119 for (i = 0; i < pdi->pld_cnt; i++) { in mmd_transform()
1120 len = PDESC_PLD_SPAN_SIZE(pdi, i); in mmd_transform()
1122 bcopy(pdi->pld_ary[i].pld_rptr, in mmd_transform()
1140 pdescinfo_t *pdi; in mmd_transform_link() local
1153 pdi = &(pd->pd_pdi); in mmd_transform_link()
1156 if ((pdi->flags & PDESC_HBUF_REF)) { in mmd_transform_link()
1159 nmp->b_rptr = pdi->hdr_rptr; in mmd_transform_link()
1160 nmp->b_wptr = pdi->hdr_wptr; in mmd_transform_link()
1164 if (pdi->flags & PDESC_PBUF_REF) { in mmd_transform_link()
1167 struct pld_ary_s *pa = &pdi->pld_ary[0]; in mmd_transform_link()
1170 for (i = 0; i < pdi->pld_cnt; i++, pa++) { in mmd_transform_link()
1174 if (PDESC_PLD_SPAN_SIZE(pdi, i) == 0) in mmd_transform_link()
1245 mmd_getpdescinfo(pdesc_t *pd, pdescinfo_t *pdi) in mmd_getpdescinfo() argument
1251 ASSERT(pdi != NULL); in mmd_getpdescinfo()
1258 PDI_COPY(&(pd->pd_pdi), pdi); in mmd_getpdescinfo()
1560 pdescinfo_t *pdi; in mmd_getsize() local
1584 pdi = &pd->pd_pdi; in mmd_getsize()
1590 if (pdi->flags & PDESC_REM_DEFER) in mmd_getsize()
1593 if (pdi->flags & PDESC_HBUF_REF) in mmd_getsize()
1594 *pinuse += PDESC_HDRL(pdi); in mmd_getsize()
1596 if (pdi->flags & PDESC_PBUF_REF) { in mmd_getsize()
1597 for (i = 0; i < pdi->pld_cnt; i++) in mmd_getsize()
1598 *pinuse += PDESC_PLDL(pdi, i); in mmd_getsize()