summaryrefslogtreecommitdiffstats
path: root/sys/sys/sysent.h
diff options
context:
space:
mode:
authorjb <jb@FreeBSD.org>2006-08-03 05:26:51 +0000
committerjb <jb@FreeBSD.org>2006-08-03 05:26:51 +0000
commitb39f2df25c0e93ad11f2d1373a0b5c7765d5db69 (patch)
treea59aa6f35a193c913890b599558aac9843870593 /sys/sys/sysent.h
parentb72d6460bef63dd55a34dfbed199610659e1bdc4 (diff)
downloadFreeBSD-src-b39f2df25c0e93ad11f2d1373a0b5c7765d5db69.zip
FreeBSD-src-b39f2df25c0e93ad11f2d1373a0b5c7765d5db69.tar.gz
Add fields to struct sysent to support the DTrace syscall provider called
systrace. Another file called systrace_args.c is generated. This will be compiled into systrace and is used to map the syscall arguments into the 64-bit parameter array.
Diffstat (limited to 'sys/sys/sysent.h')
-rw-r--r--sys/sys/sysent.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/sys/sysent.h b/sys/sys/sysent.h
index 4e4f25e..7e4d7aa 100644
--- a/sys/sys/sysent.h
+++ b/sys/sys/sysent.h
@@ -35,15 +35,31 @@
#include <bsm/audit.h>
struct proc;
+struct sysent;
struct thread;
struct ksiginfo;
typedef int sy_call_t(struct thread *, void *);
+/* Used by the machine dependent syscall() code. */
+typedef void (*systrace_probe_func_t)(u_int32_t, int, struct sysent *, void *);
+
+/*
+ * Used by loaded syscalls to convert arguments to a DTrace array
+ * of 64-bit arguments.
+ */
+typedef void (*systrace_args_func_t)(void *, u_int64_t *, int *);
+
+extern systrace_probe_func_t systrace_probe_func;
+
struct sysent { /* system call table */
int sy_narg; /* number of arguments */
sy_call_t *sy_call; /* implementing function */
au_event_t sy_auevent; /* audit event associated with syscall */
+ systrace_args_func_t sy_systrace_args_func;
+ /* optional argument conversion function. */
+ u_int32_t sy_entry; /* DTrace entry ID for systrace. */
+ u_int32_t sy_return; /* DTrace return ID for systrace. */
};
struct image_params;
OpenPOWER on IntegriCloud