summaryrefslogtreecommitdiff
path: root/sys/kern
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/init_sysent.c2
-rw-r--r--sys/kern/kern_ktrace.c41
-rw-r--r--sys/kern/syscalls.c2
-rw-r--r--sys/kern/syscalls.master4
4 files changed, 44 insertions, 5 deletions
diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c
index 59a3e5e3e8f2..0bd62906ae9a 100644
--- a/sys/kern/init_sysent.c
+++ b/sys/kern/init_sysent.c
@@ -239,7 +239,7 @@ struct sysent sysent[] = {
{ 6, (sy_call_t *)__sysctl }, /* 202 = __sysctl */
{ 2, (sy_call_t *)mlock }, /* 203 = mlock */
{ 2, (sy_call_t *)munlock }, /* 204 = munlock */
- { 0, (sy_call_t *)nosys }, /* 205 = nosys */
+ { 2, (sy_call_t *)utrace }, /* 205 = utrace */
{ 0, (sy_call_t *)nosys }, /* 206 = nosys */
{ 0, (sy_call_t *)nosys }, /* 207 = nosys */
{ 0, (sy_call_t *)nosys }, /* 208 = nosys */
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c
index 46b1ca6b48d2..595e4efb8402 100644
--- a/sys/kern/kern_ktrace.c
+++ b/sys/kern/kern_ktrace.c
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)kern_ktrace.c 8.2 (Berkeley) 9/23/93
- * $Id: kern_ktrace.c,v 1.11 1996/03/11 06:03:23 hsu Exp $
+ * $Id: kern_ktrace.c,v 1.12 1996/08/04 20:13:07 phk Exp $
*/
#include "opt_ktrace.h"
@@ -346,6 +346,45 @@ done:
#endif
}
+/*
+ * utrace system call
+ */
+/* ARGSUSED */
+int
+utrace(curp, uap, retval)
+ struct proc *curp;
+ register struct utrace_args *uap;
+ int *retval;
+{
+#ifdef KTRACE
+ register struct ktr_user *ktp;
+ struct ktr_header *kth;
+ struct proc *p = curproc; /* XXX */
+ register caddr_t cp;
+
+ if (!KTRPOINT(p, KTR_USER))
+ return (0);
+ p->p_traceflag |= KTRFAC_ACTIVE;
+ kth = ktrgetheader(KTR_USER);
+ MALLOC(ktp, struct ktr_user *, sizeof(struct ktr_user) + uap->len,
+ M_KTRACE, M_WAITOK);
+ ktp->len = uap->len;
+ cp = (caddr_t)((char *)ktp + sizeof (struct ktr_user));
+ if (!copyin(uap->addr, cp, uap->len)) {
+ kth->ktr_buf = (caddr_t)ktp;
+ kth->ktr_len = sizeof (struct ktr_user) + uap->len;
+ ktrwrite(p->p_tracep, kth);
+ }
+ FREE(kth, M_KTRACE);
+ FREE(ktp, M_KTRACE);
+ p->p_traceflag &= ~KTRFAC_ACTIVE;
+
+ return (0);
+#else
+ return (ENOSYS);
+#endif
+}
+
#ifdef KTRACE
static int
ktrops(curp, p, ops, facs, vp)
diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c
index ded3c53701b9..fd06481974bb 100644
--- a/sys/kern/syscalls.c
+++ b/sys/kern/syscalls.c
@@ -226,7 +226,7 @@ char *syscallnames[] = {
"__sysctl", /* 202 = __sysctl */
"mlock", /* 203 = mlock */
"munlock", /* 204 = munlock */
- "#205", /* 205 = nosys */
+ "utrace", /* 205 = utrace */
"#206", /* 206 = nosys */
"#207", /* 207 = nosys */
"#208", /* 208 = nosys */
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master
index ad5ba53e1c48..c0c5f0fdbb50 100644
--- a/sys/kern/syscalls.master
+++ b/sys/kern/syscalls.master
@@ -1,4 +1,4 @@
- $Id: syscalls.master,v 1.27 1996/03/02 16:51:25 peter Exp $
+ $Id: syscalls.master,v 1.28 1996/08/20 07:17:49 smpatel Exp $
; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94
;
; System call name/number master file.
@@ -322,7 +322,7 @@
; here allows to avoid one in libc/sys/Makefile.inc.
203 STD BSD { int mlock(caddr_t addr, size_t len); }
204 STD BSD { int munlock(caddr_t addr, size_t len); }
-205 UNIMPL NOHIDE nosys
+205 STD BSD { int utrace(caddr_t addr, size_t len); }
206 UNIMPL NOHIDE nosys
207 UNIMPL NOHIDE nosys
208 UNIMPL NOHIDE nosys