Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/libcfa/concurrency/kernel

    re60e0dc rbdeba0b  
    2828//-----------------------------------------------------------------------------
    2929// Locks
    30 void lock      ( spinlock * DEBUG_CTX_PARAM2 );       // Lock the spinlock, spin if already acquired
    31 void lock_yield( spinlock * DEBUG_CTX_PARAM2 );       // Lock the spinlock, yield repeatedly if already acquired
    32 bool try_lock  ( spinlock * DEBUG_CTX_PARAM2 );       // Lock the spinlock, return false if already acquired
    33 void unlock    ( spinlock * );                        // Unlock the spinlock
     30bool try_lock  ( spinlock * DEBUG_CTX_PARAM2 );
     31void lock      ( spinlock * DEBUG_CTX_PARAM2 );
     32void lock_yield( spinlock * DEBUG_CTX_PARAM2 );
     33void unlock    ( spinlock * );
    3434
    3535struct semaphore {
     
    4848// Cluster
    4949struct cluster {
    50         spinlock ready_queue_lock;                      // Ready queue locks
    51         __thread_queue_t ready_queue;                   // Ready queue for threads
    52         unsigned long long int preemption;              // Preemption rate on this cluster
     50        __thread_queue_t ready_queue;
     51        spinlock lock;
    5352};
    5453
     
    7776static inline void ^?{}(FinishAction * this) {}
    7877
    79 // Processor
    80 // Wrapper around kernel threads
    8178struct processor {
    82         // Main state
    83         struct processorCtx_t * runner;                 // Coroutine ctx who does keeps the state of the processor
    84         cluster * cltr;                                 // Cluster from which to get threads
    85         pthread_t kernel_thread;                        // Handle to pthreads
     79        struct processorCtx_t * runner;
     80        cluster * cltr;
     81        pthread_t kernel_thread;
    8682
    87         // Termination
    88         volatile bool do_terminate;                     // Set to true to notify the processor should terminate
    89         semaphore terminated;                           // Termination synchronisation
     83        semaphore terminated;
     84        volatile bool is_terminated;
    9085
    91         // RunThread data
    92         struct FinishAction finish;                     // Action to do after a thread is ran
     86        struct FinishAction finish;
    9387
    94         // Preemption data
    95         struct alarm_node_t * preemption_alarm;         // Node which is added in the discrete event simulaiton
    96         bool pending_preemption;                        // If true, a preemption was triggered in an unsafe region, the processor must preempt as soon as possible
     88        struct alarm_node_t * preemption_alarm;
     89        unsigned int preemption;
    9790
    98 #ifdef __CFA_DEBUG__
    99         char * last_enable;                             // Last function to enable preemption on this processor
    100 #endif
     91        bool pending_preemption;
     92
     93        char * last_enable;
    10194};
    10295
Note: See TracChangeset for help on using the changeset viewer.