summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/kern/kern_synch.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-07-09 11:14:53 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-07-09 14:45:47 +0200
commit5283630d2c9d40deb0183696d278e02644fe4326 (patch)
treed5695aea058ed05d4d9a4b84b5cb9986aaefd23f /freebsd/sys/kern/kern_synch.c
parentEPOCH(9): Add epoch_drain_callbacks() (diff)
downloadrtems-libbsd-5283630d2c9d40deb0183696d278e02644fe4326.tar.bz2
Update to FreeBSD stable/12 2019-07-09
Git mirror commit 3427c3416aa3c0f25124070959cca78024b94d85.
Diffstat (limited to 'freebsd/sys/kern/kern_synch.c')
-rw-r--r--freebsd/sys/kern/kern_synch.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/freebsd/sys/kern/kern_synch.c b/freebsd/sys/kern/kern_synch.c
index 9c0d1206..0335b269 100644
--- a/freebsd/sys/kern/kern_synch.c
+++ b/freebsd/sys/kern/kern_synch.c
@@ -138,7 +138,9 @@ int
_sleep(void *ident, struct lock_object *lock, int priority,
const char *wmesg, sbintime_t sbt, sbintime_t pr, int flags)
{
+#ifndef __rtems__
struct thread *td;
+#endif /* __rtems__ */
struct lock_class *class;
uintptr_t lock_state;
#ifndef __rtems__
@@ -148,7 +150,9 @@ _sleep(void *ident, struct lock_object *lock, int priority,
#endif /* __rtems__ */
WITNESS_SAVE_DECL(lock_witness);
+#ifndef __rtems__
td = curthread;
+#endif /* __rtems__ */
#ifdef KTRACE
if (KTRPOINT(td, KTR_CSW))
ktrcsw(1, 0, wmesg);
@@ -402,6 +406,23 @@ wakeup_one(void *ident)
kick_proc0();
}
+void
+wakeup_any(void *ident)
+#ifndef __rtems__
+{
+ int wakeup_swapper;
+
+ sleepq_lock(ident);
+ wakeup_swapper = sleepq_signal(ident, SLEEPQ_SLEEP | SLEEPQ_UNFAIR,
+ 0, 0);
+ sleepq_release(ident);
+ if (wakeup_swapper)
+ kick_proc0();
+}
+#else /* __rtems__ */
+RTEMS_ALIAS(_bsd_wakeup_one);
+#endif /* __rtems__ */
+
#ifndef __rtems__
static void
kdb_switch(void)