| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a regression introduced by the RTSS'09
improvements.
Just calling unlink() on any task is not safe: it might
reside in a release heap. This was done in the case
that a new blocker increases a lock holder's priority.
To avoid crashing in this case, the FMLP code was changed
to be more careful when propagating an inherited priority.
The code now detects three different scenarios and uses
heap_decrease() to update the position of the lock holder's
heap node. This fixes a simple test case.
|
|
|
|
|
| |
This fixes a bug that lead to task stacks being used s
simultaneously on two CPUs.
|
| |
|
|
|
|
| |
this removes a blatant case of copy&paste reuse
|
| |
|
| |
|
|
|
|
|
| |
Not-yet-released jobs were not properly queued because of an overly complicated
and wrong requeue implementation. Found by visualizing sched_traces.
|
|
|
|
|
| |
This provides and hooks up a new made-from-scratch sched_trace()
implementation based on Feather-Trace and ftdev.
|
|
|
|
|
| |
This patch fixes some minor issues that inadvertedly crept in during
development. Found in John's review.
|
|
|
|
|
|
| |
This should be faster on high CPU counts.
The list-based implementation was O(1) + O(N) for a position update.
The heap-based implementation is O(log N) + O(log N).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Instead of having hrtimers for each task, we now have only
one hrtimer per rt_domain. To-be-released tasks are grouped in
mergable heaps and presented as a bunch on each release.
This approach should allow us to reduce the worst-case overhead
at hyperperiod boundaries significantly.
1) less hrtimer overhead
2) less calls to the active plugin
3) only one CPU handles releases at a time
4) (2) & (3) should bring down lock contention significantly
|
| |
|
|
|
|
| |
Without this change, a BUG_ON() in schedule() triggers.
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
For debugging, make relinking optimizations available in the TRACE() log.
|
|
|
|
| |
Make CPU state available to gdb.
|
|
|
|
| |
Blocking and preemptions must take precedence over forced job completions.
|
|
|
|
|
| |
This change fixes a race where a job could be executed on more than one
CPU, which to random crashes.
|
| |
|
| |
|
|
|
|
|
| |
- don't let SRP be active under GSN-EDF
- later, don't let FMLP be active under PFAIR, either
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |
| |
| |
| | |
John's proposal for how to release jobs with hrtimers.
|
|/ |
|
|
This introduces the core changes ported from LITMUS 2007.
The kernel seems to work under QEMU, but many bugs probably remain.
|