aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
* litmus: error out in ENOMEM caseBjoern B. Brandenburg2008-10-06
| | | | If we can't allocate heap nodes then we can't admit RT tasks.
* sched_trace: new implementationBjoern B. Brandenburg2008-10-06
| | | | | This provides and hooks up a new made-from-scratch sched_trace() implementation based on Feather-Trace and ftdev.
* litmus: provide rt task phase access macroBjoern B. Brandenburg2008-10-06
| | | | rationale: uniformity
* ftdev: provide a callback to test whether a device can be openedBjoern B. Brandenburg2008-10-06
| | | | This is useful to deny opening per-cpu buffers if a CPU is not online.
* ftdev: don't forget to disable eventsBjoern B. Brandenburg2008-09-17
| | | | | Otherwise required buffers may not be present anymore. This patch also fixes some minor initialization issues.
* Feather-Trace: use ftdev for overhead tracingBjoern B. Brandenburg2008-09-17
| | | | Much cleaner code now.
* feather-trace: introduce ftdev device driverBjoern B. Brandenburg2008-09-17
| | | | This will help to redruce code duplication in the long run.
* sched_trace: make inclusion optionalBjoern B. Brandenburg2008-09-16
| | | | We don't always need the file in the kernel.
* Merge branch 'master' into sched_traceBjoern B. Brandenburg2008-09-16
|\
| * time: prevent the loop in timespec_add_ns() from being optimised awaySegher Boessenkool2008-09-16
| | | | | | | | | | | | | | | | | | | | Since some architectures don't support __udivdi3(). Signed-off-by: Segher Boessenkool <segher@kernel.crashing.org> Cc: john stultz <johnstul@us.ibm.com> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* | sched_trace: provide new event record definitionsBjoern B. Brandenburg2008-09-16
|/ | | | | Each record is exactly 24 bytes (= three 64bit integers) long. We accept possibly truncated fields in order to save some space.
* cleanup: fix some sloppiness spotted by JohnBjoern B. Brandenburg2008-09-11
| | | | | This patch fixes some minor issues that inadvertedly crept in during development. Found in John's review.
* binomial heaps: reuse heap_node slab for allocationsBjoern B. Brandenburg2008-09-11
| | | | | | | We already have a heap_node slab in litmus.c. We can reuse it for the other allocations. This patch also fixes a misnaming of heap_node_alloc/free.
* Merge branch 'master' into pfair_fixBjoern B. Brandenburg2008-09-11
|\
| * GSN-EDF: make the CPU queue a proper heapBjoern B. Brandenburg2008-09-11
| | | | | | | | | | | | 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).
| * edf_common: allow comparison of two NULL pointersBjoern B. Brandenburg2008-09-11
| | | | | | | | | | | | If the first argument to edf_higher_prio is NULL, then just return 0, since it can't possibly have a higher piority than the second argument.
| * rt_domain: make release queue handling more efficientBjoern B. Brandenburg2008-09-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * this version is more efficient in the case of heavy-contentionBjoern B. Brandenburg2008-09-08
| |
| * replace TTS locks with ticket locksBjoern B. Brandenburg2008-09-05
| |
* | PFAIR: don't crash on weight 1.0 tasksBjoern B. Brandenburg2008-08-25
|/ | | | Avoid division by zero.
* litmus heaps: initialize min to nullBjoern B. Brandenburg2008-07-18
| | | | This fixes a copy&paste bug reported by John.
* PFAIR: Add support for sporad task releases.John Calandrino2008-07-14
|
* 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.