Ignore:
Timestamp:
2012-07-11T07:58:03Z (12 years ago)
Author:
Adam Hraska <adam.hraska+hos@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
935e28c
Parents:
b68ae24
Message:

preemption_disable: Turned functions into macros. Moved THREAD, AS, TASK, CPU into thread.h, as.h, task.h, cpu.h to fix the include hell that ensued.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/preempt/preemption.c

    rb68ae24 r1066041  
    3737
    3838#include <preemption.h>
    39 #include <arch.h>
    40 #include <compiler/barrier.h>
    41 #include <debug.h>
    4239#include <proc/scheduler.h>
    4340
    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 }
    6841
    6942/** Preemption was enabled. Calls scheduler(). */
     
    7144{
    7245        ASSERT(PREEMPTION_ENABLED);
     46        ASSERT(PREEMPTION_NEEDED);
    7347       
    7448        /*
     
    8559}
    8660
     61/** Sets a flag to reschedule the next time preemption is enabled. */
     62void 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. */
     69void preemption_clear_needed(void)
     70{
     71        /* No need to disable interrupts. */
     72        THE->preemption &= ~PREEMPTION_NEEDED_FLAG;
     73}
     74
    8775/** @}
    8876 */
Note: See TracChangeset for help on using the changeset viewer.