aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/subr_counter.c
diff options
context:
space:
mode:
authorMatt Macy <mmacy@FreeBSD.org>2018-07-06 02:06:03 +0000
committerMatt Macy <mmacy@FreeBSD.org>2018-07-06 02:06:03 +0000
commitab3059a8e7f382cff93dbe4d1b082adf62f4d849 (patch)
tree07b63f9da9282cc1b73ec6d51ce3988dbc08875f /sys/kern/subr_counter.c
parent88171893e296f0c142cc7ee55db6244d2f6e76be (diff)
downloadsrc-ab3059a8e7f382cff93dbe4d1b082adf62f4d849.tar.gz
src-ab3059a8e7f382cff93dbe4d1b082adf62f4d849.zip
Notes
Diffstat (limited to 'sys/kern/subr_counter.c')
-rw-r--r--sys/kern/subr_counter.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/kern/subr_counter.c b/sys/kern/subr_counter.c
index e93587c95e6b..30857a9989f4 100644
--- a/sys/kern/subr_counter.c
+++ b/sys/kern/subr_counter.c
@@ -42,7 +42,16 @@ __FBSDID("$FreeBSD$");
#define IN_SUBR_COUNTER_C
#include <sys/counter.h>
-
+
+static void
+counter_u64_zero_sync(counter_u64_t c)
+{
+ int cpu;
+
+ CPU_FOREACH(cpu)
+ *(uint64_t*)zpcpu_get_cpu(c, cpu) = 0;
+}
+
void
counter_u64_zero(counter_u64_t c)
{
@@ -64,7 +73,7 @@ counter_u64_alloc(int flags)
r = uma_zalloc_pcpu(pcpu_zone_64, flags);
if (r != NULL)
- counter_u64_zero(r);
+ counter_u64_zero_sync(r);
return (r);
}