diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-09-17 19:42:28 -0400 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-09-17 19:43:45 -0400 |
commit | 33cb64c787070d6b60a02ea40064d717d3b9dc07 (patch) | |
tree | 11c07b523c17dfd0787e7766ad8a026afd03ec96 | |
parent | ba54b1096870fba6e3bbb99aafc713e76b747353 (diff) |
Description of refined aux task inheritance.
-rw-r--r-- | litmus/Kconfig | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/litmus/Kconfig b/litmus/Kconfig index b28fe2c09acd..a32f42898148 100644 --- a/litmus/Kconfig +++ b/litmus/Kconfig | |||
@@ -41,11 +41,12 @@ config REALTIME_AUX_TASKS | |||
41 | help | 41 | help |
42 | Adds a system call that forces all non-real-time threads in a process | 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 | 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. | 44 | the highest-prio *BLOCKED* (but NOT blocked on a Litmus lock) real-time |
45 | This allows the integration of COTS code that has background helper threads | 45 | task (non-auxillary) in the process. This allows the integration of COTS |
46 | used primarily for message passing and synchronization. If these | 46 | code that has background helper threads used primarily for message passing |
47 | background threads are NOT real-time scheduled, then unbounded priority | 47 | and synchronization. If these background threads are NOT real-time scheduled, |
48 | inversions may occur if a real-time task blocks on a non-real-time thread. | 48 | then unbounded priority inversions may occur if a real-time task blocks on |
49 | a non-real-time thread. | ||
49 | 50 | ||
50 | Beware of the following pitfalls: | 51 | Beware of the following pitfalls: |
51 | 1) Auxillary threads should not be CPU intensive. They should mostly | 52 | 1) Auxillary threads should not be CPU intensive. They should mostly |
@@ -65,6 +66,14 @@ config REALTIME_AUX_TASKS | |||
65 | work.). Futher, auxillary tasks without an inherited priority are | 66 | work.). Futher, auxillary tasks without an inherited priority are |
66 | _always_ scheduled with a priority less than any normal real-time task!! | 67 | _always_ scheduled with a priority less than any normal real-time task!! |
67 | 68 | ||
69 | NOTE: Aux tasks do not _directly_ inherit a priority from rt tasks that | ||
70 | are blocked on Litmus locks. Aux task should be COTS code that know nothing | ||
71 | of Litmus, so they won't hold Litmus locks. Nothing the aux task can do can | ||
72 | _directly_ unblock the rt task blocked on a Litmus lock. However, the lock | ||
73 | holder that blocks the rt task CAN block on I/O and contribute its priority | ||
74 | to the aux tasks. Aux tasks may still _indirectly_ inherit the priority of | ||
75 | the blocked rt task via the lock holder. | ||
76 | |||
68 | endmenu | 77 | endmenu |
69 | 78 | ||
70 | menu "Real-Time Synchronization" | 79 | menu "Real-Time Synchronization" |