aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/Kconfig
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-09-16 18:29:36 -0400
committerGlenn Elliott <gelliott@cs.unc.edu>2012-09-16 18:29:36 -0400
commitc58a74c8ad2d2b1b01be12afb9bac58dfef0d16a (patch)
tree60dbed545715ecf91ab7409789c1a9effd791348 /litmus/Kconfig
parent4e8f9b7c2e9134ca31feb91dee3609a95df6de56 (diff)
Added CONFIG_REALTIME_AUX_TASKS option
Auxillary task features were enabled by CONFIG_LITMUS_LOCKING. Made auxillary tasks a seperate feature that depends upon CONFIG_LITMUS_LOCKING.
Diffstat (limited to 'litmus/Kconfig')
-rw-r--r--litmus/Kconfig31
1 files changed, 31 insertions, 0 deletions
diff --git a/litmus/Kconfig b/litmus/Kconfig
index 95e0671e2aec..c5dbc4a176ae 100644
--- a/litmus/Kconfig
+++ b/litmus/Kconfig
@@ -34,6 +34,37 @@ config RELEASE_MASTER
34 (http://www.cs.unc.edu/~anderson/papers.html). 34 (http://www.cs.unc.edu/~anderson/papers.html).
35 Currently only supported by GSN-EDF. 35 Currently only supported by GSN-EDF.
36 36
37config REALTIME_AUX_TASKS
38 bool "Real-Time Auxillary Tasks"
39 depends on LITMUS_LOCKING
40 default n
41 help
42 Adds a system call that forces all non-real-time threads in a process
43 to become auxillary real-time tasks. These tasks inherit the priority of
44 the highest-prio *BLOCKED* real-time task (non-auxillary) in the process.
45 This allows the integration of COTS code that has background helper threads
46 used primarily for message passing and synchronization. If these
47 background threads are NOT real-time scheduled, then unbounded priority
48 inversions may occur if a real-time task blocks on a non-real-time thread.
49
50 Beware of the following pitfalls:
51 1) Auxillary threads should not be CPU intensive. They should mostly
52 block on mutexes and condition variables. Violating this will
53 likely prevent meaningful analysis.
54 2) Since there may be more than one auxillary thread per process,
55 priority inversions may occur with respect to single-threaded
56 task models if/when one of threads are scheduled simultanously
57 with another of the same identity.
58 3) Busy-wait deadlock is likely between normal real-time tasks and
59 auxillary tasks synchronize using _preemptive_ spinlocks that do
60 not use priority inheritance.
61
62 These pitfalls are mitgated by the fact that auxillary tasks only
63 inherit priorities from blocked tasks (Blocking signifies that the
64 blocked task _may_ be waiting on an auxillary task to perform some
65 work.). Futher, auxillary tasks without an inherited priority are
66 _always_ scheduled with a priority less than any normal real-time task!!
67
37endmenu 68endmenu
38 69
39menu "Real-Time Synchronization" 70menu "Real-Time Synchronization"