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:42:28 -0400 |
| commit | 50ff4903cc0503d2ee9d17c80580e8a91f59cc10 (patch) | |
| tree | cda68e398fdb180cf03ac18211841774e0f73efe | |
| parent | d9b5000b74bbc468624f877495443b33f9511922 (diff) | |
Description of refined aux task inheritance.wip-aux-tasks
| -rw-r--r-- | litmus/Kconfig | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/litmus/Kconfig b/litmus/Kconfig index c5dbc4a176ae..260b3af071c2 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" |
