Mercurial > ecos
diff packages/kernel/current/include/sched.inl @ 177:4c750ce71ae3
Merge from eCos master repository on 2001-08-10-19:22:57-BST
| author | jlarmour |
|---|---|
| date | Fri, 10 Aug 2001 19:27:55 +0000 |
| parents | 42f843b391aa |
| children | e0c0827131d1 |
line wrap: on
line diff
--- a/packages/kernel/current/include/sched.inl +++ b/packages/kernel/current/include/sched.inl @@ -67,11 +67,11 @@ inline void Cyg_Scheduler::lock() HAL_REORDER_BARRIER(); - sched_lock++; + inc_sched_lock(); HAL_REORDER_BARRIER(); - CYG_INSTRUMENT_SCHED(LOCK,sched_lock,0); + CYG_INSTRUMENT_SCHED(LOCK,get_sched_lock(),0); }; inline void Cyg_Scheduler::unlock() @@ -83,14 +83,14 @@ inline void Cyg_Scheduler::unlock() // decrement and return. As with lock() we do not need any special code // to decrement the lock counter. - CYG_INSTRUMENT_SCHED(UNLOCK,sched_lock,0); - + CYG_INSTRUMENT_SCHED(UNLOCK,get_sched_lock(),0); + HAL_REORDER_BARRIER(); - cyg_ucount32 __lock = sched_lock - 1; + cyg_ucount32 __lock = get_sched_lock() - 1; if( __lock == 0 ) unlock_inner(0); - else sched_lock = __lock; + else set_sched_lock(__lock); HAL_REORDER_BARRIER(); } @@ -102,9 +102,9 @@ inline void Cyg_Scheduler::reschedule() // leave a brief window between the calls when the lock is unclaimed // by the current thread. - CYG_INSTRUMENT_SCHED(RESCHEDULE,sched_lock,0); + CYG_INSTRUMENT_SCHED(RESCHEDULE,get_sched_lock(),0); - unlock_inner( sched_lock ); + unlock_inner( get_sched_lock() ); } inline void Cyg_Scheduler:: unlock_reschedule() @@ -115,9 +115,9 @@ inline void Cyg_Scheduler:: unlock_resch // lock is being decremented to a non-zero value, it is more or less // equivalent to reschedule() followed by unlock(). - CYG_INSTRUMENT_SCHED(UNLOCK,sched_lock,0); + CYG_INSTRUMENT_SCHED(UNLOCK,get_sched_lock(),0); - unlock_inner( sched_lock - 1 ); + unlock_inner( get_sched_lock() - 1 ); } inline void Cyg_Scheduler::unlock_simple() @@ -128,12 +128,13 @@ inline void Cyg_Scheduler::unlock_simple // indeterminate future time. This is mainly for use by // debuggers, it should not normally be used anywhere else. - CYG_INSTRUMENT_SCHED(UNLOCK,sched_lock,0); + CYG_INSTRUMENT_SCHED(UNLOCK,get_sched_lock(),0); HAL_REORDER_BARRIER(); - if (sched_lock > 0) - sched_lock = sched_lock - 1; + if (get_sched_lock() > 1) + set_sched_lock(get_sched_lock() - 1); + else zero_sched_lock(); HAL_REORDER_BARRIER(); }
