From b5f802ef431b78f6b0474bd1234a9a9e9b8b7fd6 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 25 Sep 2019 10:58:00 +0200 Subject: Add support for EARLY_COUNTER --- freebsd/sys/kern/subr_counter.c | 3 +++ freebsd/sys/sys/pcpu.h | 4 ++++ rtemsbsd/include/machine/counter.h | 10 ++++++++++ 3 files changed, 17 insertions(+) diff --git a/freebsd/sys/kern/subr_counter.c b/freebsd/sys/kern/subr_counter.c index 66cda02b..2855a5d2 100644 --- a/freebsd/sys/kern/subr_counter.c +++ b/freebsd/sys/kern/subr_counter.c @@ -174,3 +174,6 @@ counter_ratecheck(struct counter_rate *cr, int64_t limit) return (val); } +#ifdef __rtems__ +uint64_t _bsd_early_counter[_BSD_EARLY_COUNTER_SIZE]; +#endif /* __rtems__ */ diff --git a/freebsd/sys/sys/pcpu.h b/freebsd/sys/sys/pcpu.h index de5936f6..0ce30af7 100644 --- a/freebsd/sys/sys/pcpu.h +++ b/freebsd/sys/sys/pcpu.h @@ -227,7 +227,11 @@ extern struct pcpu *cpuid_to_pcpu[]; #endif #define curvidata PCPU_GET(vidata) +#ifndef __rtems__ #define UMA_PCPU_ALLOC_SIZE PAGE_SIZE +#else /* __rtems__ */ +#define UMA_PCPU_ALLOC_SIZE (PAGE_SIZE / 32) +#endif /* __rtems__ */ #ifndef __rtems__ #ifdef CTASSERT diff --git a/rtemsbsd/include/machine/counter.h b/rtemsbsd/include/machine/counter.h index 4c25d610..1705e393 100644 --- a/rtemsbsd/include/machine/counter.h +++ b/rtemsbsd/include/machine/counter.h @@ -36,6 +36,16 @@ #include +#ifdef RTEMS_SMP +#define _BSD_EARLY_COUNTER_SIZE (CPU_MAXIMUM_PROCESSORS * UMA_PCPU_ALLOC_SIZE) +#else +#define _BSD_EARLY_COUNTER_SIZE 1 +#endif + +extern uint64_t _bsd_early_counter[_BSD_EARLY_COUNTER_SIZE]; + +#define EARLY_COUNTER (&_bsd_early_counter[0]) + #ifdef IN_SUBR_COUNTER_C static inline uint64_t -- cgit v1.2.3