diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-01-15 15:35:11 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-01-22 13:14:33 +0100 |
commit | 0389b30dd928dbebb138f6b98b214380ddcb2289 (patch) | |
tree | db528f895149bf006530661d73c91b9390676a9f /rtemsbsd/rtems/rtems-kernel-epoch.c | |
parent | dpaa: Use if_transmit instead of legacy if_start (diff) | |
download | rtems-libbsd-0389b30dd928dbebb138f6b98b214380ddcb2289.tar.bz2 |
Fix INVARIANTS support
Diffstat (limited to 'rtemsbsd/rtems/rtems-kernel-epoch.c')
-rw-r--r-- | rtemsbsd/rtems/rtems-kernel-epoch.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/rtemsbsd/rtems/rtems-kernel-epoch.c b/rtemsbsd/rtems/rtems-kernel-epoch.c index f88c9853..e8e24060 100644 --- a/rtemsbsd/rtems/rtems-kernel-epoch.c +++ b/rtemsbsd/rtems/rtems-kernel-epoch.c @@ -33,6 +33,9 @@ #include <sys/types.h> #include <sys/kernel.h> #include <sys/epoch.h> +#ifdef INVARIANTS +#include <sys/systm.h> +#endif #include <machine/cpu.h> @@ -322,3 +325,32 @@ epoch_call(epoch_t epoch, epoch_context_t ctx, ck_epoch_call(&er->er_record, ctx, callback); _Thread_Dispatch_enable(cpu_self); } + +#ifdef INVARIANTS +int +_bsd_in_epoch(epoch_t epoch) +{ + Per_CPU_Control *cpu_self; + Thread_Control *executing; + struct epoch_record *er; + struct epoch_pcpu *epcpu; + struct epoch_tracker *tdwait; + int in; + + in = 0; + cpu_self = _Thread_Dispatch_disable(); + executing = _Per_CPU_Get_executing(cpu_self); + epcpu = PER_CPU_DATA_GET(cpu_self, struct epoch_pcpu, epoch); + er = EPOCH_GET_RECORD(cpu_self, epoch); + + TAILQ_FOREACH(tdwait, &er->er_tdlist, et_link) { + if (tdwait->et_td == executing) { + in = 1; + break; + } + } + + _Thread_Dispatch_enable(cpu_self); + return (in); +} +#endif |