diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2012-02-08 17:53:52 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2012-02-08 17:53:52 +0000 |
commit | 18b8b495244411bb33254ea0d8b868259077be7d (patch) | |
tree | be8ecfe583b4de2ad67d2b2196cabf8992e87d13 /os/kernel/src/chschd.c | |
parent | 6894617b8ebc8453a1ed5e672fb225d0c4f2f51b (diff) | |
download | ChibiOS-18b8b495244411bb33254ea0d8b868259077be7d.tar.gz ChibiOS-18b8b495244411bb33254ea0d8b868259077be7d.tar.bz2 ChibiOS-18b8b495244411bb33254ea0d8b868259077be7d.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@3946 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/kernel/src/chschd.c')
-rw-r--r-- | os/kernel/src/chschd.c | 3 |
1 files changed, 3 insertions, 0 deletions
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();
}
/**
|