[DTrace-devel] [PATCH 5/7] Introduce a 'raw' error reporting mechanism

Kris Van Hees kris.van.hees at oracle.com
Tue Dec 6 21:50:32 UTC 2022


The error handling mechanism between libdtrace and consumer front-ends
(like dtrace) only allowed the reporting of error messages related to
probing activity.  There is a need to allow libdtrace API functions
the ability to report error conditions to the consumer front-end.
Especially errors encountered while enabling probes can benefit from
this mechanism to report the issues.

Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
 libdtrace/dt_handle.c | 20 ++++++++++++++++++++
 libdtrace/dt_impl.h   |  1 +
 2 files changed, 21 insertions(+)

diff --git a/libdtrace/dt_handle.c b/libdtrace/dt_handle.c
index 3c8f0287..670b521e 100644
--- a/libdtrace/dt_handle.c
+++ b/libdtrace/dt_handle.c
@@ -209,6 +209,26 @@ no_addr:
 	return 0;
 }
 
+int
+dt_handle_rawerr(dtrace_hdl_t *dtp, const char *errmsg)
+{
+	dtrace_errdata_t	err;
+
+	err.dteda_ddesc = NULL;
+	err.dteda_pdesc = NULL;
+	err.dteda_cpu = -1;
+	err.dteda_action = -1;
+	err.dteda_offset = -1;
+	err.dteda_fault = DTRACEFLT_LIBRARY;
+	err.dteda_addr = 0;
+	err.dteda_msg = errmsg;
+
+	if ((*dtp->dt_errhdlr)(&err, dtp->dt_errarg) == DTRACE_HANDLE_ABORT)
+		return dt_set_errno(dtp, EDT_ERRABORT);
+
+	return 0;
+}
+
 int
 dt_handle_liberr(dtrace_hdl_t *dtp, const dtrace_probedata_t *data,
     const char *faultstr)
diff --git a/libdtrace/dt_impl.h b/libdtrace/dt_impl.h
index 4b8ce0a6..3e14d69d 100644
--- a/libdtrace/dt_impl.h
+++ b/libdtrace/dt_impl.h
@@ -786,6 +786,7 @@ extern int dt_print_llquantize(dtrace_hdl_t *, FILE *, const void *, size_t,
 extern int dt_print_agg(const dtrace_aggdata_t *, void *);
 
 extern int dt_handle(dtrace_hdl_t *, dtrace_probedata_t *);
+extern int dt_handle_rawerr(dtrace_hdl_t *, const char *);
 extern int dt_handle_liberr(dtrace_hdl_t *,
     const dtrace_probedata_t *, const char *);
 extern int dt_handle_cpudrop(dtrace_hdl_t *, processorid_t,
-- 
2.37.2




More information about the DTrace-devel mailing list