]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
dtrace: Add the 'oformat' libdtrace option
authorDomagoj Stolfa <domagoj.stolfa@gmail.com>
Wed, 3 Jan 2024 14:58:01 +0000 (14:58 +0000)
committerMark Johnston <markj@FreeBSD.org>
Wed, 10 Jan 2024 23:14:26 +0000 (18:14 -0500)
commit93f27766a7e1af009c5b1e4ca538632857c91aa1
tree821dfb02e0210fdc46329c2fe5c16e101ef2ef52
parent62e8ccc3a489434af379c7f47da71545bc1e14ee
dtrace: Add the 'oformat' libdtrace option

This option can be used to specify a format to use in DTrace output.
The following formats are supported:
 - json
 - xml
 - html
 - none (default DTrace output)

This is implemented using libxo and integrated into libdtrace. Client
code only works with the following API:

 - dtrace_oformat_setup(dtrace_hdl_t *) -- to be called when output is starting.
 - dtrace_oformat_teardown(dtrace_hdl_t *) -- to be called when output is finished
 - dtrace_oformat(dtrace_hdl_t *) -- check if oformat is enabled.
 - dtrace_set_outfp(FILE *) -- sets the output file for oformat.
 - Ensure that oformat is correctly checked in the drop handler and record
   processing callbacks.

This commit also adds tests which check if the generated output is
valid (JSON, XML) and extends the dtrace(1) describing the structured output.

Reviewed by: markj
Discussed with: phil
MFC after: 2 months
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D41745
47 files changed:
Makefile.inc1
cddl/contrib/opensolaris/cmd/dtrace/dtrace.1
cddl/contrib/opensolaris/cmd/dtrace/dtrace.c
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.avg.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.count.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.llquantize.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.lquantize.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.max.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.min.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.quantize.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.stddev.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.agg.sum.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.aggmod.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.aggstack.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.aggsym.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.aggustack.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.aggusym.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.drop.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.mod.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.print.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.printf.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.printm.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.stack.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.sym.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.trace.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.tracemem.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.umod.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.ustack.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/oformat/tst.usym.ksh [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
cddl/contrib/opensolaris/lib/libdtrace/common/dt_handle.c
cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
cddl/contrib/opensolaris/lib/libdtrace/common/dt_oformat.h [new file with mode: 0644]
cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
cddl/contrib/opensolaris/lib/libdtrace/common/dt_options.c
cddl/contrib/opensolaris/lib/libdtrace/common/dt_print.c
cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.h
cddl/contrib/opensolaris/lib/libdtrace/common/dt_subr.c
cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h
cddl/lib/libdtrace/Makefile
cddl/usr.sbin/dtrace/Makefile
cddl/usr.sbin/dtrace/tests/common/Makefile
cddl/usr.sbin/dtrace/tests/common/oformat/Makefile [new file with mode: 0644]
cddl/usr.sbin/dtrace/tests/dtrace.test.mk
etc/mtree/BSD.tests.dist
share/mk/src.libnames.mk