diff packages/kernel/current/src/common/kapi.cxx @ 84:489eb5632bc3 ecos-sw-2000-04-28

Merge from eCos master repository on 2000-04-28-18:44:39-BST
author jlarmour
date Fri, 28 Apr 2000 18:18:36 +0000
parents bf00f99aec69
children 5a0cc6c243a9
line wrap: on
line diff
--- a/packages/kernel/current/src/common/kapi.cxx
+++ b/packages/kernel/current/src/common/kapi.cxx
@@ -115,6 +115,18 @@ externC void cyg_scheduler_lock(void)
                 "Scheduler overlocked" );
 }
 
+/* Lock the scheduler, but never more than level=1. */
+externC void cyg_scheduler_safe_lock(void)
+{
+    Cyg_Scheduler::lock();
+    cyg_ucount32 slock = Cyg_Scheduler::get_sched_lock();
+    if (slock > 1)
+        Cyg_Scheduler::unlock();
+    // 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)
 {