Lines Matching refs:w

73 mdb_whatis_search(mdb_whatis_t *w, uintptr_t base, size_t size)  in mdb_whatis_search()  argument
80 return (bsearch(range, w->w_addrs, w->w_naddrs, sizeof (*w->w_addrs), in mdb_whatis_search()
89 mdb_whatis_overlaps(mdb_whatis_t *w, uintptr_t base, size_t size) in mdb_whatis_overlaps() argument
94 if (whatis_debug && w->w_magic != WHATIS_MAGIC) { in mdb_whatis_overlaps()
100 if (w->w_done || size == 0) in mdb_whatis_overlaps()
109 f = mdb_whatis_search(w, base, size); in mdb_whatis_overlaps()
113 cur = offset = f - w->w_addrs; in mdb_whatis_overlaps()
120 if ((w->w_flags & WHATIS_ALL) || !w->w_addrfound[cur]) in mdb_whatis_overlaps()
127 if (w->w_addrs[cur] < base) in mdb_whatis_overlaps()
130 if (!w->w_addrfound[cur]) in mdb_whatis_overlaps()
134 for (cur = offset + 1; cur < w->w_naddrs; cur++) { in mdb_whatis_overlaps()
135 if ((w->w_addrs[cur] - base) >= size) in mdb_whatis_overlaps()
138 if (!w->w_addrfound[cur]) in mdb_whatis_overlaps()
149 mdb_whatis_match(mdb_whatis_t *w, uintptr_t base, size_t size, uintptr_t *out) in mdb_whatis_match() argument
154 if (w->w_magic != WHATIS_MAGIC) { in mdb_whatis_match()
161 if (w->w_done || size == 0) in mdb_whatis_match()
170 if ((offset = w->w_match_next) != 0 && in mdb_whatis_match()
171 (base != w->w_match_base || size != w->w_match_size)) { in mdb_whatis_match()
175 w->w_match_base, w->w_match_base, w->w_match_size); in mdb_whatis_match()
180 const uintptr_t *f = mdb_whatis_search(w, base, size); in mdb_whatis_match()
185 offset = (f - w->w_addrs); in mdb_whatis_match()
188 while (offset > 0 && w->w_addrs[offset - 1] >= base) in mdb_whatis_match()
191 w->w_match_base = base; in mdb_whatis_match()
192 w->w_match_size = size; in mdb_whatis_match()
195 for (; offset < w->w_naddrs && ((w->w_addrs[offset] - base) < size); in mdb_whatis_match()
198 *out = w->w_addrs[offset]; in mdb_whatis_match()
199 w->w_match_next = offset + 1; in mdb_whatis_match()
201 if (w->w_addrfound[offset]) { in mdb_whatis_match()
203 if (!(w->w_flags & WHATIS_ALL)) in mdb_whatis_match()
210 w->w_found++; in mdb_whatis_match()
211 w->w_addrfound[offset] = 1; in mdb_whatis_match()
214 if (w->w_found == w->w_naddrs && !(w->w_flags & WHATIS_ALL)) in mdb_whatis_match()
215 w->w_done = 1; in mdb_whatis_match()
221 w->w_match_next = 0; in mdb_whatis_match()
222 w->w_match_base = 0; in mdb_whatis_match()
223 w->w_match_size = 0; in mdb_whatis_match()
235 mdb_whatis_report_object(mdb_whatis_t *w, in mdb_whatis_report_object() argument
241 if (mdb_whatis_search(w, addr, 1) == NULL) in mdb_whatis_report_object()
271 mdb_whatis_report_address(mdb_whatis_t *w, uintptr_t addr, in mdb_whatis_report_address() argument
278 if (mdb_whatis_search(w, addr, 1) == NULL) in mdb_whatis_report_address()
296 mdb_whatis_flags(mdb_whatis_t *w) in mdb_whatis_flags() argument
299 return (w->w_flags & WHATIS_PUBLIC); in mdb_whatis_flags()
303 mdb_whatis_done(mdb_whatis_t *w) in mdb_whatis_done() argument
305 return (w->w_done); in mdb_whatis_done()
491 mdb_whatis_t w; in cmd_whatis() local
510 bzero(&w, sizeof (w)); in cmd_whatis()
511 w.w_magic = WHATIS_MAGIC; in cmd_whatis()
517 'b', MDB_OPT_SETBITS, WHATIS_BUFCTL, &w.w_flags, /* hidden */ in cmd_whatis()
519 'a', MDB_OPT_SETBITS, WHATIS_ALL, &w.w_flags, in cmd_whatis()
520 'i', MDB_OPT_SETBITS, WHATIS_IDSPACE, &w.w_flags, in cmd_whatis()
522 'q', MDB_OPT_SETBITS, WHATIS_QUIET, &w.w_flags, in cmd_whatis()
523 'v', MDB_OPT_SETBITS, WHATIS_VERBOSE, &w.w_flags, in cmd_whatis()
549 w.w_addrs = &addr; in cmd_whatis()
550 w.w_naddrs = 1; in cmd_whatis()
558 w.w_addrs = p.pipe_data; in cmd_whatis()
559 w.w_naddrs = p.pipe_len; in cmd_whatis()
562 qsort(w.w_addrs, w.w_naddrs, sizeof (*w.w_addrs), in cmd_whatis()
566 w.w_addrfound = mdb_zalloc(w.w_naddrs * sizeof (*w.w_addrfound), in cmd_whatis()
571 for (idx = 0; idx < w.w_naddrs; idx++) in cmd_whatis()
572 mdb_printf(" %p", w.w_addrs[idx]); in cmd_whatis()
582 if (w.w_flags & WHATIS_IDSPACE) { in cmd_whatis()
590 if (w.w_flags & WHATIS_VERBOSE) in cmd_whatis()
594 if (cur->wcb_func(&w, cur->wcb_arg) != 0) in cmd_whatis()
598 w.w_match_next = 0; in cmd_whatis()
599 w.w_match_base = 0; in cmd_whatis()
600 w.w_match_size = 0; in cmd_whatis()
602 if (w.w_done) in cmd_whatis()
607 for (idx = 0; idx < w.w_naddrs; idx++) { in cmd_whatis()
608 uintptr_t addr = w.w_addrs[idx]; in cmd_whatis()
610 if (w.w_addrfound[idx]) in cmd_whatis()
613 mdb_whatis_report_object(&w, addr, addr, "unknown\n"); in cmd_whatis()