aboutsummaryrefslogtreecommitdiff
path: root/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c')
-rw-r--r--cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
index 1729eaf2e7be..5dc8e1648fd3 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
@@ -50,6 +50,7 @@
#include <stdint.h>
#include <dt_impl.h>
+#include <dt_oformat.h>
static const struct {
size_t dtps_offset;
@@ -462,6 +463,20 @@ dt_cpp_pop_arg(dtrace_hdl_t *dtp)
return (arg);
}
+int
+dt_cpu_maxid(dtrace_hdl_t *dtp)
+{
+ size_t len;
+ u_int count;
+ int error;
+
+ len = sizeof(count);
+ error = sysctlbyname("kern.smp.maxid", &count, &len, NULL, 0);
+ if (error != 0)
+ return (dt_set_errno(dtp, errno));
+ return (count);
+}
+
/*PRINTFLIKE1*/
void
dt_dprintf(const char *format, ...)
@@ -992,3 +1007,44 @@ dtrace_uaddr2str(dtrace_hdl_t *dtp, pid_t pid,
return (dt_string2str(c, str, nbytes));
}
+
+int
+dtrace_oformat_configure(dtrace_hdl_t *dtp)
+{
+
+ dtp->dt_oformat = xo_get_style(NULL) == XO_STYLE_TEXT ?
+ DTRACE_OFORMAT_TEXT :
+ DTRACE_OFORMAT_STRUCTURED;
+ xo_set_flags(NULL, XOF_DTRT);
+ return (0);
+}
+
+int
+dtrace_oformat(dtrace_hdl_t *dtp)
+{
+
+ return (dtp->dt_oformat != DTRACE_OFORMAT_TEXT);
+}
+
+void
+dtrace_set_outfp(const FILE *ofp)
+{
+
+ xo_set_file((FILE *)ofp);
+}
+
+void
+dtrace_oformat_setup(dtrace_hdl_t *dtp)
+{
+
+ xo_open_container("dtrace");
+ xo_open_list("probes");
+}
+
+void
+dtrace_oformat_teardown(dtrace_hdl_t *dtp)
+{
+
+ xo_close_list("probes");
+ xo_close_container("dtrace");
+}