Lines Matching refs:pp

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