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:24:26 +0100 |
commit | 34cb55db70930bbd4db9d8f3310bfcf3997b0554 (patch) | |
tree | da1887b78e881d9e8f39884a7f0f9d1c321aec46 /rtemsbsd/rtems | |
parent | Update to FreeBSD stable/12 2019-01-21 (diff) | |
download | rtems-libbsd-34cb55db70930bbd4db9d8f3310bfcf3997b0554.tar.bz2 |
Fix INVARIANTS support
Diffstat (limited to 'rtemsbsd/rtems')
-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 |