aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
* Feather-Trace device interface: synchronize event activation/deactivationBjoern Brandenburg2017-06-09
| | | | | The platform code does not synchronize anything, so make sure there's only one caller at any time.
* Feather-trace header: RODATA adjustmentsBjoern Brandenburg2017-06-09
|
* Feather-trace generic: deal with RODATA always being onBjoern Brandenburg2017-06-09
|
* Feather-Trace: make x86 rewriting impl work despite RO textBjoern Brandenburg2017-06-09
| | | | | Mirror what ftrace does to ensure that we can patch up the text segment.
* litmus/preempt.h: do not pollute namespace with TRACE()Bjoern Brandenburg2017-06-09
| | | | | | | This file is indirectly included in a _a lot_ of Linux. A generic name like TRACE causes a symbol clashes in drivers, SquashFS, etc. To avoid this, use only the LITMUS-prefixed version in preempt.h.
* LITMUS^RT debug trace: optionally do not pollute namespaceBjoern Brandenburg2017-06-09
|
* LITMUS^RT core: include debug_trace.hBjoern Brandenburg2017-06-09
|
* LITMUS^RT integration in core scheduler: include debug_trace.hBjoern Brandenburg2017-06-09
|
* PSN-EDF: include debug_trace.hBjoern Brandenburg2017-06-09
|
* C-EDF: include debug_trace.hBjoern Brandenburg2017-06-09
|
* P-FP: include debug_trace.hBjoern Brandenburg2017-06-09
|
* PFAIR: include debug_trace.hBjoern Brandenburg2017-06-09
|
* GSN-EDF: include debug_trace.hBjoern Brandenburg2017-06-09
|
* Feather-Trace: switch to get_cycles()Bjoern Brandenburg2017-06-07
|
* Kconfig: don't hide Feather-Trace menuBjoern Brandenburg2017-06-07
| | | | | Even if a kernel is relocatable, the if-based implementation of Feather-Trace can still work. So don't hide these options.
* P-RES: update times before processing departureBjoern Brandenburg2017-05-28
| | | | | Don't forget to charge *current* reservation before its (potentially) only client departs.
* P-RES: remove misleading commentBjoern Brandenburg2017-05-28
| | | | The comment regarding hrtimer_start() is no longer valid in Linux 4.9.
* Add P-RES scheduler pluginBjoern Brandenburg2017-05-26
| | | | | | | | | | | | | | | | | | | | | | | | | | P-RES: the partitioned reservation-based scheduler. 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. P-RES: trace sporadic wake-ups P-RES: use inferred_sporadic_job_release_at() porting fix: add missing header for module_init() porting fix: adopt new hrtimer API in P-RES plugin P-RES: add fork() support P-RES: don't return -ESRCH on reservation lookup failure P-RES: improve task admission - Deal with the fact that task_cpu() is not yet updated for currently suspended tasks. - Provide some feedback via printk().
* Add PD^2 scheduler pluginBjoern Brandenburg2017-05-26
| | | | | | | | | | | | | | | | PFAIR: fix wrong memset() PFAIR: don't arm timer for tardy tasks If the system is overloaded, tasks may be tardy. In that case, do not arm timers. Rather, add tardy tasks back into the ready queue right away. PFAIR: use sched_trace_last_suspension_as_completion() PFAIR: use inferred_sporadic_job_release_at() rebase fix: use new hrtimer API in PFAIR plugin
* Add C-EDF scheduler pluginBjoern Brandenburg2017-05-26
| | | | | | | | | | C-EDF: fix bad memset() C-EDF: use sched_trace_last_suspension_as_completion() C-EDF: use inferred_sporadic_job_release_at() C-EDF: include np.h
* Add P-FP scheduler pluginBjoern Brandenburg2017-05-26
| | | | | | | | | | | | P-FP: fix wrong memset() P-FP: use sched_trace_last_suspension_as_completion() P-FP: use inferred_sporadic_job_release_at() P-FP: include np.h P-FP: improve debug tracing
* Add GSN-EDF scheduler pluginBjoern Brandenburg2017-05-26
| | | | | | | | | | GSN-EDF: fix wrong memset() GSN-EDF: use sched_trace_last_suspension_as_completion() GSN-EDF use inferred_sporadic_job_release_at() GSN-EDF: include np.h
* Add PSN-EDF scheduler pluginBjoern Brandenburg2017-05-26
| | | | | | | | | | PSN-EDF: fix wrong memset() PSN-EDF: use sched_trace_last_suspension_as_completion() PSN-EDF: use inferred_sporadic_job_release_at PSN-EDF: include np.h
* Hook into hrtimer to TRACE() timer hangsBjoern Brandenburg2017-05-26
|
* Hook into hrtimer_nanosleep()Bjoern Brandenburg2017-05-26
| | | | | To intercept absolute-timed nanosleeps relative to CLOCK_MONOTONIC, which are likely related to periodic job arrivals.
* hrtimer integration: properly trace late-added timersBjoern Brandenburg2017-05-26
| | | | | | | When tasks add timers that have already expired (e.g., when preempted during schedule_hrtimeout), we should not use the expriration time as the reference time point, but rather the time when the timer was added (the delay then includes activation of ksoftirqd, etc.).
* Hook into hrtimer to report large latenciesBjoern Brandenburg2017-05-26
|
* Patch hrtimer_wakeup() callback to record RELEASE overheadBjoern Brandenburg2017-05-26
|
* Patch hrtimer_wakeup() callback to record RELEASE_LATENCYBjoern Brandenburg2017-05-26
| | | | | | Record interrupt latency for tasks that use nanosleep or some other interface that ends up using a hrtimer_sleeper struct to trigger the wakeup of the task when the next job is released.
* Hook into kernel/exit.c to force exiting RT tasks into best-effort modeBjoern Brandenburg2017-05-26
|
* Protect LITMUS^RT tasks from re-nicingBjoern Brandenburg2017-05-26
| | | | | Assigning a nice value to LITMUS^RT tasks is meaningless. Bail out early.
* Don't call set_tsk_need_resched() on remote LITMUS^RT taskBjoern Brandenburg2017-05-26
| | | | This patch fixes a BUG_ON() in litmus/preempt.c.
* Hook into SCHED_DEADLINE to protect LITMUS^RT tasksBjoern Brandenburg2017-05-26
| | | | | SCHED_DEADLINE should not preempt LITMUS^RT tasks, as the LITMUS^RT scheduling class is positioned above the SCHED_DEADLINE policy.
* Hook into rt scheduling class to protect LITMUS^RT tasksBjoern Brandenburg2017-05-26
| | | | | | The rt scheduling class thinks it's the highest-priority scheduling class around, next to SCHED_DEADLINE. It is not in LITMUS^RT. Don't go preempting remote cores that run SCHED_LITMUS tasks.
* Don't trigger load balancer in scheduler tick for LITMUS^RTBjoern Brandenburg2017-05-26
|
* Hook into finish_switch()Bjoern Brandenburg2017-05-26
| | | | To keep track of stack usage and to notify plugin, if necessary.
* Reset SCHED_LITMUS scheduling class on forkBjoern Brandenburg2017-05-26
|
* Block sched_setaffinity() for SCHED_LITMUS tasksBjoern Brandenburg2017-05-26
|
* Disable cut-to-CFS optimization in Linux schedulerBjoern Brandenburg2017-05-26
| | | | | Global plugins require that the plugin be called even if there currently is no real-time task executing on the local core.
* Hook into fork(), exec(), and exit()Bjoern Brandenburg2017-05-26
| | | | | Allow LITMUS^RT to do some work when a process is created or terminated.
* Integrate LITMUS^RT scheduling class with sched_setschedulerBjoern Brandenburg2017-05-26
|
* Integrate LITMUS^RT with try_to_wake_up() pathBjoern Brandenburg2017-05-26
|
* Make LITMUS^RT scheduling class the highest-priority scheduling classBjoern Brandenburg2017-05-26
| | | | | | Needs to be above stop_machine_class for legacy reasons; the main plugins were developed before stop_machine_class was introduced and assume that they are the highest-priority scheduling class.
* Add LITMUS^RT scheduling class in kernel/sched/MakefileBjoern Brandenburg2017-05-26
|
* Introduce LITMUS^RT runqueue dummy into struct rqBjoern Brandenburg2017-05-26
|
* Hookup sched_trace_XXX() tracing in Linux schedulerBjoern Brandenburg2017-05-26
| | | | This patch adds context switch tracing to the main Linux scheduler.
* Augment rt_task() with is_realtime()Bjoern Brandenburg2017-05-26
| | | | | | | | | | | Whenever the kernel checks for rt_task() to avoid delaying real-time tasks, we want it to also not delay LITMUS^RT tasks. Hence, most calls to rt_task() should be matched by an equivalent call to is_realtime(). Notably, this affects the implementations of select() and nanosleep(), which use timer_slack_ns when setting up timers for non-real-time tasks.
* Hook into __schedule() to set litmus_preemption_in_progressBjoern Brandenburg2017-05-26
|
* Call sched_state_task_picked() from pick_next_task_stop()Bjoern Brandenburg2017-05-26
| | | | | Otherwise, the scheduler state machine becomes confused (and goes into a rescheduling loop) when stop-machine is triggered.
* Integrate preemption state machine with Linux schedulerBjoern Brandenburg2017-05-26
| | | | Track when a processor is going to schedule "soon".