Lines Matching defs:dtp

51 #define	dt_format_sym(dtp, addr) dt_print_sym((dtp), NULL, NULL, addr)
450 dt_flowindent(dtrace_hdl_t *dtp, dtrace_probedata_t *data, dtrace_epid_t last,
497 pd->dtpd_id == dtp->dt_pdesc[last]->dtpd_id))
519 if ((rval = dt_epid_lookup(dtp, next, &nepd, &npd)) != 0)
554 dt_quantize_total(dtrace_hdl_t *dtp, int64_t datum, long double *total)
558 if (dtp->dt_options[DTRACEOPT_AGGZOOM] == DTRACEOPT_UNSET) {
576 dt_print_quanthdr(dtrace_hdl_t *dtp, FILE *fp, int width)
578 return (dt_printf(dtp, fp, "\n%*s %41s %-9s\n",
584 dt_print_quanthdr_packed(dtrace_hdl_t *dtp, FILE *fp, int width,
607 if (dt_printf(dtp, fp, "\n%*s %*s .",
612 if (dt_printf(dtp, fp, "-") < 0)
616 return (dt_printf(dtp, fp, ". %*s | count\n", -maxwidth, "max"));
633 dt_print_quantline_utf8(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
644 if (dt_printf(dtp, fp, "|") < 0)
648 if (dt_printf(dtp, fp, "%c%c%c",
658 if (dt_printf(dtp, fp, "%c%c%c",
667 return (dt_printf(dtp, fp, "%s %-9lld\n", spaces + i,
672 dt_print_quantline(dtrace_hdl_t *dtp, FILE *fp, int64_t val,
689 if (dtp->dt_encoding == DT_ENCODING_UTF8) {
690 return (dt_print_quantline_utf8(dtp, fp, val,
700 return (dt_printf(dtp, fp, "|%s%s %-9lld\n", ats + len - depth,
708 return (dt_printf(dtp, fp, "%s%s| %-9lld\n", spaces + depth,
727 return (dt_printf(dtp, fp, "%s%s|%*s %-9lld\n", spaces + depth,
730 return (dt_printf(dtp, fp, "%20s|%s%s %-9lld\n", "",
745 dt_print_packed(dtrace_hdl_t *dtp, FILE *fp,
765 if (dtp->dt_encoding == DT_ENCODING_ASCII) {
767 } else if (dtp->dt_encoding == DT_ENCODING_UTF8) {
780 return (dt_printf(dtp, fp, " "));
785 return (dt_printf(dtp, fp, "%c", neg[(uint_t)(val + 0.5)]));
792 return (dt_printf(dtp, fp, "%c%c%c",
800 return (dt_printf(dtp, fp, "%c", ascii[(uint_t)(val + 0.5)]));
804 dt_format_quantize_prepare(dtrace_hdl_t *dtp, const void *addr, size_t size,
811 (void) dt_set_errno(dtp, EDT_DMISMATCH);
843 dt_format_quantize(dtrace_hdl_t *dtp, const void *addr, size_t size,
850 data = dt_format_quantize_prepare(dtp, addr, size, &args);
872 dt_print_quantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
881 data = dt_format_quantize_prepare(dtp, addr, size, &args);
892 dt_quantize_total(dtp, data[i], &total);
895 if (dt_print_quanthdr(dtp, fp, 0) < 0)
899 if (dt_printf(dtp, fp, "%16lld ",
903 if (dt_print_quantline(dtp, fp, data[i], normal, total,
912 dt_print_quantize_packed(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
921 return (dt_set_errno(dtp, EDT_DMISMATCH));
932 if (dt_printf(dtp, fp, " %*lld :", dt_ndigits(minval),
937 dt_quantize_total(dtp, data[i], &total);
942 if (dt_print_packed(dtp, fp, data[i], total) < 0)
946 if (dt_printf(dtp, fp, ": %*lld | %lld\n",
954 dt_format_lquantize_prepare(dtrace_hdl_t *dtp, const void *addr, size_t size,
963 (void) dt_set_errno(dtp, EDT_DMISMATCH);
978 (void) dt_set_errno(dtp, EDT_DMISMATCH);
1008 dt_format_lquantize(dtrace_hdl_t *dtp, const void *addr, size_t size,
1016 data = dt_format_lquantize_prepare(dtp, addr, size, &args);
1051 dt_print_lquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
1062 data = dt_format_lquantize_prepare(dtp, addr, size, &args);
1076 dt_quantize_total(dtp, data[i], &total);
1079 if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
1089 err = dt_printf(dtp, fp, "%16s ", c);
1093 err = dt_printf(dtp, fp, "%16s ", c);
1095 err = dt_printf(dtp, fp, "%16d ",
1099 if (err < 0 || dt_print_quantline(dtp, fp, data[i], normal,
1109 dt_print_lquantize_packed(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
1121 return (dt_set_errno(dtp, EDT_DMISMATCH));
1131 return (dt_set_errno(dtp, EDT_DMISMATCH));
1138 err = dt_printf(dtp, fp, "%8s :", c);
1140 err = dt_printf(dtp, fp, "%8d :", base + (min - 1) * step);
1147 dt_quantize_total(dtp, data[i], &total);
1152 if (dt_print_packed(dtp, fp, data[i], total) < 0)
1157 return (dt_printf(dtp, fp, ": %-8s | %lld\n", c, (long long)count));
1161 dt_format_llquantize_prepare(dtrace_hdl_t *dtp, const void *addr, size_t size,
1171 (void) dt_set_errno(dtp, EDT_DMISMATCH);
1189 (void) dt_set_errno(dtp, EDT_DMISMATCH);
1237 dt_format_llquantize(dtrace_hdl_t *dtp, const void *addr, size_t size,
1248 data = dt_format_llquantize_prepare(dtp, addr, size, &args);
1312 dt_print_llquantize(dtrace_hdl_t *dtp, FILE *fp, const void *addr,
1325 data = dt_format_llquantize_prepare(dtp, addr, size, &args);
1345 dt_quantize_total(dtp, data[i], &total);
1348 if (dt_printf(dtp, fp, "\n%16s %41s %-9s\n", "value",
1355 if (dt_printf(dtp, fp, "%16s ", c) < 0)
1358 if (dt_print_quantline(dtp, fp, data[0], normal,
1365 if (dt_printf(dtp, fp, "%16lld ", (long long)value) < 0)
1368 if (dt_print_quantline(dtp, fp, data[bin],
1390 if (dt_printf(dtp, fp, "%16s ", c) < 0)
1393 return (dt_print_quantline(dtp, fp, data[bin], normal,
1398 dt_format_average(dtrace_hdl_t *dtp, caddr_t addr, size_t size, uint64_t normal)
1409 dt_print_average(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
1415 return (dt_printf(dtp, fp, " %16lld", data[0] ?
1420 dt_format_stddev(dtrace_hdl_t *dtp, caddr_t addr, size_t size, uint64_t normal)
1431 dt_print_stddev(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
1437 return (dt_printf(dtp, fp, " %16llu", data[0] ?
1443 dt_print_bytes(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr,
1460 if (dtp->dt_options[DTRACEOPT_RAWBYTES] != DTRACEOPT_UNSET)
1496 return (dt_printf(dtp, fp, "%s", c));
1498 return (dt_printf(dtp, fp, " %s%*s",
1515 return (dt_printf(dtp, fp, " %-*s", width, s));
1519 if (dt_printf(dtp, fp, "\n%*s ", margin, "") < 0)
1523 if (dt_printf(dtp, fp, " %c", "0123456789abcdef"[i]) < 0)
1526 if (dt_printf(dtp, fp, " 0123456789abcdef\n") < 0)
1531 if (dt_printf(dtp, fp, "%*s%5x:", margin, "", i) < 0)
1535 if (dt_printf(dtp, fp, " %02x", (uchar_t)c[j]) < 0)
1540 if (dt_printf(dtp, fp, " ") < 0)
1544 if (dt_printf(dtp, fp, " ") < 0)
1548 if (dt_printf(dtp, fp, "%c",
1553 if (dt_printf(dtp, fp, "\n") < 0)
1561 dt_format_stack(dtrace_hdl_t *dtp, caddr_t addr, int depth, int size)
1580 return (dt_set_errno(dtp, EDT_BADSTACKPC));
1589 if (dtrace_lookup_by_addr(dtp, pc, &sym, &dts) == 0) {
1609 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
1627 dt_format_ustack(dtrace_hdl_t *dtp, caddr_t addr, uint64_t arg)
1652 if (dtp->dt_vector == NULL)
1653 P = dt_proc_grab(dtp, pid, PGRAB_RDONLY | PGRAB_FORCE, 0);
1658 dt_proc_lock(dtp, P); /* lock handle while we perform lookups */
1732 dt_proc_unlock(dtp, P);
1733 dt_proc_release(dtp, P);
1740 dt_print_stack(dtrace_hdl_t *dtp, FILE *fp, const char *format,
1749 if (dt_printf(dtp, fp, "\n") < 0)
1755 if (dtp->dt_options[DTRACEOPT_STACKINDENT] != DTRACEOPT_UNSET)
1756 indent = (int)dtp->dt_options[DTRACEOPT_STACKINDENT];
1773 return (dt_set_errno(dtp, EDT_BADSTACKPC));
1781 if (dt_printf(dtp, fp, "%*s", indent, "") < 0)
1784 if (dtrace_lookup_by_addr(dtp, pc, &sym, &dts) == 0) {
1799 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
1808 if (dt_printf(dtp, fp, format, c) < 0)
1811 if (dt_printf(dtp, fp, "\n") < 0)
1819 dt_print_ustack(dtrace_hdl_t *dtp, FILE *fp, const char *format,
1841 if (dt_printf(dtp, fp, "\n") < 0)
1847 if (dtp->dt_options[DTRACEOPT_STACKINDENT] != DTRACEOPT_UNSET)
1848 indent = (int)dtp->dt_options[DTRACEOPT_STACKINDENT];
1857 if (dtp->dt_vector == NULL)
1858 P = dt_proc_grab(dtp, pid, PGRAB_RDONLY | PGRAB_FORCE, 0);
1863 dt_proc_lock(dtp, P); /* lock handle while we perform lookups */
1868 if ((err = dt_printf(dtp, fp, "%*s", indent, "")) < 0)
1911 if ((err = dt_printf(dtp, fp, format, c)) < 0)
1914 if ((err = dt_printf(dtp, fp, "\n")) < 0)
1924 if ((err = dt_printf(dtp, fp, "%*s", indent, "")) < 0)
1929 if ((err = dt_printf(dtp, fp, format, c)) < 0)
1932 if ((err = dt_printf(dtp, fp, "\n")) < 0)
1944 dt_proc_unlock(dtp, P);
1945 dt_proc_release(dtp, P);
1952 dt_format_usym(dtrace_hdl_t *dtp, caddr_t addr, dtrace_actkind_t act)
1959 if (act == DTRACEACT_USYM && dtp->dt_vector == NULL) {
1962 if ((P = dt_proc_grab(dtp, pid,
1966 dt_proc_lock(dtp, P);
1971 dt_proc_unlock(dtp, P);
1972 dt_proc_release(dtp, P);
1979 } while ((len = dtrace_uaddr2str(dtp, pid, pc, s, n)) > n);
1987 dt_print_usym(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr, dtrace_actkind_t act)
1997 if (act == DTRACEACT_USYM && dtp->dt_vector == NULL) {
2000 if ((P = dt_proc_grab(dtp, pid,
2004 dt_proc_lock(dtp, P);
2009 dt_proc_unlock(dtp, P);
2010 dt_proc_release(dtp, P);
2017 } while ((len = dtrace_uaddr2str(dtp, pid, pc, s, n)) > n);
2019 return (dt_printf(dtp, fp, format, s));
2023 dt_format_umod(dtrace_hdl_t *dtp, caddr_t addr)
2036 if (dtp->dt_vector == NULL)
2037 P = dt_proc_grab(dtp, pid, PGRAB_RDONLY | PGRAB_FORCE, 0);
2042 dt_proc_lock(dtp, P); /* lock handle while we perform lookups */
2051 dt_proc_unlock(dtp, P);
2052 dt_proc_release(dtp, P);
2059 dt_print_umod(dtrace_hdl_t *dtp, FILE *fp, const char *format, caddr_t addr)
2077 if (dtp->dt_vector == NULL)
2078 P = dt_proc_grab(dtp, pid, PGRAB_RDONLY | PGRAB_FORCE, 0);
2083 dt_proc_lock(dtp, P); /* lock handle while we perform lookups */
2091 err = dt_printf(dtp, fp, format, c);
2094 dt_proc_unlock(dtp, P);
2095 dt_proc_release(dtp, P);
2102 dt_print_sym(dtrace_hdl_t *dtp, FILE *fp, const char *format, caddr_t addr)
2113 if (dtrace_lookup_by_addr(dtp, pc, &sym, &dts) == 0) {
2114 if (dtp->dt_oformat)
2127 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
2128 if (dtp->dt_oformat)
2137 if (dtp->dt_oformat)
2146 if (dtp->dt_oformat != 0 && dt_printf(dtp, fp, format, c) < 0)
2153 dt_format_mod(dtrace_hdl_t *dtp, caddr_t addr)
2159 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
2169 dt_print_mod(dtrace_hdl_t *dtp, FILE *fp, const char *format, caddr_t addr)
2179 if (dtrace_lookup_by_addr(dtp, pc, NULL, &dts) == 0) {
2185 if (dt_printf(dtp, fp, format, c) < 0)
2192 dt_format_bytes_get(dtrace_hdl_t *dtp, caddr_t addr, size_t nbytes)
2194 char *s = dt_alloc(dtp, nbytes * 2 + 2 + 1); /* 2 bytes per byte + 0x + '\0' */
2243 dt_format_memory(dtrace_hdl_t *dtp, caddr_t addr)
2249 s = dt_format_bytes_get(dtp, addr + sizeof(uintptr_t), nbytes);
2254 dt_free(dtp, s);
2260 dt_print_memory(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr)
2262 int quiet = (dtp->dt_options[DTRACEOPT_QUIET] != DTRACEOPT_UNSET);
2265 return (dt_print_bytes(dtp, fp, addr + sizeof(uintptr_t),
2292 dt_normalize(dtrace_hdl_t *dtp, caddr_t base, dtrace_recdesc_t *rec)
2304 return (dt_set_errno(dtp, EDT_BADNORMAL));
2311 return (dt_set_errno(dtp, EDT_BADNORMAL));
2314 return (dt_set_errno(dtp, EDT_BADNORMAL));
2335 return (dt_set_errno(dtp, EDT_BADNORMAL));
2338 (void) dtrace_aggregate_walk(dtp, dt_normalize_agg, &normal);
2399 dt_trunc(dtrace_hdl_t *dtp, caddr_t base, dtrace_recdesc_t *rec)
2414 return (dt_set_errno(dtp, EDT_BADTRUNC));
2421 return (dt_set_errno(dtp, EDT_BADTRUNC));
2424 return (dt_set_errno(dtp, EDT_BADTRUNC));
2445 return (dt_set_errno(dtp, EDT_BADNORMAL));
2458 (void) func(dtp, dt_trunc_agg, &trunc);
2464 dt_format_datum(dtrace_hdl_t *dtp, dtrace_recdesc_t *rec, caddr_t addr,
2479 return (dt_format_stack(dtp, addr, rec->dtrd_arg,
2484 return (dt_format_ustack(dtp, addr, rec->dtrd_arg));
2488 return (dt_format_usym(dtp, addr, act));
2491 return (dt_format_umod(dtp, addr));
2494 return (dt_format_sym(dtp, addr));
2496 return (dt_format_mod(dtp, addr));
2499 return (dt_format_quantize(dtp, addr, size, normal));
2502 return (dt_format_lquantize(dtp, addr, size, normal));
2505 return (dt_format_llquantize(dtp, addr, size, normal));
2508 return (dt_format_average(dtp, addr, size, normal));
2511 return (dt_format_stddev(dtp, addr, size, normal));
2535 s = dt_format_bytes_get(dtp, addr, size);
2540 dt_free(dtp, s);
2548 dt_print_datum(dtrace_hdl_t *dtp, FILE *fp, dtrace_recdesc_t *rec,
2588 if (dt_print_quanthdr(dtp, fp, width) < 0)
2591 if (dt_print_quanthdr_packed(dtp, fp,
2607 if (dt_printf(dtp, fp, " ") < 0)
2610 return (dt_print_quantline(dtp, fp, val, normal,
2617 return (dt_print_quantize_packed(dtp,
2620 return (dt_print_lquantize_packed(dtp,
2629 return (dt_print_stack(dtp, fp, NULL, addr,
2634 return (dt_print_ustack(dtp, fp, NULL, addr, rec->dtrd_arg));
2638 return (dt_print_usym(dtp, fp, addr, act));
2641 return (dt_print_umod(dtp, fp, NULL, addr));
2644 return (dt_print_sym(dtp, fp, NULL, addr));
2647 return (dt_print_mod(dtp, fp, NULL, addr));
2650 return (dt_print_quantize(dtp, fp, addr, size, normal));
2653 return (dt_print_lquantize(dtp, fp, addr, size, normal));
2656 return (dt_print_llquantize(dtp, fp, addr, size, normal));
2659 return (dt_print_average(dtp, fp, addr, size, normal));
2662 return (dt_print_stddev(dtp, fp, addr, size, normal));
2675 err = dt_printf(dtp, fp, " %*lld", width,
2681 err = dt_printf(dtp, fp, " %*d", width, *((uint32_t *)addr) /
2686 err = dt_printf(dtp, fp, " %*d", width, *((uint16_t *)addr) /
2690 err = dt_printf(dtp, fp, " %*d", width, *((uint8_t *)addr) /
2694 err = dt_print_bytes(dtp, fp, addr, size, width, 0, 0);
2708 dtrace_hdl_t *dtp = pd->dtpa_dtp;
2738 if (dt_format_datum(dtp, rec, addr,
2746 if (dt_buffered_flush(dtp, NULL, rec, aggdata,
2788 if (dt_format_datum(dtp, rec, addr, size,
2794 if (dt_buffered_flush(dtp, NULL, rec, aggdata,
2804 if (dt_buffered_flush(dtp, NULL, NULL, aggdata,
2822 dtrace_hdl_t *dtp = pd->dtpa_dtp;
2847 if (dt_print_datum(dtp, fp, rec, addr,
2851 if (dt_buffered_flush(dtp, NULL, rec, aggdata,
2871 if (dt_print_datum(dtp, fp, rec, addr,
2875 if (dt_buffered_flush(dtp, NULL, rec, aggdata,
2884 if (dt_printf(dtp, fp, "\n") < 0)
2888 if (dt_buffered_flush(dtp, NULL, NULL, aggdata,
2950 dt_setopt(dtrace_hdl_t *dtp, const dtrace_probedata_t *data,
2959 (void) dtrace_getopt(dtp, option, &optdata.dtsda_oldval);
2961 if (dtrace_setopt(dtp, option, value) == 0) {
2962 (void) dtrace_getopt(dtp, option, &optdata.dtsda_newval);
2965 optdata.dtsda_handle = dtp;
2967 if ((rval = dt_handle_setopt(dtp, &optdata)) != 0)
2973 errstr = dtrace_errmsg(dtp, dtrace_errno(dtp));
2980 if ((rval = dt_handle_liberr(dtp, data, msg)) == 0)
2990 dt_oformat_agg_sorted(dtrace_hdl_t *dtp, dtrace_aggregate_f *func,
2995 r = dtrace_aggregate_walk_sorted(dtp, dt_format_agg, pd);
3014 dt_consume_cpu(dtrace_hdl_t *dtp, FILE *fp, int cpu,
3020 int flow = (dtp->dt_options[DTRACEOPT_FLOWINDENT] != DTRACEOPT_UNSET);
3021 int quiet = (dtp->dt_options[DTRACEOPT_QUIET] != DTRACEOPT_UNSET);
3029 data.dtpda_handle = dtp;
3031 data.dtpda_flow = dtp->dt_flow;
3032 data.dtpda_indent = dtp->dt_indent;
3033 data.dtpda_prefix = dtp->dt_prefix;
3052 if ((rval = dt_epid_lookup(dtp, id, &data.dtpda_edesc,
3062 rval = dt_handle(dtp, &data);
3072 (void) dt_flowindent(dtp, &data, dtp->dt_last_epid,
3075 if (dtp->dt_oformat)
3088 return (dt_set_errno(dtp, EDT_DIRABORT));
3091 return (dt_set_errno(dtp, EDT_BADRVAL));
3094 if (dtp->dt_oformat)
3116 (void) dtrace_aggregate_walk(dtp,
3123 (void) dtrace_aggregate_walk(dtp,
3138 return (dt_set_errno(dtp,
3141 if (dt_normalize(dtp,
3149 uint64_t *opts = dtp->dt_options;
3156 return (dt_set_errno(dtp,
3165 return (dt_set_errno(dtp,
3176 rv = dt_setopt(dtp, &data, addr, val);
3191 return (dt_set_errno(dtp,
3194 if (dt_trunc(dtp,
3219 return (dt_set_errno(dtp, EDT_DIRABORT));
3222 return (dt_set_errno(dtp, EDT_BADRVAL));
3224 if (dtp->dt_oformat && rec->dtrd_size > 0)
3229 if (dtp->dt_oformat) {
3230 if (dt_format_stack(dtp, addr, depth,
3236 if (dt_print_stack(dtp,
3246 if (dtp->dt_oformat) {
3247 if (dt_format_ustack(dtp, addr,
3253 if (dt_print_ustack(dtp, fp, NULL,
3261 if (dtp->dt_oformat) {
3262 if (dt_format_sym(dtp, addr) < 0) {
3267 if (dt_print_sym(dtp, fp, NULL, addr) < 0)
3274 if (dtp->dt_oformat) {
3275 if (dt_format_mod(dtp, addr) < 0) {
3280 if (dt_print_mod(dtp, fp, NULL, addr) < 0)
3287 if (dtp->dt_oformat) {
3288 if (dt_format_usym(dtp, addr, act) < 0) {
3293 if (dt_print_usym(dtp, fp, addr, act) < 0)
3300 if (dtp->dt_oformat) {
3301 if (dt_format_umod(dtp, addr) < 0) {
3306 if (dt_print_umod(dtp, fp, NULL, addr) < 0)
3313 if (dtp->dt_oformat) {
3314 if (dt_format_memory(dtp, addr) < 0) {
3319 if (dt_print_memory(dtp, fp, addr) < 0)
3325 if (dtp->dt_oformat == DTRACE_OFORMAT_TEXT &&
3333 if ((fmtdata = dt_format_lookup(dtp,
3352 n = (*func)(dtp, fp, fmtdata, &data,
3369 if (dtp->dt_oformat && act == DTRACEACT_PRINTF &&
3372 if ((fmtdata = dt_format_lookup(dtp,
3376 n = dtrace_sprintf(dtp, fp, fmtdata, rec,
3386 xo_emit("{:message/%s}", dtp->dt_sprintf_buf);
3420 const char *strdata = dt_strdata_lookup(dtp,
3423 if (dtp->dt_oformat)
3424 n = dtrace_format_print(dtp, fp,
3428 n = dtrace_print(dtp, fp,
3441 if (dtp->dt_oformat)
3460 if ((aggvars = dt_alloc(dtp, size)) == NULL) {
3461 if (dtp->dt_oformat)
3482 if (dtp->dt_oformat)
3485 return (dt_set_errno(dtp,
3499 pd.dtpa_dtp = dtp;
3504 if (dtp->dt_oformat)
3508 dt_free(dtp, aggvars);
3510 if (dtp->dt_oformat) {
3511 n = dt_oformat_agg_sorted(dtp,
3516 if (dt_printf(dtp, fp, "\n") < 0 ||
3517 dtrace_aggregate_walk_sorted(dtp,
3522 if (dtp->dt_oformat)
3527 if (dtp->dt_oformat) {
3528 if (dtrace_aggregate_walk_joined(dtp,
3533 dt_free(dtp, aggvars);
3537 if (dt_printf(dtp, fp, "\n") < 0 ||
3538 dtrace_aggregate_walk_joined(dtp,
3541 dt_free(dtp, aggvars);
3546 if (dtp->dt_oformat)
3548 dt_free(dtp, aggvars);
3558 if (dtp->dt_oformat) {
3561 s = dt_format_bytes_get(dtp, addr,
3564 dt_free(dtp, s);
3566 n = dt_print_bytes(dtp, fp, addr,
3580 if (dtp->dt_oformat) {
3585 n = dt_printf(dtp, fp,
3591 if (dtp->dt_oformat) {
3596 n = dt_printf(dtp, fp,
3602 if (dtp->dt_oformat) {
3607 n = dt_printf(dtp, fp,
3613 if (dtp->dt_oformat) {
3618 n = dt_printf(dtp, fp,
3623 if (dtp->dt_oformat && rec->dtrd_size > 0) {
3626 s = dt_format_bytes_get(dtp, addr,
3629 dt_free(dtp, s);
3632 n = dt_print_bytes(dtp, fp, addr,
3638 if (dtp->dt_oformat && rec->dtrd_size > 0)
3645 if (dt_buffered_flush(dtp, &data, rec, NULL, 0) < 0)
3656 dtp->dt_last_epid = id;
3658 if (dtp->dt_oformat) {
3669 dtp->dt_flow = data.dtpda_flow;
3670 dtp->dt_indent = data.dtpda_indent;
3671 dtp->dt_prefix = data.dtpda_prefix;
3682 dt_oformat_drop(dtp, cpu);
3683 rval = dt_handle_cpudrop(dtp, cpu, DTRACEDROP_PRINCIPAL, drops);
3695 dt_realloc_buf(dtrace_hdl_t *dtp, dtrace_bufdesc_t *buf, int cursize)
3700 char *newdata = dt_alloc(dtp, used + misalign);
3706 dt_free(dtp, buf->dtbd_data);
3719 dt_unring_buf(dtrace_hdl_t *dtp, dtrace_bufdesc_t *buf)
3728 newdata = ndp = dt_alloc(dtp, buf->dtbd_size + misalign);
3744 dt_free(dtp, buf->dtbd_data);
3753 dt_put_buf(dtrace_hdl_t *dtp, dtrace_bufdesc_t *buf)
3755 dt_free(dtp, buf->dtbd_data);
3756 dt_free(dtp, buf);
3765 dt_get_buf(dtrace_hdl_t *dtp, int cpu, dtrace_bufdesc_t **bufp)
3768 dtrace_bufdesc_t *buf = dt_zalloc(dtp, sizeof (*buf));
3774 (void) dtrace_getopt(dtp, "bufsize", &size);
3775 buf->dtbd_data = dt_alloc(dtp, size);
3777 dt_free(dtp, buf);
3784 if (dt_ioctl(dtp, DTRACEIOC_BUFSNAP, buf) == -1) {
3786 if (dt_ioctl(dtp, DTRACEIOC_BUFSNAP, &buf) == -1) {
3797 rval = dt_set_errno(dtp, errno);
3799 dt_put_buf(dtp, buf);
3803 error = dt_unring_buf(dtp, buf);
3805 dt_put_buf(dtp, buf);
3808 dt_realloc_buf(dtp, buf, size);
3877 dt_consume_begin(dtrace_hdl_t *dtp, FILE *fp,
3903 processorid_t cpu = dtp->dt_beganon;
3908 dtp->dt_beganon = -1;
3910 if (dt_get_buf(dtp, cpu, &buf) != 0)
3915 if (!dtp->dt_stopped || buf->dtbd_cpu != dtp->dt_endedon) {
3921 rval = dt_consume_cpu(dtp, fp, cpu, buf, B_FALSE,
3923 dt_put_buf(dtp, buf);
3936 begin.dtbgn_errhdlr = dtp->dt_errhdlr;
3937 begin.dtbgn_errarg = dtp->dt_errarg;
3938 dtp->dt_errhdlr = dt_consume_begin_error;
3939 dtp->dt_errarg = &begin;
3941 rval = dt_consume_cpu(dtp, fp, cpu, buf, B_FALSE,
3944 dtp->dt_errhdlr = begin.dtbgn_errhdlr;
3945 dtp->dt_errarg = begin.dtbgn_errarg;
3948 dt_put_buf(dtp, buf);
3953 max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
3960 if (dt_get_buf(dtp, i, &nbuf) != 0) {
3961 dt_put_buf(dtp, buf);
3967 rval = dt_consume_cpu(dtp, fp, i, nbuf, B_FALSE,
3969 dt_put_buf(dtp, nbuf);
3971 dt_put_buf(dtp, buf);
3985 assert(begin.dtbgn_errhdlr == dtp->dt_errhdlr);
3986 assert(begin.dtbgn_errarg == dtp->dt_errarg);
3987 dtp->dt_errhdlr = dt_consume_begin_error;
3988 dtp->dt_errarg = &begin;
3990 rval = dt_consume_cpu(dtp, fp, cpu, buf, B_FALSE,
3993 dtp->dt_errhdlr = begin.dtbgn_errhdlr;
3994 dtp->dt_errarg = begin.dtbgn_errarg;
4022 dtrace_consume(dtrace_hdl_t *dtp, FILE *fp,
4028 dtrace_optval_t interval = dtp->dt_options[DTRACEOPT_SWITCHRATE];
4031 if (dtp->dt_lastswitch != 0) {
4032 if (now - dtp->dt_lastswitch < interval)
4035 dtp->dt_lastswitch += interval;
4037 dtp->dt_lastswitch = now;
4040 if (!dtp->dt_active)
4041 return (dt_set_errno(dtp, EINVAL));
4044 max_ncpus = dt_sysconf(dtp, _SC_CPUID_MAX) + 1;
4052 if (dtp->dt_options[DTRACEOPT_TEMPORAL] == DTRACEOPT_UNSET) {
4063 if (dtp->dt_active && dtp->dt_beganon != -1 &&
4064 (rval = dt_consume_begin(dtp, fp, pf, rf, arg)) != 0)
4075 if (dtp->dt_stopped && (i == dtp->dt_endedon))
4078 if (dt_get_buf(dtp, i, &buf) != 0)
4083 dtp->dt_flow = 0;
4084 dtp->dt_indent = 0;
4085 dtp->dt_prefix = NULL;
4086 rval = dt_consume_cpu(dtp, fp, i,
4088 dt_put_buf(dtp, buf);
4092 if (dtp->dt_stopped) {
4095 if (dt_get_buf(dtp, dtp->dt_endedon, &buf) != 0)
4100 rval = dt_consume_cpu(dtp, fp, dtp->dt_endedon,
4102 dt_put_buf(dtp, buf);
4130 if (dtp->dt_bufq == NULL) {
4131 dtp->dt_bufq = dt_pq_init(dtp, max_ncpus * 2,
4133 if (dtp->dt_bufq == NULL) /* ENOMEM */
4138 (void) dtrace_getopt(dtp, "bufsize", &size);
4142 if (dt_get_buf(dtp, i, &buf) != 0)
4149 dt_pq_insert(dtp->dt_bufq, buf);
4157 dtrace_bufdesc_t *buf = dt_pq_pop(dtp->dt_bufq);
4163 timestamp = dt_buf_oldest(buf, dtp);
4171 dt_put_buf(dtp, buf);
4173 !dtp->dt_stopped)
4177 assert(timestamp >= dtp->dt_last_timestamp);
4178 dtp->dt_last_timestamp = timestamp;
4180 if ((rval = dt_consume_cpu(dtp, fp,
4183 dt_pq_insert(dtp->dt_bufq, buf);
4191 dt_oformat_drop(dtp, i);
4192 error = dt_handle_cpudrop(dtp, i,
4204 while (buf = dt_pq_walk(dtp->dt_bufq, &cookie))
4205 dt_realloc_buf(dtp, buf, buf->dtbd_size);
4212 dtrace_oformat_probe(dtrace_hdl_t *dtp __unused, const dtrace_probedata_t *data,
4223 dt_oformat_drop(dtrace_hdl_t *dtp, processorid_t cpu)