diff options
Diffstat (limited to 'sys/kern/subr_counter.c')
-rw-r--r-- | sys/kern/subr_counter.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/sys/kern/subr_counter.c b/sys/kern/subr_counter.c index a98ed40..2656ed7 100644 --- a/sys/kern/subr_counter.c +++ b/sys/kern/subr_counter.c @@ -29,34 +29,32 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/systm.h> -#include <sys/counter.h> #include <sys/kernel.h> +#include <sys/lock.h> +#include <sys/mutex.h> +#include <sys/proc.h> +#include <sys/sched.h> #include <sys/smp.h> #include <sys/sysctl.h> #include <vm/uma.h> + +#define IN_SUBR_COUNTER_C +#include <sys/counter.h> static uma_zone_t uint64_pcpu_zone; void counter_u64_zero(counter_u64_t c) { - int i; - for (i = 0; i < mp_ncpus; i++) - *(uint64_t *)((char *)c + sizeof(struct pcpu) * i) = 0; + counter_u64_zero_inline(c); } uint64_t counter_u64_fetch(counter_u64_t c) { - uint64_t r; - int i; - r = 0; - for (i = 0; i < mp_ncpus; i++) - r += *(uint64_t *)((char *)c + sizeof(struct pcpu) * i); - - return (r); + return (counter_u64_fetch_inline(c)); } counter_u64_t |