diff packages/kernel/current/include/sched.inl @ 124:0ec04793409a ecos-sw-2000-09-11

Merge from eCos master repository on 2000-09-11-03:00:13-BST
author jlarmour
date Mon, 11 Sep 2000 02:42:46 +0000
parents 6ed91473a1cd
children 42f843b391aa
line wrap: on
line diff
--- a/packages/kernel/current/include/sched.inl
+++ b/packages/kernel/current/include/sched.inl
@@ -107,6 +107,19 @@ inline void Cyg_Scheduler::reschedule()
     unlock_inner( sched_lock );
 }
 
+inline void Cyg_Scheduler:: unlock_reschedule()
+{
+    // This function decrements the scheduler lock and also looks for
+    // a reschedule opportunity. When the lock is being decremented
+    // from 1 to zero this function is equivalent to unlock. When the
+    // lock is being decremented to a non-zero value, it is equivalent
+    // to unlock() followed by reschedule().
+    
+    CYG_INSTRUMENT_SCHED(UNLOCK,sched_lock,0);
+    
+    unlock_inner( sched_lock - 1 );
+}
+
 inline void Cyg_Scheduler::unlock_simple()
 {
     // This function decrements the lock, but does not call unlock_inner().