aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* make inclusion of SRP support optional2008.1Bjoern B. Brandenburg2008-07-01
| | | | we can disable it to improve performance when it is not needed
* compile without FMLP support if it is disabledBjoern B. Brandenburg2008-07-01
|
* don't include NP-Flag syscalls if config option is not selectedBjoern B. Brandenburg2008-07-01
|
* Add config options to enable and disable the FMLP.Bjoern B. Brandenburg2008-07-01
| | | | NP-Flag support appears to be broken at the moment on SPARC64.
* LITMUS: Add the PFAIR plugin.RTSS08Bjoern B. Brandenburg2008-05-23
| | | | | | | | | | | | | | | | | This adds the PFAIR plugin. The implementation is based on an earlier version developed by John Calandrino. Features: - supports aligned and staggered quanta - supports early releasing - uses mergable heaps to limit overheads This version still has a couple of limitations: - no support for sporadic; all tasks are assumed to be periodic - tasks are limited to a maximum period of 1000 quanta - overload (especially in the tick) is not handled gracefully
* Feather-Trace: Increase the trace buffer sizeBjoern B. Brandenburg2008-05-22
| | | | | We probably don't get such a big buffer, but the allocation code scales it down if such a large memory chunk is not available.
* Feather-Trace: make SCHED only depend on nextBjoern B. Brandenburg2008-05-22
|
* Fix task-specific tracing on sparc64Bjoern B. Brandenburg2008-05-22
| | | | | The default implementation contained a bug in a macro. Also, add a cast to silence the compiler.
* record task type in feather trace time stampBjoern B. Brandenburg2008-05-22
|
* Feather-Trace: use fixed size fieldsBjoern B. Brandenburg2008-05-22
|
* Merge branch 'feather-trace'Bjoern B. Brandenburg2008-05-22
|\
| * Refactor Feather-TraceBjoern B. Brandenburg2008-05-19
| | | | | | | | | | - move platform dependent bits into arch/ - provide a default implementation (used for sparc64)
* | Add Feather-Trace support.Bjoern B. Brandenburg2008-05-22
| | | | | | | | | | | | | | | | - TICK - SCHED1 - SCHED2 - RELEASE - CXS
* | Feather-Trace: support draining of trace bufferBjoern B. Brandenburg2008-05-22
| |
* | C-EDF: Update processor state on task exitJohn Calandrino2008-05-22
| |
* | GSN/PSN: Update processor state on task exitBjoern B. Brandenburg2008-05-22
|/ | | | Without this change, a BUG_ON() in schedule() triggers.
* Use binomial heaps as priority queues.Bjoern B. Brandenburg2008-05-19
| | | | | | The list-based priority queues did not perform well on the Niagara T2000. This heap-based implementation should perform much faster when queues are long.
* Add the C-EDF plugin.John Calandrino2008-05-18
|
* Merge branch 'release_refactor'Bjoern B. Brandenburg2008-05-14
|\
| * introduce release_at callback to LITMUS plugin interfaceBjoern B. Brandenburg2008-05-12
| | | | | | | | | | PFAIR needs to do things a bit differently. This callback will allow plugins to handle synchronous releases differently.
* | add task_rt() macroBjoern B. Brandenburg2008-05-14
|/ | | | Make code more readable and shorter.
* GSN/PSN: improve lockingBjoern B. Brandenburg2008-05-11
|
* TRACE(): facilitate debuggingBjoern B. Brandenburg2008-05-11
| | | | | | | - don't deadlock on a runqueue lock in case of a bug inside the scheduler - write printk() messages to TRACE() - tell user of TRACE() buffer
* LITMUS Core: delay migration until context switch is completeBjoern B. Brandenburg2008-05-10
| | | | | | Also: - add some memory barriers, to be on the safe side - fix some line breaks
* initialize spin locks in rt_domain code properlyBjoern B. Brandenburg2008-05-10
| | | | | As discovered by John, the old way of initializing the spin locks breaks when rt_domains are allocated dynamically.
* LITMUS: improve coreBjoern B. Brandenburg2008-05-10
| | | | | - give TRACE() messages sequence numbers - remove a some old, unused cruft
* two fixes and some logging improvementBjoern B. Brandenburg2008-05-10
| | | | | | - remove outdated comment - reorder stack_in_use marker to be in front of finish_lock_switch() - add TRACE()s to try_to_wake_up()
* LITMUS: don't let rt_domain deadlock in global pluginsBjoern B. Brandenburg2008-05-10
| | | | | | | | | | | | | | | | | | | | | | | | | | On the T2000, GSN-EDF would eventually deadlock. This was caused by a deadlock involving the release and ready locks of its rt_domain. Usually, the dependency in GSN-EDF is: function held -> required ========================================= enqueue: ready -> release gsnedf_job_release: -> ready arm_release_timer: -> release So far so good. The problem arose when hrtimer detected that the timer being armed had already expired (must have been just a few nanoseconds) and decided to call the callback directly WHILE HOLDING THE RELEASE LOCK. Which led to the following result: function held -> required CPU ==================================================== enqueue: ready -> release 5 gsnedf_job_release: release -> ready 6 We avoid this problem now by dropping the release lock in arm_release_timer() before calling the job release callback.
* LITMUS: Use atomic ops to clear bit.Bjoern B. Brandenburg2008-05-09
| | | | | This is modeled after tasklets. Just writing a 0 does not have the desired effect on SPARC64.
* LITMUS: remove outdated commentBjoern B. Brandenburg2008-05-05
|
* GSN-EDF: log relinking decisionsBjoern B. Brandenburg2008-05-05
| | | | For debugging, make relinking optimizations available in the TRACE() log.
* LITMUS: don't invoke plugin for non-real-time tasksBjoern B. Brandenburg2008-05-05
| | | | The plugins don't care about best-effort tasks. Don't bother them.
* LITMUS: disable Linux scheduler optimizationBjoern B. Brandenburg2008-05-05
| | | | | This caused LITMUS^RT real-time tasks to be missed, which in turn caused all kinds of inconsistent state.
* GSN-EDF: facilitate debuggingBjoern B. Brandenburg2008-05-04
| | | | Make CPU state available to gdb.
* EDF: don't arm timers multiple timesBjoern B. Brandenburg2008-05-04
| | | | Blocking and preemptions must take precedence over forced job completions.
* LITMUS: avoid using the same stack on two CPUs in global schedulersBjoern B. Brandenburg2008-05-04
| | | | | This change fixes a race where a job could be executed on more than one CPU, which to random crashes.
* LITMUS: don't let real-time tasks fork real-time tasks.Bjoern B. Brandenburg2008-05-03
| | | | The forked task will be a best-effort task.
* LITMUS: provide more debug infoBjoern B. Brandenburg2008-05-03
| | | | Added one message and improved another.
* Feather-Trace: fix section mismatch warningBjoern B. Brandenburg2008-05-03
| | | | Don't place events in __init functions.
* LITMUS: use no_rqlock_work to avoid ksoftirqd deadlockBjoern B. Brandenburg2008-05-02
| | | | | We can't use tasklets from within the scheduler. User no_rqlock_work instead.
* LITMUS: add framework for carrying out jobs after dropping rq locksBjoern B. Brandenburg2008-05-02
| | | | | Many things can't be done from within the scheduler. This framework should make it easer to defer them.
* Merge commit 'jupiter/debug' into debugBjoern B. Brandenburg2008-05-02
|\
| * LITMUS: rework rt_domain to not cause circular lockig dependenciesBjoern B. Brandenburg2008-05-02
| |
| * LITMUS: rework job migration codeBjoern B. Brandenburg2008-05-02
| | | | | | | | | | The old version had a significant window for races with interrupt handlers executing on other CPUs.
| * GSN-EDF: add extra debug infoBjoern B. Brandenburg2008-05-02
| |
* | LITMUS: don't let real-time tasks migrate by themselvesBjoern B. Brandenburg2008-05-02
|/ | | | | | | | A proper real-time migration works as follows: 1) transition to best-effort task 2) migrate to target CPU 3) update real-time parameters 4) transition to real-time task
* LITMUS: use litmus_clock() in sync.cBjoern B. Brandenburg2008-05-01
| | | | | sched_clock() is offset from litmus_clock(), jobs were being delayed for long times.
* sparc: force resched on IPIBjoern B. Brandenburg2008-05-01
| | | | | | | | | | | | This replicates 1a229e67e4cf08a539fc558d017a95ff03705ac5 for sparc64. This is what happens: smp_send_reschedule() -> smp_receive_signal() (smp.c) ~~> IPI ~~> xcall_receive_signal (ultra.S) ~~> soft interrupt (ttable.S) -> smp_receive_signal_client (smp.c) -> set_tsk_need_resched()
* sparc64: include LITMUS syscallsBjoern B. Brandenburg2008-05-01
| | | add LITMUS syscalls in jump table and unistd.h
* sparc64: enable LITMUS configuration optionsBjoern B. Brandenburg2008-05-01
|