Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/kern/kern_ktrace.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/kern/kern_ktrace.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.146 retrieving revision 1.147 diff -u -p -r1.146 -r1.147 --- src/sys/kern/kern_ktrace.c 2008/06/03 05:53:09 1.146 +++ src/sys/kern/kern_ktrace.c 2008/10/15 06:51:20 1.147 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_ktrace.c,v 1.146 2008/06/03 05:53:09 dyoung Exp $ */ +/* $NetBSD: kern_ktrace.c,v 1.147 2008/10/15 06:51:20 wrstuden Exp $ */ /*- * Copyright (c) 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kern_ktrace.c,v 1.146 2008/06/03 05:53:09 dyoung Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_ktrace.c,v 1.147 2008/10/15 06:51:20 wrstuden Exp $"); #include #include @@ -80,6 +80,7 @@ __KERNEL_RCSID(0, "$NetBSD: kern_ktrace. #include #include +#include #include /* @@ -976,6 +977,44 @@ ktr_mool(const void *kaddr, size_t size, } void +ktr_saupcall(struct lwp *l, int type, int nevent, int nint, void *sas, + void *ap, void *ksas) +{ + struct ktrace_entry *kte; + struct ktr_saupcall *ktp; + size_t len, sz; + struct sa_t **sapp; + int i; + + if (!KTRPOINT(l->l_proc, KTR_SAUPCALL)) + return; + + len = sizeof(struct ktr_saupcall); + sz = len + sizeof(struct sa_t) * (nevent + nint + 1); + + if (ktealloc(&kte, (void *)&ktp, l, KTR_SAUPCALL, sz)) + return; + + ktp->ktr_type = type; + ktp->ktr_nevent = nevent; + ktp->ktr_nint = nint; + ktp->ktr_sas = sas; + ktp->ktr_ap = ap; + + /* Copy the sa_t's */ + sapp = (struct sa_t **) ksas; + + for (i = nevent + nint; i >= 0; i--) { + memcpy((char *)ktp + len, *sapp, sizeof(struct sa_t)); + len += sizeof(struct sa_t); + sapp++; + } + + kte->kte_kth.ktr_len = len; + ktraddentry(l, kte, KTA_WAITOK); +} + +void ktr_mib(const int *name, u_int namelen) { struct ktrace_entry *kte;