diff options
author | jb <jb@FreeBSD.org> | 2006-08-03 05:26:51 +0000 |
---|---|---|
committer | jb <jb@FreeBSD.org> | 2006-08-03 05:26:51 +0000 |
commit | b39f2df25c0e93ad11f2d1373a0b5c7765d5db69 (patch) | |
tree | a59aa6f35a193c913890b599558aac9843870593 /sys/sys/sysent.h | |
parent | b72d6460bef63dd55a34dfbed199610659e1bdc4 (diff) | |
download | FreeBSD-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.h | 16 |
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; |