diff packages/kernel/current/src/common/kapi.cxx @ 56:755351606154 ecos-sw-1999-12-01

Merge from eCos master repository on 1999-12-01-18:03:05-GMT
author jlarmour
date Wed, 01 Dec 1999 18:33:37 +0000
parents e7ba79f6d3a8
children c38311975d4f
line wrap: on
line diff
--- a/packages/kernel/current/src/common/kapi.cxx
+++ b/packages/kernel/current/src/common/kapi.cxx
@@ -108,12 +108,19 @@ externC void cyg_scheduler_start(void)
 externC void cyg_scheduler_lock(void)
 {
     Cyg_Scheduler::lock();
+    // get_sched_lock() is unsigned, see below "cyg_ucount32 lock"
+    CYG_ASSERT( (0xff000000 & (Cyg_Scheduler::get_sched_lock())) == 0,
+                "Scheduler overlocked" );
 }
 
 /* Unlock the scheduler. */
 externC void cyg_scheduler_unlock(void)
 {
-    Cyg_Scheduler::unlock();
+    cyg_ucount32 slock = Cyg_Scheduler::get_sched_lock();
+    CYG_ASSERT( 0 < slock, "Scheduler not locked" );
+    // And program defensively too:
+    if ( 0 < slock )
+        Cyg_Scheduler::unlock();
 }
 
 /*---------------------------------------------------------------------------*/