Lines Matching defs:dtp
410 dt_flowindent(dtrace_hdl_t *dtp, dtrace_probedata_t *data, dtrace_epid_t last,
457 pd->dtpd_id == dtp->dt_pdesc[last]->dtpd_id))
479 if ((rval = dt_epid_lookup(dtp, next, &nepd, &npd)) != 0)
514 dt_quantize_total(dtrace_hdl_t *dtp, int64_t datum, long double *total)
518 if (dtp->dt_options[DTRACEOPT_AGGZOOM] == DTRACEOPT_UNSET) {
536 dt_print_quanthdr(dtrace_hdl_t *dtp, FILE *fp, int width)
538 return (dt_printf(dtp, fp, "\n%*s %41s %-9s\n",
544 dt_print_quanthdr_packed(dtrace_hdl_t *dtp, FILE *fp, int width,
567 if (dt_printf(dtp, fp, "\n%*s %*s .",
572 if (dt_printf(dtp, fp, "-") < 0)
576 return (dt_printf(dtp, fp, ". %*s | count\n", -maxwidth, "max"));
593 dt_print_quantline_utf8(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
604 if (dt_printf(dtp, fp, "|") < 0)
608 if (dt_printf(dtp, fp, "%c%c%c",
618 if (dt_printf(dtp, fp, "%c%c%c",
627 return (dt_printf(dtp, fp, "%s %-9lld\n", spaces + i,
632 dt_print_quantline(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
649 if (dtp->dt_encoding == DT_ENCODING_UTF8) {
650 return (dt_print_quantline_utf8(dtp, fp, val,
660 return (dt_printf(dtp, fp, "|%s%s %-9lld\n", ats + len - depth,
668 return (dt_printf(dtp, fp, "%s%s| %-9lld\n", spaces + depth,
687 return (dt_printf(dtp, fp, "%s%s|%*s %-9lld\n", spaces + depth,
690 return (dt_printf(dtp, fp, "%20s|%s%s %-9lld\n", "",
705 dt_print_packed(dtrace_hdl_t *dtp, FILE *fp,
725 if (dtp->dt_encoding == DT_ENCODING_ASCII) {
727 } else if (dtp->dt_encoding == DT_ENCODING_UTF8) {
740 return (dt_printf(dtp, fp, " "));
745 return (dt_printf(dtp, fp, "%c", neg[(uint_t)(val + 0.5)]));
752 return (dt_printf(dtp, fp, "%c%c%c",
760 return (dt_printf(dtp, fp, "%c", ascii[(uint_t)(val + 0.5)]));
764 dt_print_quantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
773 return (dt_set_errno(dtp, EDT_DMISMATCH));
800 dt_quantize_total(dtp, data[i], &total);
803 if (dt_print_quanthdr(dtp, fp, 0) < 0)
807 if (dt_printf(dtp, fp, "%16lld ",
811 if (dt_print_quantline(dtp, fp, data[i], normal, total,
820 dt_print_quantize_packed(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
829 return (dt_set_errno(dtp, EDT_DMISMATCH));
840 if (dt_printf(dtp, fp, " %*lld :", dt_ndigits(minval),
845 dt_quantize_total(dtp, data[i], &total);
850 if (dt_print_packed(dtp, fp, data[i], total) < 0)
854 if (dt_printf(dtp, fp, ": %*lld | %lld\n",
862 dt_print_lquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
873 return (dt_set_errno(dtp, EDT_DMISMATCH));
886 return (dt_set_errno(dtp, EDT_DMISMATCH));
908 dt_quantize_total(dtp, data[i], &total);
911 if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
921 err = dt_printf(dtp, fp, "%16s ", c);
925 err = dt_printf(dtp, fp, "%16s ", c);
927 err = dt_printf(dtp, fp, "%16d ",
931 if (err < 0 || dt_print_quantline(dtp, fp, data[i], normal,
941 dt_print_lquantize_packed(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
953 return (dt_set_errno(dtp, EDT_DMISMATCH));
963 return (dt_set_errno(dtp, EDT_DMISMATCH));
970 err = dt_printf(dtp, fp, "%8s :", c);
972 err = dt_printf(dtp, fp, "%8d :", base + (min - 1) * step);
979 dt_quantize_total(dtp, data[i], &total);
984 if (dt_print_packed(dtp, fp, data[i], total) < 0)
989 return (dt_printf(dtp, fp, ": %-8s | %lld\n", c, (long long)count));
993 dt_print_llquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
1006 return (dt_set_errno(dtp, EDT_DMISMATCH));
1022 return (dt_set_errno(dtp, EDT_DMISMATCH));
1049 dt_quantize_total(dtp, data[i], &total);
1052 if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
1065 if (dt_printf(dtp, fp, "%16s ", c) < 0)
1068 if (dt_print_quantline(dtp, fp, data[0], normal,
1075 if (dt_printf(dtp, fp, "%16lld ", (long long)value) < 0)
1078 if (dt_print_quantline(dtp, fp, data[bin],
1100 if (dt_printf(dtp, fp, "%16s ", c) < 0)
1103 return (dt_print_quantline(dtp, fp, data[bin], normal,
1109 dt_print_average(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
1115 return (dt_printf(dtp, fp, " %16lld", data[0] ?
1121 dt_print_stddev(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
1127 return (dt_printf(dtp, fp, " %16llu", data[0] ?
1133 dt_print_bytes(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
1150 if (dtp->dt_options[DTRACEOPT_RAWBYTES] != DTRACEOPT_UNSET)
1187 return (dt_printf(dtp, fp, "%s", c));
1189 return (dt_printf(dtp, fp, " %s%*s",
1206 return (dt_printf(dtp, fp, " %-*s", width, s));
1210 if (dt_printf(dtp, fp, "\n%*s ", margin, "") < 0)
1214 if (dt_printf(dtp, fp, " %c", "0123456789abcdef"[i]) < 0)
1217 if (dt_printf(dtp, fp, " 0123456789abcdef\n") < 0)
1222 if (dt_printf(dtp, fp, "%*s%5x:", margin, "", i) < 0)
1226 if (dt_printf(dtp, fp, " %02x", (uchar_t)c[j]) < 0)
1231 if (dt_printf(dtp, fp, " ") < 0)
1235 if (dt_printf(dtp, fp, " ") < 0)
1239 if (dt_printf(dtp, fp, "%c",
1244 if (dt_printf(dtp, fp, "\n") < 0)
1252 dt_print_stack(dtrace_hdl_t *dtp, FILE *fp, const char *format,
1261 if (dt_printf(dtp, fp, "\n") < 0)
1267 if (dtp->dt_options[DTRACEOPT_STACKINDENT] != DTRACEOPT_UNSET)
1268 indent = (int)dtp->dt_options[DTRACEOPT_STACKINDENT];
1285 return (dt_set_errno(dtp, EDT_BADSTACKPC));
1293 if (dt_printf(dtp, fp, "%*s", indent, "") < 0)
1296 if (dtrace_lookup_by_addr(dtp, pc, &sym, &dts) == 0) {
1311 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
1320 if (dt_printf(dtp, fp, format, c) < 0)
1323 if (dt_printf(dtp, fp, "\n") < 0)
1331 dt_print_ustack(dtrace_hdl_t *dtp, FILE *fp, const char *format,
1353 if (dt_printf(dtp, fp, "\n") < 0)
1359 if (dtp->dt_options[DTRACEOPT_STACKINDENT] != DTRACEOPT_UNSET)
1360 indent = (int)dtp->dt_options[DTRACEOPT_STACKINDENT];
1369 if (dtp->dt_vector == NULL)
1370 P = dt_proc_grab(dtp, pid, PGRAB_RDONLY | PGRAB_FORCE, 0);
1375 dt_proc_lock(dtp, P); /* lock handle while we perform lookups */
1380 if ((err = dt_printf(dtp, fp, "%*s", indent, "")) < 0)
1423 if ((err = dt_printf(dtp, fp, format, c)) < 0)
1426 if ((err = dt_printf(dtp, fp, "\n")) < 0)
1436 if ((err = dt_printf(dtp, fp, "%*s", indent, "")) < 0)
1441 if ((err = dt_printf(dtp, fp, format, c)) < 0)
1444 if ((err = dt_printf(dtp, fp, "\n")) < 0)
1456 dt_proc_unlock(dtp, P);
1457 dt_proc_release(dtp, P);
1464 dt_print_usym(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr, dtrace_actkind_t act)
1474 if (act == DTRACEACT_USYM && dtp->dt_vector == NULL) {
1477 if ((P = dt_proc_grab(dtp, pid,
1481 dt_proc_lock(dtp, P);
1486 dt_proc_unlock(dtp, P);
1487 dt_proc_release(dtp, P);
1494 } while ((len = dtrace_uaddr2str(dtp, pid, pc, s, n)) > n);
1496 return (dt_printf(dtp, fp, format, s));
1500 dt_print_umod(dtrace_hdl_t *dtp, FILE *fp, const char *format, caddr_t addr)
1518 if (dtp->dt_vector == NULL)
1519 P = dt_proc_grab(dtp, pid, PGRAB_RDONLY | PGRAB_FORCE, 0);
1524 dt_proc_lock(dtp, P); /* lock handle while we perform lookups */
1532 err = dt_printf(dtp, fp, format, c);
1535 dt_proc_unlock(dtp, P);
1536 dt_proc_release(dtp, P);
1543 dt_print_sym(dtrace_hdl_t *dtp, FILE *fp, const char *format, caddr_t addr)
1554 if (dtrace_lookup_by_addr(dtp, pc, &sym, &dts) == 0) {
1563 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
1572 if (dt_printf(dtp, fp, format, c) < 0)
1579 dt_print_mod(dtrace_hdl_t *dtp, FILE *fp, const char *format, caddr_t addr)
1589 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
1595 if (dt_printf(dtp, fp, format, c) < 0)
1602 dt_print_memory(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr)
1604 int quiet = (dtp->dt_options[DTRACEOPT_QUIET] != DTRACEOPT_UNSET);
1607 return (dt_print_bytes(dtp, fp, addr + sizeof(uintptr_t),
1634 dt_normalize(dtrace_hdl_t *dtp, caddr_t base, dtrace_recdesc_t *rec)
1646 return (dt_set_errno(dtp, EDT_BADNORMAL));
1653 return (dt_set_errno(dtp, EDT_BADNORMAL));
1656 return (dt_set_errno(dtp, EDT_BADNORMAL));
1677 return (dt_set_errno(dtp, EDT_BADNORMAL));
1680 (void) dtrace_aggregate_walk(dtp, dt_normalize_agg, &normal);
1741 dt_trunc(dtrace_hdl_t *dtp, caddr_t base, dtrace_recdesc_t *rec)
1756 return (dt_set_errno(dtp, EDT_BADTRUNC));
1763 return (dt_set_errno(dtp, EDT_BADTRUNC));
1766 return (dt_set_errno(dtp, EDT_BADTRUNC));
1787 return (dt_set_errno(dtp, EDT_BADNORMAL));
1800 (void) func(dtp, dt_trunc_agg, &trunc);
1806 dt_print_datum(dtrace_hdl_t *dtp, FILE *fp, dtrace_recdesc_t *rec,
1846 if (dt_print_quanthdr(dtp, fp, width) < 0)
1849 if (dt_print_quanthdr_packed(dtp, fp,
1865 if (dt_printf(dtp, fp, " ") < 0)
1868 return (dt_print_quantline(dtp, fp, val, normal,
1875 return (dt_print_quantize_packed(dtp,
1878 return (dt_print_lquantize_packed(dtp,
1887 return (dt_print_stack(dtp, fp, NULL, addr,
1892 return (dt_print_ustack(dtp, fp, NULL, addr, rec->dtrd_arg));
1896 return (dt_print_usym(dtp, fp, addr, act));
1899 return (dt_print_umod(dtp, fp, NULL, addr));
1902 return (dt_print_sym(dtp, fp, NULL, addr));
1905 return (dt_print_mod(dtp, fp, NULL, addr));
1908 return (dt_print_quantize(dtp, fp, addr, size, normal));
1911 return (dt_print_lquantize(dtp, fp, addr, size, normal));
1914 return (dt_print_llquantize(dtp, fp, addr, size, normal));
1917 return (dt_print_average(dtp, fp, addr, size, normal));
1920 return (dt_print_stddev(dtp, fp, addr, size, normal));
1933 err = dt_printf(dtp, fp, " %*lld", width,
1939 err = dt_printf(dtp, fp, " %*d", width, *((uint32_t *)addr) /
1944 err = dt_printf(dtp, fp, " %*d", width, *((uint16_t *)addr) /
1948 err = dt_printf(dtp, fp, " %*d", width, *((uint8_t *)addr) /
1952 err = dt_print_bytes(dtp, fp, addr, size, width, 0, 0);
1967 dtrace_hdl_t *dtp = pd->dtpa_dtp;
1992 if (dt_print_datum(dtp, fp, rec, addr,
1996 if (dt_buffered_flush(dtp, NULL, rec, aggdata,
2016 if (dt_print_datum(dtp, fp, rec, addr,
2020 if (dt_buffered_flush(dtp, NULL, rec, aggdata,
2029 if (dt_printf(dtp, fp, "\n") < 0)
2033 if (dt_buffered_flush(dtp, NULL, NULL, aggdata,
2068 dt_setopt(dtrace_hdl_t *dtp, const dtrace_probedata_t *data,
2077 (void) dtrace_getopt(dtp, option, &optdata.dtsda_oldval);
2079 if (dtrace_setopt(dtp, option, value) == 0) {
2080 (void) dtrace_getopt(dtp, option, &optdata.dtsda_newval);
2083 optdata.dtsda_handle = dtp;
2085 if ((rval = dt_handle_setopt(dtp, &optdata)) != 0)
2091 errstr = dtrace_errmsg(dtp, dtrace_errno(dtp));
2098 if ((rval = dt_handle_liberr(dtp, data, msg)) == 0)
2105 dt_consume_cpu(dtrace_hdl_t *dtp, FILE *fp, int cpu,
2111 int flow = (dtp->dt_options[DTRACEOPT_FLOWINDENT] != DTRACEOPT_UNSET);
2112 int quiet = (dtp->dt_options[DTRACEOPT_QUIET] != DTRACEOPT_UNSET);
2119 data.dtpda_handle = dtp;
2121 data.dtpda_flow = dtp->dt_flow;
2122 data.dtpda_indent = dtp->dt_indent;
2123 data.dtpda_prefix = dtp->dt_prefix;
2142 if ((rval = dt_epid_lookup(dtp, id, &data.dtpda_edesc,
2150 rval = dt_handle(dtp, &data);
2160 (void) dt_flowindent(dtp, &data, dtp->dt_last_epid,
2174 return (dt_set_errno(dtp, EDT_DIRABORT));
2177 return (dt_set_errno(dtp, EDT_BADRVAL));
2196 (void) dtrace_aggregate_walk(dtp,
2203 (void) dtrace_aggregate_walk(dtp,
2218 return (dt_set_errno(dtp,
2221 if (dt_normalize(dtp,
2229 uint64_t *opts = dtp->dt_options;
2236 return (dt_set_errno(dtp,
2245 return (dt_set_errno(dtp,
2256 rv = dt_setopt(dtp, &data, addr, val);
2271 return (dt_set_errno(dtp,
2274 if (dt_trunc(dtp,
2299 return (dt_set_errno(dtp, EDT_DIRABORT));
2302 return (dt_set_errno(dtp, EDT_BADRVAL));
2307 if (dt_print_stack(dtp, fp, NULL, addr, depth,
2315 if (dt_print_ustack(dtp, fp, NULL,
2322 if (dt_print_sym(dtp, fp, NULL, addr) < 0)
2328 if (dt_print_mod(dtp, fp, NULL, addr) < 0)
2334 if (dt_print_usym(dtp, fp, addr, act) < 0)
2340 if (dt_print_umod(dtp, fp, NULL, addr) < 0)
2346 if (dt_print_memory(dtp, fp, addr) < 0)
2358 if ((fmtdata = dt_format_lookup(dtp,
2377 n = (*func)(dtp, fp, fmtdata, &data,
2397 const char *strdata = dt_strdata_lookup(dtp,
2400 n = dtrace_print(dtp, fp, strdata,
2427 if ((aggvars = dt_alloc(dtp, size)) == NULL)
2446 return (dt_set_errno(dtp,
2460 pd.dtpa_dtp = dtp;
2467 dt_free(dtp, aggvars);
2469 if (dt_printf(dtp, fp, "\n") < 0 ||
2470 dtrace_aggregate_walk_sorted(dtp,
2476 if (dt_printf(dtp, fp, "\n") < 0 ||
2477 dtrace_aggregate_walk_joined(dtp, aggvars,
2479 dt_free(dtp, aggvars);
2483 dt_free(dtp, aggvars);
2493 n = dt_print_bytes(dtp, fp, addr,
2506 n = dt_printf(dtp, fp,
2512 n = dt_printf(dtp, fp, quiet ? "%d" : " %8d",
2517 n = dt_printf(dtp, fp, quiet ? "%d" : " %5d",
2522 n = dt_printf(dtp, fp, quiet ? "%d" : " %3d",
2526 n = dt_print_bytes(dtp, fp, addr,
2535 if (dt_buffered_flush(dtp, &data, rec, NULL, 0) < 0)
2546 dtp->dt_last_epid = id;
2553 dtp->dt_flow = data.dtpda_flow;
2554 dtp->dt_indent = data.dtpda_indent;
2555 dtp->dt_prefix = data.dtpda_prefix;
2565 return (dt_handle_cpudrop(dtp, cpu, DTRACEDROP_PRINCIPAL, drops));
2574 dt_realloc_buf(dtrace_hdl_t *dtp, dtrace_bufdesc_t *buf, int cursize)
2579 char *newdata = dt_alloc(dtp, used + misalign);
2585 dt_free(dtp, buf->dtbd_data);
2598 dt_unring_buf(dtrace_hdl_t *dtp, dtrace_bufdesc_t *buf)
2607 newdata = ndp = dt_alloc(dtp, buf->dtbd_size + misalign);
2623 dt_free(dtp, buf->dtbd_data);
2632 dt_put_buf(dtrace_hdl_t *dtp, dtrace_bufdesc_t *buf)
2634 dt_free(dtp, buf->dtbd_data);
2635 dt_free(dtp, buf);
2644 dt_get_buf(dtrace_hdl_t *dtp, int cpu, dtrace_bufdesc_t **bufp)
2647 dtrace_bufdesc_t *buf = dt_zalloc(dtp, sizeof (*buf));
2653 (void) dtrace_getopt(dtp, "bufsize", &size);
2654 buf->dtbd_data = dt_alloc(dtp, size);
2656 dt_free(dtp, buf);
2663 if (dt_ioctl(dtp, DTRACEIOC_BUFSNAP, buf) == -1) {
2665 if (dt_ioctl(dtp, DTRACEIOC_BUFSNAP, &buf) == -1) {
2676 rval = dt_set_errno(dtp, errno);
2678 dt_put_buf(dtp, buf);
2682 error = dt_unring_buf(dtp, buf);
2684 dt_put_buf(dtp, buf);
2687 dt_realloc_buf(dtp, buf, size);
2756 dt_consume_begin(dtrace_hdl_t *dtp, FILE *fp,
2782 processorid_t cpu = dtp->dt_beganon;
2787 dtp->dt_beganon = -1;
2789 if (dt_get_buf(dtp, cpu, &buf) != 0)
2794 if (!dtp->dt_stopped || buf->dtbd_cpu != dtp->dt_endedon) {
2800 rval = dt_consume_cpu(dtp, fp, cpu, buf, B_FALSE,
2802 dt_put_buf(dtp, buf);
2815 begin.dtbgn_errhdlr = dtp->dt_errhdlr;
2816 begin.dtbgn_errarg = dtp->dt_errarg;
2817 dtp->dt_errhdlr = dt_consume_begin_error;
2818 dtp->dt_errarg = &begin;
2820 rval = dt_consume_cpu(dtp, fp, cpu, buf, B_FALSE,
2823 dtp->dt_errhdlr = begin.dtbgn_errhdlr;
2824 dtp->dt_errarg = begin.dtbgn_errarg;
2827 dt_put_buf(dtp, buf);
2832 max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
2839 if (dt_get_buf(dtp, i, &nbuf) != 0) {
2840 dt_put_buf(dtp, buf);
2846 rval = dt_consume_cpu(dtp, fp, i, nbuf, B_FALSE,
2848 dt_put_buf(dtp, nbuf);
2850 dt_put_buf(dtp, buf);
2864 assert(begin.dtbgn_errhdlr == dtp->dt_errhdlr);
2865 assert(begin.dtbgn_errarg == dtp->dt_errarg);
2866 dtp->dt_errhdlr = dt_consume_begin_error;
2867 dtp->dt_errarg = &begin;
2869 rval = dt_consume_cpu(dtp, fp, cpu, buf, B_FALSE,
2872 dtp->dt_errhdlr = begin.dtbgn_errhdlr;
2873 dtp->dt_errarg = begin.dtbgn_errarg;
2901 dtrace_consume(dtrace_hdl_t *dtp, FILE *fp,
2907 dtrace_optval_t interval = dtp->dt_options[DTRACEOPT_SWITCHRATE];
2910 if (dtp->dt_lastswitch != 0) {
2911 if (now - dtp->dt_lastswitch < interval)
2914 dtp->dt_lastswitch += interval;
2916 dtp->dt_lastswitch = now;
2919 if (!dtp->dt_active)
2920 return (dt_set_errno(dtp, EINVAL));
2923 max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
2931 if (dtp->dt_options[DTRACEOPT_TEMPORAL] == DTRACEOPT_UNSET) {
2942 if (dtp->dt_active && dtp->dt_beganon != -1 &&
2943 (rval = dt_consume_begin(dtp, fp, pf, rf, arg)) != 0)
2954 if (dtp->dt_stopped && (i == dtp->dt_endedon))
2957 if (dt_get_buf(dtp, i, &buf) != 0)
2962 dtp->dt_flow = 0;
2963 dtp->dt_indent = 0;
2964 dtp->dt_prefix = NULL;
2965 rval = dt_consume_cpu(dtp, fp, i,
2967 dt_put_buf(dtp, buf);
2971 if (dtp->dt_stopped) {
2974 if (dt_get_buf(dtp, dtp->dt_endedon, &buf) != 0)
2979 rval = dt_consume_cpu(dtp, fp, dtp->dt_endedon,
2981 dt_put_buf(dtp, buf);
3009 if (dtp->dt_bufq == NULL) {
3010 dtp->dt_bufq = dt_pq_init(dtp, max_ncpus * 2,
3012 if (dtp->dt_bufq == NULL) /* ENOMEM */
3017 (void) dtrace_getopt(dtp, "bufsize", &size);
3021 if (dt_get_buf(dtp, i, &buf) != 0)
3028 dt_pq_insert(dtp->dt_bufq, buf);
3036 dtrace_bufdesc_t *buf = dt_pq_pop(dtp->dt_bufq);
3042 timestamp = dt_buf_oldest(buf, dtp);
3043 assert(timestamp >= dtp->dt_last_timestamp);
3044 dtp->dt_last_timestamp = timestamp;
3053 dt_put_buf(dtp, buf);
3055 !dtp->dt_stopped)
3060 if ((rval = dt_consume_cpu(dtp, fp,
3063 dt_pq_insert(dtp->dt_bufq, buf);
3069 int error = dt_handle_cpudrop(dtp, i,
3080 while (buf = dt_pq_walk(dtp->dt_bufq, &cookie))
3081 dt_realloc_buf(dtp, buf, buf->dtbd_size);