aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Birrell <jb@FreeBSD.org>2008-04-26 04:20:11 +0000
committerJohn Birrell <jb@FreeBSD.org>2008-04-26 04:20:11 +0000
commitdf5c121dfe5c820d7a3df1af7d650269e393cdb5 (patch)
tree3e5df335609408f6a66effc4995ac04ea00ba4a3
parent29f89dfce7adda11801a42bfa93caecdff1bb77f (diff)
downloadsrc-df5c121dfe5c820d7a3df1af7d650269e393cdb5.tar.gz
src-df5c121dfe5c820d7a3df1af7d650269e393cdb5.zip
Handle the different level of indirection between ioctl on SYSV vs BSD.
Notes
Notes: svn path=/head/; revision=178553
-rw-r--r--cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c
index 8497dab01e05..17856686bd3a 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_program.c
@@ -32,7 +32,9 @@
#include <errno.h>
#include <assert.h>
#include <ctype.h>
+#if defined(sun)
#include <alloca.h>
+#endif
#include <dt_impl.h>
#include <dt_program.h>
@@ -151,6 +153,7 @@ int
dtrace_program_exec(dtrace_hdl_t *dtp, dtrace_prog_t *pgp,
dtrace_proginfo_t *pip)
{
+ dtrace_enable_io_t args;
void *dof;
int n, err;
@@ -159,7 +162,9 @@ dtrace_program_exec(dtrace_hdl_t *dtp, dtrace_prog_t *pgp,
if ((dof = dtrace_dof_create(dtp, pgp, DTRACE_D_STRIP)) == NULL)
return (-1);
- n = dt_ioctl(dtp, DTRACEIOC_ENABLE, dof);
+ args.dof = dof;
+ args.n_matched = 0;
+ n = dt_ioctl(dtp, DTRACEIOC_ENABLE, &args);
dtrace_dof_destroy(dtp, dof);
if (n == -1) {
@@ -181,7 +186,7 @@ dtrace_program_exec(dtrace_hdl_t *dtp, dtrace_prog_t *pgp,
}
if (pip != NULL)
- pip->dpi_matches += n;
+ pip->dpi_matches += args.n_matched;
return (0);
}