aboutsummaryrefslogtreecommitdiffstats
path: root/include/litmus
Commit message (Collapse)AuthorAge
* Add tracing for timer-pulling overhead.Andrea Bastoni2010-09-28
|
* Litmus core: add macro to test for PRECISE_ENFORCEMENTBjoern B. Brandenburg2010-09-22
| | | | | | Required for EDF-WM. We should implement precise enforcement in the core distribution soon anyway (once we know how it works in EDF-WM).
* Litmus core: add budget_remaining() helperBjoern B. Brandenburg2010-09-22
| | | | Returns the amount of budget left for a given job.
* Merge branch 'wip-edf-wm' into wip-semi-partAndrea Bastoni2010-09-22
|\ | | | | | | | | | | | | | | | | This version of litmus2010 contains the implementation of three semi-partitioned scheduling algorithms: EDF-fm, EDF-WM, and NPS-F. Conflicts: include/litmus/rt_param.h litmus/Makefile
| * EDF-WM: allow slice budgets of 50us and greaterBjoern B. Brandenburg2010-09-22
| | | | | | | | | | The partitioning does seem to create some small budgets, so let's support. Going smaller than this seems a bit silly.
| * EDF-WM: NR_CPUS is not well-defined in userspaceBjoern B. Brandenburg2010-09-22
| | | | | | | | | | For now, just hard-code a limit. This is ugly, but RTAS is only 2 weeks away.
| * EDF-WM: keep track of when jobs suspendBjoern B. Brandenburg2010-09-21
| |
| * EDF-WM: add parameter checking to wm_admit_taskBjoern B. Brandenburg2010-09-21
| |
| * rt_domain_t: add add_release_on()Bjoern B. Brandenburg2010-09-21
| | | | | | | | | | | | | | | | This API addition allows the calling code to override the release master for a given rt_domain_t object. This is particularly useful if a job is supposed to migrate to a particular CPU. This need arises for example in semi- partitioned schedulers.
| * EDF-WM: add logic for slice-advancementBjoern B. Brandenburg2010-09-21
| |
| * compile fix: type namespace is flat in CBjoern B. Brandenburg2010-09-21
| | | | | | | | Avoids name clash---we don't need the types anyway.
| * unbloat struct rt_jobBjoern B. Brandenburg2010-09-21
| |
| * Undo WM damage to common filesBjoern B. Brandenburg2010-09-21
| |
| * cleanup rt_param.hBjoern B. Brandenburg2010-09-21
| |
| * Accouting and job control functions for edf-wm algorithm.Guruprasad Aphale2010-07-24
| | | | | | | | | | - Accouting functions added - Job control functions required by edf-wm algorithm.
| * Added task parameters for edf-wmGuruprasad Aphale2010-07-24
| | | | | | | | | | | | This commit adds required task parameters for edf-wm semi-partitioning algorithm. A task may be assigned to multiple cpus, with each slice on each cpu having different wcet.
* | Merge branch 'wip-edffm' into wip-npsf-mergeAndrea Bastoni2010-09-22
|\ \ | | | | | | | | | | | | | | | Conflicts: include/litmus/rt_param.h litmus/Makefile
| * | Remove EDF-Fm specific parameters from rt_param.hAndrea Bastoni2010-09-22
| | | | | | | | | | | | | | | | | | Move parameters specific to EDF-Fm plugin only inside a dedicated data structure. Use union within rt_task to merge also the other semi-part plugins.
| * | [EDF-fm] Add required extensions to rt_task and rt_jobAndrea Bastoni2010-09-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - rt_task: for each task, add fraction (num/denom) of execution cost that should be handled by each processor (for EDF-fm max 2 processors). - rt_job: add number of jobs already managed by the CPUs (for migrating tasks this is needed to determine on which CPU the next job should execute).
| * | [EDF-fm] Add EDF-fm extensions in rt_taskAndrea Bastoni2010-09-20
| |/ | | | | | | | | | | | | | | | | - a bit more general than what exactly needed by EDF-fm - hopefully we should be able to integrate all the parameters in a single environment (or at least in a limited one): less changes in rt_param.h, less changes to the framework, similar implementations, single kernel (so we can run multiple test without changing the kernel).
* | Wrap NPS-F specific parameters in rt_param.hAndrea Bastoni2010-09-22
| | | | | | | | | | Push npsf_id parameters in rt_param.h inside a union to facilitate merging with other plugins.
* | [NPS-F] Add procfile and syscall interfaceAndrea Bastoni2010-09-21
| | | | | | | | | | | | | | | | | | | | | | | | | | The procfile interface is used to control both the length of the slot and the safe removal of timers (not yet in the sched_npsf.c code). Timers must be removed before unloading the plugin (write 0 in the slot length file). We use the syscall to add reserves and servers to the plugin. Have a look at the proper npsf rtspin and rtlaunch in liblitmus2010 to understand how the syscall works. The last call to the syscall (when adding the last server) will trigger the start of the npsf-plugin.
* | [NPSF] Add required additional fields in shared litmus structures.Andrea Bastoni2010-09-21
|/
* Make platform-specific Feather-Trace depend on !CONFIG_DEBUG_RODATABjoern B. Brandenburg2010-06-01
| | | | | | | | | | | Feather-Trace rewrites instructions in the kernel's .text segment. This segment may be write-protected if CONFIG_DEBUG_RODATA is selected. In this case, fall back to the default flag-based Feather-Trace implementation. In the future, we could either adopt the ftrace method of rewriting .text addresses using non-.text mappings or we could consider replacing Feather-Trace with ftrace altogether. For now, this patch avoids unexpected runtime errors.
* Make release master support optionalBjoern B. Brandenburg2010-06-01
| | | | | | | | Introduces CONFIG_RELEASE_MASTER and makes release master support dependent on the new symbol. This is useful because dedicated interrupt handling only applies to "large" multicore platforms. This will allow us to not implement smp_send_pull_timers() for all platforms.
* Make __ARCH_HAS_FEATHER_TRACE a proper CONFIG_ variable.Bjoern B. Brandenburg2010-05-30
| | | | | | | | | The idea of the Feather-Trace default implementation is that LITMUS^RT should work without a specialized Feather-Trace implementation present. This was actually broken. Changes litmus/feather_trace.h to only include asm/feather_trace.h if actually promised by the architecture.
* Added support for choices in budget policy enforcement.Glenn Elliott2010-05-30
| | | | | | | | | | NO_ENFORCEMENT - A job may execute beyond its declared execution time. Jobs notify the kernel that they are complete via liblitmus's sleep_next_period() QUANTUM_ENFORCEMENT - The kernel terminates a job if its actual execution time exceeds the declared execution time. PRECISE_ENFORCEMENT - Hook declared, but not yet implemented. Plan to support this policy through hrtimers. Error thrown if specified.
* Change most LitmusRT spinlock_t in raw_spinlock_tAndrea Bastoni2010-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adapt to new schema for spinlock: (tglx 20091217) spinlock - the weakest one, which might sleep in RT raw_spinlock - spinlock which always spins even on RT arch_spinlock - the hardware level architecture dependent implementation ---- Most probably, all the spinlocks changed by this commit will be true spinning lock (raw_spinlock) in PreemptRT (so hopefully we'll need few changes when porting Litmmus to PreemptRT). There are a couple of spinlock that the kernel still defines as spinlock_t (therefore no changes reported in this commit) that might cause us troubles: - wait_queue_t lock is defined as spinlock_t; it is used in: * fmlp.c -- sem->wait.lock * sync.c -- ts_release.wait.lock - rwlock_t used in fifo implementation in sched_trace.c * this need probably to be changed to something always spinning in RT at the expense of increased locking time. ---- This commit also fixes warnings and errors due to the need to include slab.h when using kmalloc() and friends. ---- This commit does not compile.
* Add C-EDF Plugin2010.1Andrea Bastoni2010-05-29
| | | | | | Improved C-EDF plugin. C-EDF now supports different cluster sizes (based on L2 and L3 cache sharing) and supports dynamic changes of cluster size (this requires reloading the plugin).
* Bugfix: 1) incorrect FMLP high prio task tracking and 2) race in print statementGlenn Elliott2010-05-29
| | | | | | | | 1) High priority task tied to FMLP semaphore in P-EDF scheduling is incorrectly tracked for tasks acquiring the lock without contention. (HP is always set to CPU 0 instead of proper CPU.) 2) Race in a print statement from P-EDF's pi_block() causes NULL pointer dereference.
* Introduce generic NP-section aware preemption functionBjoern B. Brandenburg2010-05-29
| | | | | | | | Dealing with preemptions across CPUs in the presence of non-preemptive sections can be tricky and should not be replicated across (event-driven) plugins. This patch introduces a generic preemption function that handles non-preemptive sections (hopefully) correctly.
* Re-implement non-preemptive section support.Bjoern B. Brandenburg2010-05-29
| | | | | | | | | | | | Re-introduce NP sections in the configuration and in litmus.h. Remove the old np_flag from rt_param. If CONFIG_NP_SECTION is disabled, then all non-preemptive section checks are constant expressions which should get removed by the dead code elimination during optimization. Instead of re-implementing sys_exit_np(), we simply repurposed sched_yield() for calling into the scheduler to trigger delayed preemptions.
* Add virtual LITMUS^RT control device.Bjoern B. Brandenburg2010-05-29
| | | | | | | | | This device only supports mmap()'ing a single page. This page is shared RW between the kernel and userspace. It is inteded to allow near-zero-overhead communication between the kernel and userspace. It's first use will be a proper implementation of user-signaled non-preemptable section support.
* Add Feather-Trace x86_64 architecture dependent codeAndrea Bastoni2010-05-29
|
* [ported from 2008.3] Add Feather-Trace x86_32 architecture dependent codeAndrea Bastoni2010-05-29
| | | | | - [ported from 2008.3] Add x86_32 architecture dependent code. - Add the infrastructure for x86_32 - x86_64 integration.
* Add support for x86_64 architectureAndrea Bastoni2010-05-29
| | | | | | | - Add syscall on x86_64 - Refactor __NR_sleep_next_period -> __NR_complete_job for both x86_32 and x86_64
* Refactor binomial heap names: heap -> bheapAndrea Bastoni2010-05-29
| | | | | | - Binomial heap "heap" names conflicted with priority heap of cgroup in kernel - This patch change binomial heap "heap" names in "bheap"
* [ported from 2008.3] Add release-master supportAndrea Bastoni2010-05-29
|
* [ported from 2008.3] Add LITRMUS^RT syscalls to x86_32Andrea Bastoni2010-05-29
|
* [ported from 2008.3] Add File Descriptor Attached Shared Objects (FDSO) ↵Andrea Bastoni2010-05-29
| | | | infrastructure
* [ported from 2008.3] Add common EDF functionsAndrea Bastoni2010-05-29
|
* [ported from 2008.3] Add rt_domain_t supportAndrea Bastoni2010-05-29
| | | | | Still to be merged: - arm_release_timer() with no rq locking
* [ported from 2008.3] Add tracing support and hook up Litmus KConfig for x86Andrea Bastoni2010-05-29
| | | | | | | | - fix requesting more than 2^11 pages (MAX_ORDER) to system allocator Still to be merged: - feather-trace generic implementation
* [ported from 2008.3] Add Feather-Trace device file supportAndrea Bastoni2010-05-29
|
* [ported from 2008.3] Core LITMUS^RT infrastructureAndrea Bastoni2010-05-29
Port 2008.3 Core LITMUS^RT infrastructure to Linux 2.6.32 litmus_sched_class implements 4 new methods: - prio_changed: void - switched_to: void - get_rr_interval: return infinity (i.e., 0) - select_task_rq: return current cpu