Ignore:
File:
1 edited

Legend:

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

    r58d64a4 r0190480  
    237237        $coroutine * proc_cor = get_coroutine(this->runner);
    238238
     239        // Update global state
     240        kernelTLS.this_thread = thrd_dst;
     241
    239242        // set state of processor coroutine to inactive
    240243        verify(proc_cor->state == Active);
     
    250253                        thrd_dst->unpark_stale = true;
    251254                )
    252                 // Update global state
    253                 kernelTLS.this_thread = thrd_dst;
    254255
    255256                /* paranoid */ verify( ! kernelTLS.preemption_state.enabled );
     
    258259                /* paranoid */ verifyf( ((uintptr_t)thrd_dst->context.SP) > ((uintptr_t)__get_stack(thrd_dst->curr_cor)->limit) || thrd_dst->curr_cor == proc_cor, "ERROR : Destination $thread %p has been corrupted.\n StackPointer too large.\n", thrd_dst ); // add escape condition if we are setting up the processor
    259260
    260 
    261261                // set context switch to the thread that the processor is executing
    262262                verify( thrd_dst->context.SP );
     
    269269                /* paranoid */ verify( ! kernelTLS.preemption_state.enabled );
    270270
    271                 // Reset global state
    272                 kernelTLS.this_thread = 0p;
    273271
    274272                // We just finished running a thread, there are a few things that could have happened.
     
    315313        // Just before returning to the processor, set the processor coroutine to active
    316314        proc_cor->state = Active;
     315        kernelTLS.this_thread = 0p;
    317316
    318317        /* paranoid */ verify( ! kernelTLS.preemption_state.enabled );
     
    522521        disable_interrupts();
    523522                /* paranoid */ verify( ! kernelTLS.preemption_state.enabled );
    524                 post( this->idle );
     523                bool ret = post( this->idle );
    525524        enable_interrupts( __cfaabi_dbg_ctx );
    526525}
Note: See TracChangeset for help on using the changeset viewer.