aboutsummaryrefslogtreecommitdiffstats
path: root/litmus
Commit message (Collapse)AuthorAge
...
* | | rt_domain: do not allocate/free memory in release queue handlingBjoern B. Brandenburg2009-04-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a bunch of bugs: - a memory leak (some heap nodes were never reclaimed) - a locking rules violation (memory allocation can wake up kswapd, which causes a circular locking dependency between the release queue lock and the run queue locks Also, allocating memory in a hot path was never particularly clever. This patch pre-allocates memory at task-creation time, but does not change how the release queue works overall.
* | | add release_heap slabBjoern B. Brandenburg2009-04-09
| | | | | | | | | | | | Prepare for centralized allocation of release heaps.
* | | litmus core: use heap node allocation APIBjoern B. Brandenburg2009-04-09
| | | | | | | | | | | | Avoid duplication.
* | | add diagnostic to EDF priority functionBjoern B. Brandenburg2009-04-09
| | | | | | | | | | | | | | | Comparing a task against itself shouldn't happen if everything works correctly.
* | | add GQ-EDFBjoern B. Brandenburg2009-04-09
| | | | | | | | | | | | Support for Global Quantum-Driven EDF
* | | rt_domain: don't deadlock in hrtimer_cancel()Bjoern B. Brandenburg2009-04-08
| | | | | | | | | | | | | | | | | | | | | | | | In the infrequent case that arm_release_timer() is called while the timer callback is executing on the same CPU (e.g., a timer tick occurred), then hrtimer_cancel() will get stuck in an infinite loop. This can be avoided by using hrtimer_try_to_cancel() instead.
* | | litmus core: respect preempt_count hackBjoern B. Brandenburg2009-04-08
| | | | | | | | | | | | | | | Don't confuse the plugins by calling task_block()/wake_up() when they wouldn't have been called without the race.
* | | repair last commitBjoern B. Brandenburg2009-04-02
| | |
* | | move task present flag from PFAIR to Litmus coreBjoern B. Brandenburg2009-04-02
| | | | | | | | | | | | | | | Other quantum-based plugins also require the present flag. Hence, move it to the core data structure
* | | fix permssions in litmus directoryBjoern B. Brandenburg2009-04-02
| |/ |/|
* | Merge branch 'syscall_ohead'Bjoern B. Brandenburg2009-03-02
|\ \
| * | add sys_null_call() to enable system call overhead tracingBjoern B. Brandenburg2009-03-02
| | | | | | | | | | | | | | | A simple noop system call to record kernel entry and exit times.
* | | fixed sizeof usage to conform to linux kernel coding style. so,Mitchell Jareo2009-03-01
|/ / | | | | | | | | | | | | | | struct x* p = kmalloc(sizeof(struct x), ....) becomes struct x* p = kmalloc(sizeof(*p), ...) for example.
* / LITMUS: remove trailing whitespace for release2008.2Bjoern B. Brandenburg2008-12-01
|/
* PFAIR: improve blocking/wake_up codeBjoern B. Brandenburg2008-11-10
| | | | | | - better tracing - cleaner release code - add FIXME
* PFAIR: fix schedulerBjoern B. Brandenburg2008-11-10
| | | | | - fix end of tick preempt logic - make scheduler resilient against missed quanta
* PFAIR: improve tracing of advance_subtask()Bjoern B. Brandenburg2008-11-10
|
* PFAIR: reuse cur_sub_release()Bjoern B. Brandenburg2008-11-10
| | | | Quiets a warning.
* PFAIR: increase max period to 2000Bjoern B. Brandenburg2008-11-10
| | | | | 1000 was limiting since the sync. release code wants a 1 second delay per default.
* PFAIR: clean up debug tracingBjoern B. Brandenburg2008-11-10
| | | | Much of the tracing is not needed anymore.
* PFAIR: re-initialize times when plugin is activatedBjoern B. Brandenburg2008-11-10
|
* PFAIR: store CPU staggering offset in CPU stateBjoern B. Brandenburg2008-11-10
| | | | Used to correct for staggering in time->quanta computations
* ftdev: fix disabling of eventsBjoern B. Brandenburg2008-11-10
| | | | The list traversal code was horribly broken.
* GSN-EDF: trace job releases of tardy tasksBjoern B. Brandenburg2008-11-10
|
* PFAIR: fix sync. release callbackBjoern B. Brandenburg2008-11-07
| | | | | The previous version did not get the release time right in most cases.
* sched_trace: record 0 as job number for system eventsBjoern B. Brandenburg2008-11-07
| | | | | -1 doesn't make sense for an unsigned field and screws up the log viewer.
* LITMUS: provide per-plugin setup/tear down callbacksBjoern B. Brandenburg2008-11-06
| | | | Give plugins a chance to set up state and clean up.
* PFAIR: emit sched_trace() eventsBjoern B. Brandenburg2008-11-06
| | | | This is required to visualize the schedule.
* PFAIR: fix debugging macrosBjoern B. Brandenburg2008-11-06
| | | | The arguments were not printed correctly.
* PFAIR: deschedule real-time tasks when they become ineligibleBjoern B. Brandenburg2008-11-06
| | | | | | The reschedule test in scheduler_tick() was missing the case when the CPU has to preempt a real-time task in favor of background work.
* ftdev: don't lose data if task is interruptedBjoern B. Brandenburg2008-11-03
|
* ftdev: don't get stuck in endless loopBjoern B. Brandenburg2008-11-03
| | | | | This bug created unkillable tasks if the first event did not match the event that was being disabled.
* GSN-EDF,CEDF: fix task system releaseBjoern B. Brandenburg2008-11-03
| | | | | Not-yet-released jobs were not properly queued because of an overly complicated and wrong requeue implementation. Found by visualizing sched_traces.
* sched_trace: add task system release tracingBjoern B. Brandenburg2008-11-03
|
* sched_trace: use litmus_clock()Bjoern B. Brandenburg2008-10-28
| | | | Using both sched_clock() and litmus_clock() leads to garbled traces.
* PFAIR: fix priority functionJohn M. Calandrino2008-10-15
| | | | | Due to bad ordering of ()-pairs, the priority function was not correct. This should fix it.
* 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.
* 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.
* 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
* | PFAIR: don't crash on weight 1.0 tasksBjoern B. Brandenburg2008-08-25
|/ | | | Avoid division by zero.