diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2016-08-10 15:25:44 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2016-08-10 15:25:44 +0000 |
commit | 7c34b35b5725b67833d32336902348a627bebc6b (patch) | |
tree | 15e955ba5604c02418d031a16c72b85df20b4e2f /sys/kern/kern_ktrace.c | |
parent | 382172be686cf55d308e38daef0bb219fb9abe10 (diff) | |
download | src-7c34b35b5725b67833d32336902348a627bebc6b.tar.gz src-7c34b35b5725b67833d32336902348a627bebc6b.zip |
ktrace: do a lockless check on fork to see if tracing is enabled
This saves 2 lock acquisitions in the common case.
Notes
Notes:
svn path=/head/; revision=303922
Diffstat (limited to 'sys/kern/kern_ktrace.c')
-rw-r--r-- | sys/kern/kern_ktrace.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index 0e30fc9cd9c8..676cd438420b 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -572,9 +572,14 @@ void ktrprocfork(struct proc *p1, struct proc *p2) { + MPASS(p2->p_tracevp == NULL); + MPASS(p2->p_traceflag == 0); + + if (p1->p_traceflag == 0) + return; + PROC_LOCK(p1); mtx_lock(&ktrace_mtx); - KASSERT(p2->p_tracevp == NULL, ("new process has a ktrace vnode")); if (p1->p_traceflag & KTRFAC_INHERIT) { p2->p_traceflag = p1->p_traceflag; if ((p2->p_tracevp = p1->p_tracevp) != NULL) { |