diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-29 10:26:48 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-31 13:18:52 +0100 |
commit | e65783f249d975e30e97f91cd1bbc56abf75ec50 (patch) | |
tree | 9bfe9887d1d1785043c8f984786e758073d053c2 /freebsd/sys/kern/kern_timeout.c | |
parent | TIMEOUT(9): Use timer server for callout_tick() (diff) | |
download | rtems-libbsd-e65783f249d975e30e97f91cd1bbc56abf75ec50.tar.bz2 |
TIMEOUT(9): Support callout_drain()
Diffstat (limited to 'freebsd/sys/kern/kern_timeout.c')
-rw-r--r-- | freebsd/sys/kern/kern_timeout.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/freebsd/sys/kern/kern_timeout.c b/freebsd/sys/kern/kern_timeout.c index 2fed3727..a7fe5d59 100644 --- a/freebsd/sys/kern/kern_timeout.c +++ b/freebsd/sys/kern/kern_timeout.c @@ -825,8 +825,16 @@ again: PICKUP_GIANT(); CC_LOCK(cc); #else /* __rtems__ */ - BSD_ASSERT(0); -#endif /* __rtems__ */ + /* + * On RTEMS the LOR problem above does not + * exist since here we do not use + * sleepq_set_timeout() and instead use the + * RTEMS watchdog. + */ + cc->cc_waiting = 1; + msleep_spin(&cc->cc_waiting, &cc->cc_lock, + "codrain", 0); +#endif /* __rtems__ */ } } else if (use_lock && !cc->cc_cancel) { /* |