Ignore:
Timestamp:
Jan 7, 2022, 1:20:50 PM (2 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, ast-experimental, enum, forall-pointer-decay, master, pthread-emulation, qualifiedEnum
Children:
4233338b, a39a289, ae7adbc4
Parents:
6fafda8
Message:

Processors should now correctly be unconditionnaly woken-up on termination

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/concurrency/kernel.cfa

    r6fafda8 r7d0ebd0  
    142142extern void __disable_interrupts_hard();
    143143extern void __enable_interrupts_hard();
    144 
    145 static inline void __disable_interrupts_checked() {
    146         /* paranoid */ verify( __preemption_enabled() );
    147         disable_interrupts();
    148         /* paranoid */ verify( ! __preemption_enabled() );
    149 }
    150 
    151 static inline void __enable_interrupts_checked( bool poll = true ) {
    152         /* paranoid */ verify( ! __preemption_enabled() );
    153         enable_interrupts( poll );
    154         /* paranoid */ verify( __preemption_enabled() );
    155 }
    156144
    157145
     
    776764// Unconditionnaly wake a thread
    777765void __wake_proc(processor * this) {
     766        /* paranoid */ verify( ! __preemption_enabled() );
     767
    778768        __cfadbg_print_safe(runtime_core, "Kernel : waking Processor %p\n", this);
    779769
    780         __disable_interrupts_checked();
    781                 /* paranoid */ verify( ! __preemption_enabled() );
    782                 eventfd_t val;
    783                 val = 1;
    784                 eventfd_write( this->idle_fd, val );
    785         __enable_interrupts_checked();
     770        eventfd_t val;
     771        val = 1;
     772        eventfd_write( this->idle_fd, val );
     773
     774        /* paranoid */ verify( ! __preemption_enabled() );
    786775}
    787776
Note: See TracChangeset for help on using the changeset viewer.