aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
| * 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
|
* Feather-Trace: Make inclusion optionalBjoern2008-05-01
| | | | We need to disable Feather-Trace on the Niagara for now, and there is no reason to always include it, anyway.
* LITMUS: reorganize system callsBjoern B. Brandenburg2008-05-01
| | | | | | - this will make it easier to maintain it across multiple platforms and versions - also remove obsolete SRP system call
* FMLP: rename pi->fmlpBjoern B. Brandenburg2008-05-01
| | | | | pi is confusing, there are many PI schemes in the world. We implement the FMLP, thus we should label it as such.
* SRP+FMLP: reorganize codeBjoern B. Brandenburg2008-05-01
| | | | | - split SRP into its own file - rename litmus_sem.c to fmlp.c, since that is what it is
* SRP: improve robustnessBjoern B. Brandenburg2008-05-01
| | | | | | | | The SRP implementation did not correctly address various suspension-related scenarios correctly. Now the need for SRP blocking is tested on each scheduling event. This ensures mutual exclusion under the SRP even in the face of unexpected suspensions, for example due to IO.
* SRP: simplify codeBjoern B. Brandenburg2008-05-01
|
* SRP: record owner in semaphoresBjoern B. Brandenburg2008-05-01
|
* allow real-time tasks access to SRP resources (for setup)Bjoern B. Brandenburg2008-05-01
|
* update SRP implBjoern B. Brandenburg2008-05-01
| | | | This is the first step in cleaning up the SRP implementation.
* LITMUS: let plugins declare their willingness to allow synchronizationBjoern B. Brandenburg2008-05-01
| | | | | - don't let SRP be active under GSN-EDF - later, don't let FMLP be active under PFAIR, either
* return the number of released tasksBjoern B. Brandenburg2008-05-01
|
* Merge branch 'synch_quanta' into mergeBjoern B. Brandenburg2008-05-01
|\ | | | | | | | | | | | | | | | | | | | | Conflicts: litmus/edf_common.c litmus/sched_gsn_edf.c litmus/sched_psn_edf.c Minor clashes between sched_clock() -> litmus_clock() and jobs.c refactoring merged by hand. The result has been compile-tested.
| * LITMUS CORE: Release jobs with hrtimersJohn M. Calandrino2008-04-30
| | | | | | | | John's proposal for how to release jobs with hrtimers.
* | Merge branch 'synch_quanta'Bjoern B. Brandenburg2008-04-30
|\|
| * add synchronized quanta supportJohn M. Calandrino2008-04-30
| | | | | | | | | | Modify offsets in such a way that quantum boundaries occur either synchronized or staggered (based on the kernel command line).
* | work around the missing to reschedule problemBjoern B. Brandenburg2008-04-30
| | | | | | | | (dirty hack, could be done nicer)
* | litmus: move job release functions to common codeBjoern B. Brandenburg2008-04-30
| |
* | litmus x86: hook up synchronous system callsBjoern B. Brandenburg2008-02-19
| | | | | | | | This exposes the new task release system calls to user space.
* | litmus: synchronous task release APIBjoern B. Brandenburg2008-02-19
|/ | | | | | | | | This adds the internals for two new systems calls: - sys_wait_for_ts_release() - sys_release_ts() The first system call suspends a task until the task systems is released with the second system call.