Lines Matching refs:pp
32 ses_snap_page_t *pp;
34 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next)
35 if (pp->ssp_num == page && pp->ssp_control == ctl &&
36 (pp->ssp_len > 0 || pp->ssp_control))
37 return (pp);
43 grow_snap_page(ses_snap_page_t *pp, size_t min)
47 if (min == 0 || min < pp->ssp_alloc)
48 min = pp->ssp_alloc * 2;
50 if ((newbuf = ses_realloc(pp->ssp_page, min)) == NULL)
53 pp->ssp_page = newbuf;
54 pp->ssp_alloc = min;
56 bzero(newbuf + pp->ssp_len, pp->ssp_alloc - pp->ssp_len);
64 ses_snap_page_t *pp;
66 if ((pp = ses_zalloc(sizeof (ses_snap_page_t))) == NULL)
69 if ((pp->ssp_page = ses_zalloc(SES2_MIN_DIAGPAGE_ALLOC)) == NULL) {
70 ses_free(pp);
74 pp->ssp_num = -1;
75 pp->ssp_alloc = SES2_MIN_DIAGPAGE_ALLOC;
77 return (pp);
81 free_snap_page(ses_snap_page_t *pp)
83 if (pp == NULL)
86 if (pp->ssp_mmap_base)
87 (void) munmap(pp->ssp_mmap_base, pp->ssp_mmap_len);
89 ses_free(pp->ssp_page);
90 ses_free(pp);
96 ses_snap_page_t *pp, *np;
98 for (pp = sp->ss_pages; pp != NULL; pp = np) {
99 np = pp->ssp_next;
100 free_snap_page(pp);
119 ses_snap_page_t *pp, *up, **loc;
123 pp = ses_snap_find_page(sp, page, B_TRUE);
124 if (pp == NULL) {
129 if (pp->ssp_initialized && !unique)
130 return (pp);
143 up->ssp_num = pp->ssp_num;
146 for (loc = &pp->ssp_unique; *loc != NULL;
151 pp = up;
158 if (pp->ssp_alloc < len && grow_snap_page(pp, len) != 0)
160 pp->ssp_len = len;
161 bzero(pp->ssp_page, len);
162 pp->ssp_initialized = B_TRUE;
164 pip = (spc3_diag_page_impl_t *)pp->ssp_page;
171 return (pp);
178 ses_snap_page_t *pp;
188 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next)
189 if (pp->ssp_num == page && !pp->ssp_control)
196 ASSERT(pp != NULL);
205 SPC3_CMD_RECEIVE_DIAGNOSTIC_RESULTS, flags, pp->ssp_page,
206 pp->ssp_alloc);
215 cp->rdrc_page_code = pp->ssp_num;
218 MIN(pp->ssp_alloc, UINT16_MAX));
233 (void) libscsi_action_get_buffer(ap, &buf, &alloc, &pp->ssp_len);
236 ASSERT(buf == pp->ssp_page);
237 ASSERT(alloc == pp->ssp_alloc);
239 if (pp->ssp_alloc - pp->ssp_len < 0x80 && pp->ssp_alloc < UINT16_MAX) {
240 bzero(pp->ssp_page, pp->ssp_len);
241 pp->ssp_len = 0;
242 if (grow_snap_page(pp, 0) != 0)
247 if (pp->ssp_len < offsetof(spc3_diag_page_impl_t, sdpi_data)) {
248 bzero(pp->ssp_page, pp->ssp_len);
249 pp->ssp_len = 0;
251 "truncated page 0x%x (length %d)", page, pp->ssp_len));
261 bzero(pp->ssp_page, pp->ssp_len);
262 pp->ssp_len = 0;
276 send_control_page(ses_snap_t *sp, ses_snap_page_t *pp)
289 flags, pp->ssp_page, pp->ssp_len);
298 SCSI_WRITE16(&cp->sdc_parameter_list_length, pp->ssp_len);
304 pp->ssp_num));
309 "failed for page 0x%x", pp->ssp_num);
322 ses_snap_page_t *pp, *np;
332 if ((pp = alloc_snap_page()) == NULL)
335 pp->ssp_num = SES2_DIAGPAGE_SUPPORTED_PAGES;
336 pp->ssp_control = B_FALSE;
337 sp->ss_pages = pp;
340 free_snap_page(pp);
345 pip = pp->ssp_page;
346 pagelen = pp->ssp_len;
372 pp->ssp_next = np;
373 pp = np;
385 pp->ssp_next = np;
386 pp = np;
448 ses_snap_page_t *pp;
477 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next) {
478 if (pp->ssp_num == SES2_DIAGPAGE_SHORT_STATUS)
482 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next) {
490 if (pp->ssp_len > 0 || pp->ssp_control)
492 if ((dp = ses_get_pagedesc(tp, pp->ssp_num,
496 if (read_status_page(sp, pp->ssp_num) != 0) {
516 dp->spd_gcoff + 4 <= pp->ssp_len) {
517 gc = SCSI_READ32((uint8_t *)pp->ssp_page +
552 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next) {
553 if (pp->ssp_control || pp->ssp_len == 0)
556 pages += (P2ROUNDUP(pp->ssp_len, pagesize) /
569 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next) {
570 if (pp->ssp_control || pp->ssp_len == 0)
573 pages = P2ROUNDUP(pp->ssp_len, pagesize) / pagesize;
574 pp->ssp_mmap_base = scratch;
575 pp->ssp_mmap_len = pages * pagesize;
577 pagelen = lrand48() % pp->ssp_len;
578 (void) memcpy(pp->ssp_mmap_base + pp->ssp_mmap_len -
579 pagelen, pp->ssp_page, pagelen);
580 ses_free(pp->ssp_page);
581 pp->ssp_page = pp->ssp_mmap_base + pp->ssp_mmap_len -
583 pp->ssp_len = pagelen;
585 (void) munmap(pp->ssp_mmap_base + pages * pagesize,
613 ses_snap_page_t *pp, *up;
616 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next) {
617 if (!pp->ssp_control)
620 if (pp->ssp_initialized && send_control_page(sp, pp) != 0)
623 for (up = pp->ssp_unique; up != NULL; up = up->ssp_next) {
631 for (pp = sp->ss_pages; pp != NULL; pp = pp->ssp_next) {
632 if (!pp->ssp_control)
635 pp->ssp_initialized = B_FALSE;
636 while ((up = pp->ssp_unique) != NULL) {
637 pp->ssp_unique = up->ssp_next;