Changeset 1066041 in mainline for kernel/generic/src/preempt/preemption.c
- Timestamp:
- 2012-07-11T07:58:03Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 935e28c
- Parents:
- b68ae24
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/preempt/preemption.c
rb68ae24 r1066041 37 37 38 38 #include <preemption.h> 39 #include <arch.h>40 #include <compiler/barrier.h>41 #include <debug.h>42 39 #include <proc/scheduler.h> 43 40 44 /** Increment preemption disabled counter. */45 void preemption_disable(void)46 {47 THE->preemption_disabled++;48 compiler_barrier();49 }50 51 /** Decrement preemption disabled counter. */52 void preemption_enable(void)53 {54 preemption_enable_noresched();55 56 if (PREEMPTION_ENABLED && THREAD && THREAD->need_resched) {57 preemption_enabled_scheduler();58 }59 }60 61 /** Decrement preemption disabled counter. */62 void preemption_enable_noresched(void)63 {64 ASSERT(PREEMPTION_DISABLED);65 compiler_barrier();66 THE->preemption_disabled--;67 }68 41 69 42 /** Preemption was enabled. Calls scheduler(). */ … … 71 44 { 72 45 ASSERT(PREEMPTION_ENABLED); 46 ASSERT(PREEMPTION_NEEDED); 73 47 74 48 /* … … 85 59 } 86 60 61 /** Sets a flag to reschedule the next time preemption is enabled. */ 62 void preemption_set_needed(void) 63 { 64 /* No need to disable interrupts. */ 65 THE->preemption |= PREEMPTION_NEEDED_FLAG; 66 } 67 68 /** Instructs not to reschedule immediately when preemption is enabled. */ 69 void preemption_clear_needed(void) 70 { 71 /* No need to disable interrupts. */ 72 THE->preemption &= ~PREEMPTION_NEEDED_FLAG; 73 } 74 87 75 /** @} 88 76 */
Note:
See TracChangeset
for help on using the changeset viewer.