aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
...
* | G-EDF: Export cluster configuration to /procGlenn Elliott2014-02-04
| | | | | | | | This patch updates G-EDF to support get_domain_proc_info().
* | C-EDF: Export cluster configuration to /proc.Glenn Elliott2014-02-04
| | | | | | | | This patch updates C-EDF to support get_domain_proc_info().
* | Set /proc/litmus/cpus (and domains) on plg activ.Glenn Elliott2014-02-04
| | | | | | | | | | | | | | | | | | This patch updates the plugin activation routine. Prior to deactivation, a plugin's data for /proc/litmus/cpus and /proc/litmus/domains is deactivated/removed. After successful plugin activation, get_domain_proc_info() is called on the activated plugin, and the resulting info is used to configure /proc/litmus/cpus and /proc/litmus/domains.
* | sched_plgn: Add fn. for reporting CPU/cluster mapsGlenn Elliott2014-02-04
| | | | | | | | | | | | This patch adds the plugin interface "get_domain_proc_info()". Plugins use this function to report their cpu/clustering configuration to the user via /proc/litmus/domains and /proc/litmus/cpus.
* | /proc/litmus: Export info. on CPU <-> clusterGlenn Elliott2014-02-04
|/ | | | | | | | | | | | | | | | This patch adds a framework by which plugins can export information about CPU <-> cluster (aka scheduling domain) per cluster. /proc/litmus/domains/<domain#>: This file contains a CPU mask describing the CPUs scheduled/managed by that domain. Files are named by index. For example, the first scheduling domain would be '0'. /proc/litmus/cpus/<cpus#>: This file contains a domain mask describing which domains manage this CPU. Normally, only one bit will be set in this mask, but overlapping clusters can also be expressed by setting multiple bits.
* Fix: Set litmus timestamp in ftrace records.Glenn Elliott2013-09-16
| | | | | Patch updates ftrace.h to record a litmus_clock() time stamp in ftrace records.
* Fix litmus_admit_task() error pathBjoern Brandenburg2013-09-13
| | | | Don't try to release slab objects that were never allocated.
* litmus: Fix build error (implicit declaration of read_current_timer()) on ARMRoy Spliet2013-09-13
| | | | Signed-off-by: Roy Spliet <rspliet@mpi-sws.org>
* uncachedev: mmap memory that is not cached by CPUs2013.1archived-2013.1Glenn Elliott2013-08-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch creates a new character device, uncachedev. Pages of RAM allocated by this device are not cached by CPUs. Uses for such pages: 1) Determining *very* pessimistic emperical worst- case execution times. 2) Compare against performance with caches (quantify the avg. case benefit). 3) Deterministic memory accesses (access cannot cause a cache eviction.) 4) Theoretically, increased performance can be achieved by storing infrequently accessed data in uncache pages. uncachedev allocates pages with the pgprot_noncached() page attribute for user applications. Since pages allocated by uncachedev are not locked in memory by default, applications with any access level may mmap pages with uncachedev. Limitations: 1) Uncache pages must be MAP_PRIVATE. 2) Remapping not supported. Usage (user level): int size = NR_PAGES*PAGE_SIZE; int fd = open("/dev/litmus/uncache", O_RDWR); char *data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); <...do stuff...> munmap(data, size);
* Add PD^2 scheduler pluginFelipe Cerqueira2013-08-07
|
* Add C-EDF scheduler pluginFelipe Cerqueira2013-08-07
|
* Add P-FP scheduler pluginFelipe Cerqueira2013-08-07
|
* GSN-EDF: link tasks to local CPU if it is idleBjoern Brandenburg2013-08-07
| | | | | | | If a task is released on a CPU that is idle, then it is pointless to send an IPI to another CPU just to schedule the newly released task. This patch changes check_for_preemptions() to prefer the local CPU first if it is idle.
* Add GSN-EDF scheduler pluginFelipe Cerqueira2013-08-07
|
* Add PSN-EDF scheduler pluginFelipe Cerqueira2013-08-07
|
* Protect LITMUS^RT tasks from re-nicingBjoern Brandenburg2013-08-07
| | | | | 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 Brandenburg2013-08-07
| | | | | This patch fixes a BUG_ON() in litmus/preempt.c:33 reported by Felipe Cerqueira & Manohar Vanga.
* Hook into rt scheduling class to protect LITMUS^RT tasksBjoern Brandenburg2013-08-07
| | | | | | The rt scheduling class thinks it's the highest-priority scheduling class around. 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 Brandenburg2013-08-07
|
* Cache 'prev' in LITMUS^RT runqueueBjoern Brandenburg2013-08-07
| | | | | | LITMUS^RT plugins like to know who 'prev' is. pick_next_task() doesn't expose that info, so we just cache prev in the runqueue. Could robably be replaced by looking at 'current' instead.
* Hook into finish_switch()Bjoern Brandenburg2013-08-07
| | | | To keep track of stack usage and to notify plugin, if necessary.
* Reset SCHED_LITMUS scheduling class on forkBjoern Brandenburg2013-08-07
|
* Block sched_setaffinity() for SCHED_LITMUS tasksBjoern Brandenburg2013-08-07
|
* Integrate LITMUS^RT scheduling class with sched_setschedulerBjoern Brandenburg2013-08-07
|
* Disable cut-to-CFS optimization in Linux schedulerBjoern Brandenburg2013-08-07
| | | | | Global plugins require that the plugin be called even if there currently is no real-time task executing on the local core.
* Integrate LITMUS^RT with try_to_wake_up() pathBjoern Brandenburg2013-08-07
|
* Splice LITMUS^RT scheduling class into scheduler hierarchy above rt classBjoern Brandenburg2013-08-07
| | | | | Below stop_machine tasks, as such tasks never arise during normal operation.
* Call LITMUS^RT tick function from Linux tickBjoern Brandenburg2013-08-07
|
* Add LITMUS^RT scheduling class in kernel/sched/MakefileBjoern Brandenburg2013-08-07
|
* Introduce LITMUS^RT runqueue dummy into struct rqBjoern Brandenburg2013-08-07
|
* Integrate SRP ceiling blocking callback with Linux schedulerBjoern Brandenburg2013-08-07
| | | | Check whether a suspension is required at end of schedule().
* Hookup sched_trace_XXX() tracing in Linux schedulerBjoern Brandenburg2013-08-07
| | | | This patch adds context switch tracing to the main Linux scheduler.
* Augment rt_task() with is_realtime()Bjoern Brandenburg2013-08-07
| | | | | | | | | | | 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 fork(), exec(), and exit()Felipe Cerqueira2013-08-07
| | | | | Allow LITMUS^RT to do some work when a process is created or terminated.
* Call sched_state_task_picked() from pick_next_task_stop()Bjoern Brandenburg2013-08-07
| | | | | 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 Brandenburg2013-08-07
| | | | Track when a processor is going to schedule "soon".
* Move trace point definition to litmus/litmus.cBjoern Brandenburg2013-08-07
| | | | | | | | If !CONFIG_SCHED_TASK_TRACE, but CONFIG_SCHED_LITMUS_TRACEPOINT, then we still need to define the tracepoint structures. This patch should be integrated with the earlier sched_task_trace.c patches during one of the next major rebasing efforts.
* Add LITMUS^RT syscalls for x86Felipe Cerqueira2013-08-07
|
* Add LITMUS^RT syscalls for ARMFelipe Cerqueira2013-08-07
|
* Add LITMUS^RT core implementationBjoern Brandenburg2013-08-07
| | | | | | | | | | | | | This patch adds the core of LITMUS^RT: - library functionality (heaps, rt_domain, prioritization, etc.) - budget enforcement logic - job management - system call backends - virtual devices (control page, etc.) - scheduler plugin API (and dummy plugin) This code compiles, but is not yet integrated with the rest of Linux.
* Export num_cache_leaves in asm/processor.hBjoern Brandenburg2013-08-07
| | | | This is required to make litmus/affinity.c compile.
* Add object descriptor table to Linux's task_structBjoern Brandenburg2013-08-07
| | | | | This table is similar to a file descriptor table. It keeps track of which "objects" (locks) a real-time task holds a handle to.
* Add tracepoint supportFelipe Cerqueira2013-08-07
| | | | | | | This patch integrates LITMUS^RT's sched_trace_XXX() macros with Linux's notion of tracepoints. This is useful to visualize schedules in kernel shark and similar tools. Historically, LITMUS^RT's sched_trace predates Linux's tracepoint infrastructure.
* Add schedule tracing supportFelipe Cerqueira2013-08-07
| | | | | | This patch introduces the sched_trace infrastructure, which in principle allows tracing the generated schedule. However, this patch does not yet integrate the callbacks with the kernel.
* Feather-Trace: write interrupt counts to control pageBjoern Brandenburg2013-08-07
| | | | | This patch exports the interrupt counter to userspace via the control page.
* Feather-Trace: add support for latency tracing/Bjoern Brandenburg2013-08-07
| | | | This patch adds support for tracing release latency in LITMUS^RT.
* Feather-Trace: use proper definition of is_realtime()Bjoern Brandenburg2013-08-07
| | | | Remove dummy implementation of is_realtime() in trace.c.
* Introduce main LITMUS^RT headerBjoern Brandenburg2013-08-07
| | | | | This patch adds a basic litmus/litmus.h, which is required for basic LITMUS^RT infrastructure to compile.
* Extend task_struct with rt_paramBjoern Brandenburg2013-08-07
| | | | This patch adds the PCB extensions required for LITMUS^RT.
* Add hrtimer_start_on() supportFelipe Cerqueira2013-08-07
| | | | | | This patch adds hrtimer_start_on(), which allows arming timers on remote CPUs. This is needed to avoided timer interrupts on "shielded" CPUs and is also useful for implementing semi-partitioned schedulers.