summaryrefslogtreecommitdiffstats
path: root/cddl
diff options
context:
space:
mode:
authorjb <jb@FreeBSD.org>2008-04-26 04:43:19 +0000
committerjb <jb@FreeBSD.org>2008-04-26 04:43:19 +0000
commitace3d24b37f446c59218c0e389d579c0b79fccc0 (patch)
tree608a132b7d1a6fc72b8f77085569926384fc9a71 /cddl
parentfd0fbf31aa6a799810269382ebdba2d92e4d62b2 (diff)
downloadFreeBSD-src-ace3d24b37f446c59218c0e389d579c0b79fccc0.zip
FreeBSD-src-ace3d24b37f446c59218c0e389d579c0b79fccc0.tar.gz
There are many places in libdtrace where errno can be set. When an
error is returned all the way back to the dtrace app, it's hard to figure out where that error came from. Add a couple of functions to get and set the error location which can be optionally compiled into the library.
Diffstat (limited to 'cddl')
-rw-r--r--cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c
index 5005f59..263f70c 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c
@@ -25,6 +25,7 @@
#pragma ident "%Z%%M% %I% %E% SMI"
+#include <string.h>
#include <strings.h>
#include <dt_impl.h>
@@ -138,12 +139,29 @@ dtrace_errno(dtrace_hdl_t *dtp)
return (dtp->dt_errno);
}
+#if defined(sun)
int
dt_set_errno(dtrace_hdl_t *dtp, int err)
{
dtp->dt_errno = err;
return (-1);
}
+#else
+int
+_dt_set_errno(dtrace_hdl_t *dtp, int err, const char *errfile, int errline)
+{
+ dtp->dt_errno = err;
+ dtp->dt_errfile = errfile;
+ dtp->dt_errline = errline;
+ return (-1);
+}
+
+void dt_get_errloc(dtrace_hdl_t *dtp, const char **p_errfile, int *p_errline)
+{
+ *p_errfile = dtp->dt_errfile;
+ *p_errline = dtp->dt_errline;
+}
+#endif
void
dt_set_errmsg(dtrace_hdl_t *dtp, const char *errtag, const char *region,
OpenPOWER on IntegriCloud