From 18b8b495244411bb33254ea0d8b868259077be7d Mon Sep 17 00:00:00 2001 From: gdisirio Date: Wed, 8 Feb 2012 17:53:52 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3946 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/src/chschd.c | 3 +++ os/kernel/src/chvt.c | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'os/kernel/src') diff --git a/os/kernel/src/chschd.c b/os/kernel/src/chschd.c index 808e06300..9739a595b 100644 --- a/os/kernel/src/chschd.c +++ b/os/kernel/src/chschd.c @@ -127,10 +127,12 @@ void chSchGoSleepS(tstate_t newstate) { static void wakeup(void *p) { Thread *tp = (Thread *)p; + chSysLockFromIsr(); switch (tp->p_state) { case THD_STATE_READY: /* Handling the special case where the thread has been made ready by another thread with higher priority.*/ + chSysUnlockFromIsr(); return; #if CH_USE_SEMAPHORES || CH_USE_QUEUES || \ (CH_USE_CONDVARS && CH_USE_CONDVARS_TIMEOUT) @@ -151,6 +153,7 @@ static void wakeup(void *p) { } tp->p_u.rdymsg = RDY_TIMEOUT; chSchReadyI(tp); + chSysUnlockFromIsr(); } /** diff --git a/os/kernel/src/chvt.c b/os/kernel/src/chvt.c index 4869cebef..6389aaf6d 100644 --- a/os/kernel/src/chvt.c +++ b/os/kernel/src/chvt.c @@ -49,8 +49,7 @@ void _vt_init(void) { /** * @brief Enables a virtual timer. - * @note The associated function is invoked by an interrupt handler within - * the I-Locked state, see @ref system_states. + * @note The associated function is invoked from interrupt context. * * @param[out] vtp the @p VirtualTimer structure pointer * @param[in] time the number of ticks before the operation timeouts, the -- cgit v1.2.3