diff options
author | markj <markj@FreeBSD.org> | 2014-02-25 02:58:11 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2014-02-25 02:58:11 +0000 |
commit | b3fc1da12e4cc53a74020d9c2f3a57be5e2430e1 (patch) | |
tree | 0749057e49abce6b2ba487e2d57561df171fd5e3 | |
parent | 65cc350313c570cd4f2c346e2481d12c497ce7de (diff) | |
download | FreeBSD-src-b3fc1da12e4cc53a74020d9c2f3a57be5e2430e1.zip FreeBSD-src-b3fc1da12e4cc53a74020d9c2f3a57be5e2430e1.tar.gz |
Make all 8 syscall arguments available to syscall probes in the same way
that this is done for SDT probes. This fixes the syscall/tst.args.d test,
which was failing because mmap(2)'s sixth argument wasn't available to the
probe.
MFC after: 2 weeks
-rw-r--r-- | sys/cddl/dev/systrace/systrace.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/cddl/dev/systrace/systrace.c b/sys/cddl/dev/systrace/systrace.c index ff63129..83f0793 100644 --- a/sys/cddl/dev/systrace/systrace.c +++ b/sys/cddl/dev/systrace/systrace.c @@ -168,6 +168,9 @@ static dtrace_pops_t systrace_pops = { static struct cdev *systrace_cdev; static dtrace_provider_id_t systrace_id; +typedef void (*systrace_dtrace_probe)(dtrace_id_t, uintptr_t, uintptr_t, + uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); + #if !defined(LINUX_SYSTRACE) /* * Probe callback function. @@ -211,7 +214,8 @@ systrace_probe(u_int32_t id, int sysnum, struct sysent *sysent, void *params, } /* Process the probe using the converted argments. */ - dtrace_probe(id, uargs[0], uargs[1], uargs[2], uargs[3], uargs[4]); + ((systrace_dtrace_probe)(dtrace_probe))(id, uargs[0], uargs[1], + uargs[2], uargs[3], uargs[4], uargs[5], uargs[6], uargs[7]); } #endif |