Mercurial > flash_v2
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) {
