Changeset 12c1eef for libcfa/src/concurrency/kernel/startup.cfa
- Timestamp:
- Jan 19, 2022, 2:36:56 PM (4 years ago)
- Branches:
- ADT, ast-experimental, enum, master, pthread-emulation, qualifiedEnum
- Children:
- 97c215f
- Parents:
- 5235d49 (diff), 6a33e40 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - File:
-
- 1 edited
-
libcfa/src/concurrency/kernel/startup.cfa (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/concurrency/kernel/startup.cfa
r5235d49 r12c1eef 34 34 #include "kernel_private.hfa" 35 35 #include "startup.hfa" // STARTUP_PRIORITY_XXX 36 #include "limits.hfa" 36 37 #include "math.hfa" 37 38 … … 101 102 extern void __wake_proc(processor *); 102 103 extern int cfa_main_returned; // from interpose.cfa 104 extern uint32_t __global_random_seed; 103 105 104 106 //----------------------------------------------------------------------------- … … 176 178 177 179 178 179 180 //============================================================================================= 180 181 // Kernel Setup logic … … 279 280 // When its coroutine terminates, it return control to the mainThread 280 281 // which is currently here 282 /* paranoid */ verify( !__atomic_load_n(&mainProcessor->do_terminate, __ATOMIC_ACQUIRE) ); 281 283 __atomic_store_n(&mainProcessor->do_terminate, true, __ATOMIC_RELEASE); 284 __wake_proc( mainProcessor ); 282 285 __kernel_last_resume( __cfaabi_tls.this_processor ); 283 286 mainThread->self_cor.state = Halted; … … 403 406 404 407 __cfaabi_tls.this_thread->curr_cor = dst; 405 __stack_prepare( &dst->stack, 65000);408 __stack_prepare( &dst->stack, DEFAULT_STACK_SIZE ); 406 409 __cfactx_start(main, dst, this->runner, __cfactx_invoke_coroutine); 407 410 … … 487 490 preferred = ready_queue_new_preferred(); 488 491 last_proc = 0p; 492 random_state = __global_random_seed; 489 493 #if defined( __CFA_WITH_VERIFY__ ) 490 494 canary = 0x0D15EA5E0D15EA5Ep; … … 511 515 this.rdq.its = 0; 512 516 this.rdq.itr = 0; 513 this.rdq.id = -1u; 514 this.rdq.target = -1u; 515 this.rdq.last = -1u; 516 this.rdq.cutoff = 0ull; 517 this.rdq.id = MAX; 518 this.rdq.target = MAX; 519 this.rdq.last = MAX; 520 this.rdq.cpu = 0; 521 // this.rdq.cutoff = 0ull; 517 522 do_terminate = false; 518 523 preemption_alarm = 0p; … … 564 569 extern size_t __page_size; 565 570 void ^?{}(processor & this) with( this ){ 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); 571 /* paranoid */ verify( !__atomic_load_n(&do_terminate, __ATOMIC_ACQUIRE) ); 572 __cfadbg_print_safe(runtime_core, "Kernel : core %p signaling termination\n", &this); 573 574 __atomic_store_n(&do_terminate, true, __ATOMIC_RELAXED); 575 __disable_interrupts_checked(); 570 576 __wake_proc( &this ); 571 572 wait( terminated ); 573 /* paranoid */ verify( active_processor() != &this);574 }577 __enable_interrupts_checked(); 578 579 wait( terminated ); 580 /* paranoid */ verify( active_processor() != &this); 575 581 576 582 __destroy_pthread( kernel_thread, this.stack, 0p ); … … 682 688 [this->unique_id, last_size] = ready_mutate_register(); 683 689 690 this->rdq.cpu = __kernel_getcpu(); 691 684 692 this->cltr->procs.total += 1u; 685 693 insert_last(this->cltr->procs.actives, *this); … … 721 729 check( pthread_attr_init( &attr ), "pthread_attr_init" ); // initialize attribute 722 730 723 size_t stacksize; 724 // default stack size, normally defined by shell limit 725 check( pthread_attr_getstacksize( &attr, &stacksize ), "pthread_attr_getstacksize" ); 726 assert( stacksize >= PTHREAD_STACK_MIN ); 731 size_t stacksize = DEFAULT_STACK_SIZE; 727 732 728 733 void * stack; … … 749 754 #endif 750 755 751 752 756 check( pthread_attr_setstack( &attr, stack, stacksize ), "pthread_attr_setstack" ); 753 754 757 check( pthread_create( pthread, &attr, start, arg ), "pthread_create" ); 755 758 return stack;
Note:
See TracChangeset
for help on using the changeset viewer.