Changeset 235d31d in mainline for kernel/generic/src/proc/scheduler.c


Ignore:
Timestamp:
2014-12-22T17:47:40Z (10 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8c7d5ad
Parents:
eae91e0 (diff), 759ea0d (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.
Message:

Merge the CHT pre-integration branch

This branch contains:

  • the merge of lp:~adam-hraska+lp/helenos/rcu, which brings:
  • a new preemptible kernel RCU variant called A-RCU,
  • a preemptible variant of Podzimek's non-preemptible kernel RCU and
  • a new variant of usersace RCU,
  • a new concurrent hash table (CHT) implementation based on RCU,
  • a deployment of CHT in kernel futex handling,
  • a deployment of the userspace RCU in the implementation of upgradable futexes,

all described in Adam Hraska's master thesis named Read-Copy-Update
for HelenOS, defended in 2013 at MFF UK; furthemore, the branch
fixes two synchronization bugs in condvars and waitq, respectively:

  • revid:adam.hraska+hos@gmail.com-20121116144921-3to9u1tn1sg07rg7
  • revid:adam.hraska+hos@gmail.com-20121116173623-km7gwtqixwudpe66
  • build fixes required to pass make check
  • overhaul of ia64 and sparc64 trap handling, to allow exc_dispatch() to be used now when the kernel is more picky about CPU state accounting
  • an important fix of the sparc64/sun4v preemptible trap handler
  • various other fixes of issues discovered on non-x86 architectures
File:
1 edited

Legend:

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

    reae91e0 r235d31d  
    5252#include <atomic.h>
    5353#include <synch/spinlock.h>
     54#include <synch/workqueue.h>
     55#include <synch/rcu.h>
    5456#include <config.h>
    5557#include <context.h>
     
    6466#include <debug.h>
    6567#include <stacktrace.h>
     68#include <cpu.h>
    6669
    6770static void scheduler_separated_stack(void);
     
    8790{
    8891        before_thread_runs_arch();
     92        rcu_before_thread_runs();
    8993       
    9094#ifdef CONFIG_FPU_LAZY
     
    127131static void after_thread_ran(void)
    128132{
     133        workq_after_thread_ran();
     134        rcu_after_thread_ran();
    129135        after_thread_ran_arch();
    130136}
     
    219225                goto loop;
    220226        }
     227
     228        ASSERT(!CPU->idle);
    221229       
    222230        unsigned int i;
     
    398406        ASSERT((!THREAD) || (irq_spinlock_locked(&THREAD->lock)));
    399407        ASSERT(CPU != NULL);
     408        ASSERT(interrupts_disabled());
    400409       
    401410        /*
     
    421430               
    422431                case Exiting:
     432                        rcu_thread_exiting();
    423433repeat:
    424434                        if (THREAD->detached) {
Note: See TracChangeset for help on using the changeset viewer.