Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/proc/scheduler.c

    ra6e55886 rba9a150  
    5454#include <atomic.h>
    5555#include <synch/spinlock.h>
    56 #include <synch/workqueue.h>
    57 #include <synch/rcu.h>
    5856#include <config.h>
    5957#include <context.h>
     
    9088{
    9189        before_thread_runs_arch();
    92         rcu_before_thread_runs();
    9390
    9491#ifdef CONFIG_FPU_LAZY
     
    131128static void after_thread_ran(void)
    132129{
    133         workq_after_thread_ran();
    134         rcu_after_thread_ran();
    135130        after_thread_ran_arch();
    136131}
     
    139134void scheduler_fpu_lazy_request(void)
    140135{
    141 restart:
    142136        fpu_enable();
    143137        irq_spinlock_lock(&CPU->lock, false);
     
    158152                fpu_context_restore(THREAD->saved_fpu_context);
    159153        } else {
    160                 /* Allocate FPU context */
    161                 if (!THREAD->saved_fpu_context) {
    162                         /* Might sleep */
    163                         irq_spinlock_unlock(&THREAD->lock, false);
    164                         irq_spinlock_unlock(&CPU->lock, false);
    165                         THREAD->saved_fpu_context =
    166                             (fpu_context_t *) slab_alloc(fpu_context_cache, 0);
    167 
    168                         /* We may have switched CPUs during slab_alloc */
    169                         goto restart;
    170                 }
    171154                fpu_init();
    172155                THREAD->fpu_context_exists = true;
     
    430413
    431414                case Exiting:
    432                         rcu_thread_exiting();
    433415                repeat:
    434416                        if (THREAD->detached) {
Note: See TracChangeset for help on using the changeset viewer.