- File:
-
- 1 edited
-
libcfa/src/concurrency/kernel/startup.cfa (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/kernel/startup.cfa
r7d0ebd0 reaf269d 279 279 // When its coroutine terminates, it return control to the mainThread 280 280 // which is currently here 281 /* paranoid */ verify( !__atomic_load_n(&mainProcessor->do_terminate, __ATOMIC_ACQUIRE) );282 281 __atomic_store_n(&mainProcessor->do_terminate, true, __ATOMIC_RELEASE); 283 __wake_proc( mainProcessor );284 282 __kernel_last_resume( __cfaabi_tls.this_processor ); 285 283 mainThread->self_cor.state = Halted; … … 566 564 extern size_t __page_size; 567 565 void ^?{}(processor & this) with( this ){ 568 /* paranoid */ verify( !__atomic_load_n(&do_terminate, __ATOMIC_ACQUIRE) ); 569 __cfadbg_print_safe(runtime_core, "Kernel : core %p signaling termination\n", &this); 570 571 __atomic_store_n(&do_terminate, true, __ATOMIC_RELAXED); 572 __disable_interrupts_checked(); 566 if( ! __atomic_load_n(&do_terminate, __ATOMIC_ACQUIRE) ) { 567 __cfadbg_print_safe(runtime_core, "Kernel : core %p signaling termination\n", &this); 568 569 __atomic_store_n(&do_terminate, true, __ATOMIC_RELAXED); 573 570 __wake_proc( &this ); 574 __enable_interrupts_checked(); 575 576 wait( terminated);577 /* paranoid */ verify( active_processor() != &this);571 572 wait( terminated ); 573 /* paranoid */ verify( active_processor() != &this); 574 } 578 575 579 576 __destroy_pthread( kernel_thread, this.stack, 0p );
Note:
See TracChangeset
for help on using the changeset viewer.