aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/sched_cedf.c
Commit message (Collapse)AuthorAge
* cleanup C-EDF cluster size configurationBjoern B. Brandenburg2011-01-05
| | | | | | | Refactor the code that determines the C-EDF cluster size. - Use an enum with symbolic constants instead of magic int values. - Complain and fail to switch if an unsupported cluster size is requested. - Default to ALL as suggested by Glenn and Andrea.
* bugfix: clear scheduled field of the correct CPU upon task_exit in C-EDFAndrea Bastoni2011-01-03
| | | | | | | | | Do not use the "scheduled_on" field to address the cpus structure within a cluster. cpus may contain less items than num_online_cpus and we may cause an out-of-bound access. Instead, use "scheduled_on" to directly access the per-cpu cpu_entry_t structure. Reported-by: Jonathan Herman <hermanjl@cs.unc.edu>
* bugfix: fix out-of-bound array access in cedf_activate_plugin()Andrea Bastoni2010-11-29
| | | | | | | Make sure to check for maximum index value when accessing cedf_domain_t array in cedf_activate_plugin(). Reported-by: Jeremy Erickson <jerickso@cs.unc.edu>
* Remove LITMUS^RT TRACE_BUG_ON macroBjoern B. Brandenburg2010-11-11
| | | | | | Linux now has a macro of the same name, which causes namespace collisions. Since our version is only being used in two places that haven't triggered in several years, let's just remove it.
* Implement proper remote preemption supportBjoern B. Brandenburg2010-11-11
| | | | | | | | | | | | To date, Litmus has just hooked into the smp_send_reschedule() IPI handler and marked tasks as having to reschedule to implement remote preemptions. This was never particularly clean, but so far we got away with it. However, changes in the underlying Linux, and peculartities of the ARM code (interrupts enabled before context switch) break this naive approach. This patch introduces new state-machine based remote preemption support. By examining the local state before calling set_tsk_need_resched(), we avoid confusing the underlying Linux scheduler. Further, this patch avoids sending unncessary IPIs.
* C-EDF: move /proc/litmus/cluster_cache to /proc/litmus/plugins/C-EDF/clusterBjoern B. Brandenburg2010-11-11
| | | | | | | Make use of the new per-plugin proc file infrastructure to avoid littering the global namespace. While at it, also move all the relevant bits to sched_cedf.c. In the future, each plugin's parameters should be handled in the respective plugin file.
* Add support for one single cluster (all cpus) on C-EDFAndrea Bastoni2010-05-30
| | | | | - With the "ALL" cluster size option the behavior of C-EDF is equivalent to G-EDF (one single cluster)
* 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).