diff options
| author | 2013-02-11 17:05:25 +0000 | |
|---|---|---|
| committer | 2013-02-11 17:05:25 +0000 | |
| commit | fea2fea8dbf45c041f0e1660772024377fc193ba (patch) | |
| tree | df860d88ca5d22cf3a2235a1dc686995c270b64c /sys/kern/kern_clock.c | |
| parent | Ignore sysctl failure for CPU_LIDSUSPEND when errno is EOPNOTSUPP. (diff) | |
| download | wireguard-openbsd-fea2fea8dbf45c041f0e1660772024377fc193ba.tar.xz wireguard-openbsd-fea2fea8dbf45c041f0e1660772024377fc193ba.zip | |
Fix kernel profiling on MP systems by using per-CPU buffer. Previously
various CPUs were iterating over the same global buffer at the same
time to modify it and never ended.
This diff includes some ideas submited by Thor Simon to NetBSD via miod@.
ok mikeb@, haesbaert@
Diffstat (limited to 'sys/kern/kern_clock.c')
| -rw-r--r-- | sys/kern/kern_clock.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c index 26ad86213c0..57220881f03 100644 --- a/sys/kern/kern_clock.c +++ b/sys/kern/kern_clock.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kern_clock.c,v 1.76 2012/11/05 19:39:34 miod Exp $ */ +/* $OpenBSD: kern_clock.c,v 1.77 2013/02/11 17:05:25 mpi Exp $ */ /* $NetBSD: kern_clock.c,v 1.34 1996/06/09 04:51:03 briggs Exp $ */ /*- @@ -421,8 +421,8 @@ statclock(struct clockframe *frame) /* * Kernel statistics are just like addupc_intr, only easier. */ - g = &_gmonparam; - if (g->state == GMON_PROF_ON) { + g = ci->ci_gmon; + if (g != NULL && g->state == GMON_PROF_ON) { i = CLKF_PC(frame) - g->lowpc; if (i < g->textsize) { i /= HISTFRACTION * sizeof(*g->kcount); |
