Changeset View
Changeset View
Standalone View
Standalone View
sys/i386/include/counter.h
Show First 20 Lines • Show All 142 Lines • ▼ Show 20 Lines | counter_u64_zero_inline(counter_u64_t c) | ||||
int i; | int i; | ||||
if ((cpu_feature & CPUID_CX8) == 0) { | if ((cpu_feature & CPUID_CX8) == 0) { | ||||
critical_enter(); | critical_enter(); | ||||
CPU_FOREACH(i) | CPU_FOREACH(i) | ||||
*(uint64_t *)((char *)c + sizeof(struct pcpu) * i) = 0; | *(uint64_t *)((char *)c + sizeof(struct pcpu) * i) = 0; | ||||
critical_exit(); | critical_exit(); | ||||
} else { | } else { | ||||
smp_rendezvous(smp_no_rendevous_barrier, | smp_rendezvous(smp_no_rendezvous_barrier, | ||||
counter_u64_zero_one_cpu, smp_no_rendevous_barrier, c); | counter_u64_zero_one_cpu, smp_no_rendezvous_barrier, c); | ||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
#define counter_u64_add_protected(c, inc) do { \ | #define counter_u64_add_protected(c, inc) do { \ | ||||
if ((cpu_feature & CPUID_CX8) == 0) { \ | if ((cpu_feature & CPUID_CX8) == 0) { \ | ||||
CRITICAL_ASSERT(curthread); \ | CRITICAL_ASSERT(curthread); \ | ||||
*(uint64_t *)zpcpu_get(c) += (inc); \ | *(uint64_t *)zpcpu_get(c) += (inc); \ | ||||
Show All 18 Lines |