From 1a0fead19b521501ec5b7ff7532d6a7b435fdaa6 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Fri, 3 Sep 2010 18:23:37 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2162 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/src/chmtx.c | 6 +++++- os/kernel/src/chschd.c | 6 ++++++ readme.txt | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/os/kernel/src/chmtx.c b/os/kernel/src/chmtx.c index 88b6f4ecd..93943bba0 100644 --- a/os/kernel/src/chmtx.c +++ b/os/kernel/src/chmtx.c @@ -136,7 +136,11 @@ void chMtxLockS(Mutex *mp) { break; #endif case THD_STATE_READY: - /* Re-enqueues tp with its new priority on the ready list.*/ +#if CH_DBG_ENABLE_ASSERTS + /* Prevents an assertion in chSchReadyI().*/ + tp->p_state = THD_STATE_CURRENT; +#endif + /* Re-enqueues tp with its new priority on the ready list.*/ chSchReadyI(dequeue(tp)); } break; diff --git a/os/kernel/src/chschd.c b/os/kernel/src/chschd.c index 51987749f..c4a6a3fd0 100644 --- a/os/kernel/src/chschd.c +++ b/os/kernel/src/chschd.c @@ -72,6 +72,12 @@ Thread *chSchReadyI(Thread *tp) { #endif Thread *cp; + /* Integrity check.*/ + chDbgAssert((tp->p_state != THD_STATE_READY) && + (tp->p_state != THD_STATE_FINAL), + "chSchReadyI(), #1", + "invalid state"); + tp->p_state = THD_STATE_READY; cp = (Thread *)&rlist.r_queue; do { diff --git a/readme.txt b/readme.txt index 62ecf0ed1..1dcfb4c4c 100644 --- a/readme.txt +++ b/readme.txt @@ -77,7 +77,7 @@ 2.0.3). - FIX: Fixed a documentation error regarding the ADC driver function adcStartConversion() (bug 3039890)(backported to 2.0.3). -- NEW: More assertions added to the semaphores subsystem. +- NEW: More assertions added to the kernel. - NEW: New kernel hooks: SYSTEM_TICK_EVENT_HOOK(), SYSTEM_HALT_HOOK(). - NEW: Added board files for the Olimex STM32-H103. - NEW: New kernel APIs chSysGetIdleThread() and chThdGetTicks(), the new -- cgit v1.2.3