aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/sched_pres.c
Commit message (Collapse)AuthorAge
* MC2 levels A, BNamhoon Kim2015-01-14
|
* P-RES: improved handling of tardy jobsBjoern Brandenburg2014-11-03
| | | | | Don't set a release timer for jobs that are tardy and already released.
* P-RES: keep track in per-task state of whether it suspendedBjoern Brandenburg2014-11-03
| | | | | Checking state->scheduled is not accurate when bandwidth inheritance is applied.
* P-RES: disable LITMUS^RT's standard budget enforcementBjoern Brandenburg2014-11-03
| | | | | | | The P-RES plugin is currently not compatible with the per-thread budget enforcement logic, which can trigger assertion failures. For now, let's simply disable per-thread timeslice enforcement. (P-RES's reservations are a much better mechanism anyway.)
* P-RES: allocation in pres_admit_task() must be atomicBjoern Brandenburg2014-11-03
| | | | | | The kernel codepath calling into pres_admit_task() is holding some lock unrelated to LITMUS^RT. As a result, we need to pass GFP_ATOMIC, not just GFP_KERNEL, to kzalloc().
* P-RES: fix rare deadlock via hrtimer_start()Bjoern Brandenburg2014-11-03
| | | | | | | | | | | | | | | | | | There's a rare condition under which the current call to hrtimer_start() in pres_update_timer() may result in deadlock. pres_update_timer() // holds runqueue lock and state->lock -> hrtimer_start() -> raise_softirq_irqoff() -> wakeup_softirqd() -> wake_up_process() -> acquires runqueue lock() To avoid this, we need to call __hrtimer_start_range_ns() with the 'wakeup' flag set to zero. While at it, also drop the state->lock before calling into hrtimer(), to avoid making the scheduler critical section longer than necessary.
* Move 'reservation' field from task_client to generic reservation_clientBjoern Brandenburg2014-11-03
| | | | | | This makes it a lot easier to write generic code for thread arrival / thread departure in plugins with multiple types of reservation clients.
* P-RES: ensure scheduler timer fires on _local_ CPU onlyBjoern Brandenburg2014-11-03
| | | | | | Accidentally setting up the timer on the wrong CPU when a thread resumes is problematic can lead (potentially) to deadlock and to missed scheduling events.
* Add partitioned reservation-based scheduler plugin (P-RES)Bjoern Brandenburg2014-11-03
A simple partitioned scheduler that provides a reservation environment on each core, based on the generic reservations code. Hierarchical scheduling is not supported in this version.