Changes in src/libcfa/concurrency/kernel.c [b69ea6b:d8548e2]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/libcfa/concurrency/kernel.c
rb69ea6b rd8548e2 60 60 // volatile thread_local unsigned short disable_preempt_count = 1; 61 61 62 volatile thread_local __cfa_kernel_preemption_ data_t preemption= { false, false, 1 };62 volatile thread_local __cfa_kernel_preemption_state_t preemption_state = { false, false, 1 }; 63 63 64 64 //----------------------------------------------------------------------------- … … 180 180 ready_queue_lock{}; 181 181 182 preemption = default_preemption();182 preemption_rate = default_preemption(); 183 183 } 184 184 … … 209 209 if(readyThread) 210 210 { 211 verify( !preemption .enabled );211 verify( !preemption_state.enabled ); 212 212 213 213 runThread(this, readyThread); 214 214 215 verify( !preemption .enabled );215 verify( !preemption_state.enabled ); 216 216 217 217 //Some actions need to be taken from the kernel … … 262 262 void finishRunning(processor * this) with( this->finish ) { 263 263 if( action_code == Release ) { 264 verify( !preemption .enabled );264 verify( !preemption_state.enabled ); 265 265 unlock( *lock ); 266 266 } … … 269 269 } 270 270 else if( action_code == Release_Schedule ) { 271 verify( !preemption .enabled );271 verify( !preemption_state.enabled ); 272 272 unlock( *lock ); 273 273 ScheduleThread( thrd ); 274 274 } 275 275 else if( action_code == Release_Multi ) { 276 verify( !preemption .enabled );276 verify( !preemption_state.enabled ); 277 277 for(int i = 0; i < lock_count; i++) { 278 278 unlock( *locks[i] ); … … 306 306 this_coroutine = NULL; 307 307 this_thread = NULL; 308 preemption .enabled = false;309 preemption .disable_count = 1;308 preemption_state.enabled = false; 309 preemption_state.disable_count = 1; 310 310 // SKULLDUGGERY: We want to create a context for the processor coroutine 311 311 // which is needed for the 2-step context switch. However, there is no reason … … 351 351 coroutine_desc * dst = get_coroutine(*this->runner); 352 352 353 verify( !preemption .enabled );353 verify( !preemption_state.enabled ); 354 354 355 355 create_stack(&dst->stack, dst->stack.size); 356 356 CtxStart(this->runner, CtxInvokeCoroutine); 357 357 358 verify( !preemption .enabled );358 verify( !preemption_state.enabled ); 359 359 360 360 dst->last = src; … … 382 382 src->state = Active; 383 383 384 verify( !preemption .enabled );384 verify( !preemption_state.enabled ); 385 385 } 386 386 … … 392 392 verify( thrd->self_cor.state != Halted ); 393 393 394 verify( !preemption .enabled );394 verify( !preemption_state.enabled ); 395 395 396 396 verifyf( thrd->next == NULL, "Expected null got %p", thrd->next ); … … 402 402 } 403 403 404 verify( !preemption .enabled );404 verify( !preemption_state.enabled ); 405 405 } 406 406 407 407 thread_desc * nextThread(cluster * this) with( *this ) { 408 verify( !preemption .enabled );408 verify( !preemption_state.enabled ); 409 409 lock( ready_queue_lock __cfaabi_dbg_ctx2 ); 410 410 thread_desc * head = pop_head( ready_queue ); 411 411 unlock( ready_queue_lock ); 412 verify( !preemption .enabled );412 verify( !preemption_state.enabled ); 413 413 return head; 414 414 } … … 416 416 void BlockInternal() { 417 417 disable_interrupts(); 418 verify( !preemption .enabled );418 verify( !preemption_state.enabled ); 419 419 returnToKernel(); 420 verify( !preemption .enabled );420 verify( !preemption_state.enabled ); 421 421 enable_interrupts( __cfaabi_dbg_ctx ); 422 422 } … … 427 427 this_processor->finish.lock = lock; 428 428 429 verify( !preemption .enabled );429 verify( !preemption_state.enabled ); 430 430 returnToKernel(); 431 verify( !preemption .enabled );431 verify( !preemption_state.enabled ); 432 432 433 433 enable_interrupts( __cfaabi_dbg_ctx ); … … 439 439 this_processor->finish.thrd = thrd; 440 440 441 verify( !preemption .enabled );441 verify( !preemption_state.enabled ); 442 442 returnToKernel(); 443 verify( !preemption .enabled );443 verify( !preemption_state.enabled ); 444 444 445 445 enable_interrupts( __cfaabi_dbg_ctx ); … … 453 453 this_processor->finish.thrd = thrd; 454 454 455 verify( !preemption .enabled );455 verify( !preemption_state.enabled ); 456 456 returnToKernel(); 457 verify( !preemption .enabled );457 verify( !preemption_state.enabled ); 458 458 459 459 enable_interrupts( __cfaabi_dbg_ctx ); … … 466 466 this_processor->finish.lock_count = count; 467 467 468 verify( !preemption .enabled );468 verify( !preemption_state.enabled ); 469 469 returnToKernel(); 470 verify( !preemption .enabled );470 verify( !preemption_state.enabled ); 471 471 472 472 enable_interrupts( __cfaabi_dbg_ctx ); … … 481 481 this_processor->finish.thrd_count = thrd_count; 482 482 483 verify( !preemption .enabled );483 verify( !preemption_state.enabled ); 484 484 returnToKernel(); 485 verify( !preemption .enabled );485 verify( !preemption_state.enabled ); 486 486 487 487 enable_interrupts( __cfaabi_dbg_ctx ); … … 489 489 490 490 void LeaveThread(__spinlock_t * lock, thread_desc * thrd) { 491 verify( !preemption .enabled );491 verify( !preemption_state.enabled ); 492 492 this_processor->finish.action_code = thrd ? Release_Schedule : Release; 493 493 this_processor->finish.lock = lock; … … 503 503 // Kernel boot procedures 504 504 void kernel_startup(void) { 505 verify( !preemption .enabled );505 verify( !preemption_state.enabled ); 506 506 __cfaabi_dbg_print_safe("Kernel : Starting\n"); 507 507 … … 548 548 __cfaabi_dbg_print_safe("Kernel : Started\n--------------------------------------------------\n\n"); 549 549 550 verify( !preemption .enabled );550 verify( !preemption_state.enabled ); 551 551 enable_interrupts( __cfaabi_dbg_ctx ); 552 verify( preemption .enabled );552 verify( preemption_state.enabled ); 553 553 } 554 554 … … 556 556 __cfaabi_dbg_print_safe("\n--------------------------------------------------\nKernel : Shutting down\n"); 557 557 558 verify( preemption .enabled );558 verify( preemption_state.enabled ); 559 559 disable_interrupts(); 560 verify( !preemption .enabled );560 verify( !preemption_state.enabled ); 561 561 562 562 // SKULLDUGGERY: Notify the mainProcessor it needs to terminates.
Note: See TracChangeset
for help on using the changeset viewer.