diff options
author | jhb <jhb@FreeBSD.org> | 2002-06-07 05:41:27 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2002-06-07 05:41:27 +0000 |
commit | eb29fde68b289c16b9ea94acea2342fc6d6042d7 (patch) | |
tree | 6661e3dca12190987133994438ecc89badab8f0d /sys/kern/kern_proc.c | |
parent | e277387a704340cabd0a8f106eee363613966b38 (diff) | |
download | FreeBSD-src-eb29fde68b289c16b9ea94acea2342fc6d6042d7.zip FreeBSD-src-eb29fde68b289c16b9ea94acea2342fc6d6042d7.tar.gz |
Properly lock accesses to p_tracep and p_traceflag. Also make a few
ktrace-only things #ifdef KTRACE that were not before.
Diffstat (limited to 'sys/kern/kern_proc.c')
-rw-r--r-- | sys/kern/kern_proc.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c index ebef4a6..1f48fa8 100644 --- a/sys/kern/kern_proc.c +++ b/sys/kern/kern_proc.c @@ -34,6 +34,8 @@ * $FreeBSD$ */ +#include "opt_ktrace.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> @@ -49,6 +51,10 @@ #include <sys/sx.h> #include <sys/user.h> #include <sys/jail.h> +#ifdef KTRACE +#include <sys/uio.h> +#include <sys/ktrace.h> +#endif #include <vm/vm.h> #include <vm/pmap.h> @@ -643,8 +649,13 @@ fill_kinfo_proc(p, kp) PROC_LOCK_ASSERT(p, MA_OWNED); kp->ki_addr =/* p->p_addr; */0; /* XXXKSE */ kp->ki_args = p->p_args; - kp->ki_tracep = p->p_tracep; kp->ki_textvp = p->p_textvp; +#ifdef KTRACE + kp->ki_tracep = p->p_tracep; + mtx_lock(&ktrace_mtx); + kp->ki_traceflag = p->p_traceflag; + mtx_unlock(&ktrace_mtx); +#endif kp->ki_fd = p->p_fd; kp->ki_vmspace = p->p_vmspace; if (p->p_ucred) { @@ -696,7 +707,6 @@ fill_kinfo_proc(p, kp) kp->ki_stat = p->p_stat; kp->ki_sflag = p->p_sflag; kp->ki_swtime = p->p_swtime; - kp->ki_traceflag = p->p_traceflag; kp->ki_pid = p->p_pid; /* vvv XXXKSE */ bintime2timeval(&p->p_runtime, &tv); |