diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-07-09 11:14:53 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2019-07-09 14:45:47 +0200 |
commit | 5283630d2c9d40deb0183696d278e02644fe4326 (patch) | |
tree | d5695aea058ed05d4d9a4b84b5cb9986aaefd23f /freebsd/sys/kern/kern_synch.c | |
parent | EPOCH(9): Add epoch_drain_callbacks() (diff) | |
download | rtems-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.c | 21 |
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) |