aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2013-11-19 14:12:08 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2014-02-19 15:33:40 -0500
commite92deb39f12594254a3dce0b9cac347eab9dd2ad (patch)
tree6bccf0d5d86baa319528c97f78a6afd2f3803a0e /include
parentc99faf7a7afc4ff013628fa4321e590d8bb1aecb (diff)
PGM: Boost priority of producers, not consumers.
This patch boosts the priority of PGM producers while they are sending tokens instead of boosting the priority of consumers while they are waiting for tokens. This improves schedulability analysis.
Diffstat (limited to 'include')
-rw-r--r--include/litmus/pgm.h3
-rw-r--r--include/litmus/rt_param.h5
2 files changed, 5 insertions, 3 deletions
diff --git a/include/litmus/pgm.h b/include/litmus/pgm.h
index 1e87e170e8c3..5682a76b3acb 100644
--- a/include/litmus/pgm.h
+++ b/include/litmus/pgm.h
@@ -4,8 +4,9 @@
4#include <litmus/litmus.h> 4#include <litmus/litmus.h>
5 5
6#define is_pgm_waiting(t) (tsk_rt(t)->ctrl_page && tsk_rt(t)->ctrl_page->pgm_waiting) 6#define is_pgm_waiting(t) (tsk_rt(t)->ctrl_page && tsk_rt(t)->ctrl_page->pgm_waiting)
7#define is_pgm_sending(t) (tsk_rt(t)->ctrl_page && tsk_rt(t)->ctrl_page->pgm_sending)
7#define is_pgm_satisfied(t) (tsk_rt(t)->ctrl_page && tsk_rt(t)->ctrl_page->pgm_satisfied) 8#define is_pgm_satisfied(t) (tsk_rt(t)->ctrl_page && tsk_rt(t)->ctrl_page->pgm_satisfied)
8 9
9void setup_pgm_release(struct task_struct* t); 10int setup_pgm_release(struct task_struct* t);
10 11
11#endif 12#endif
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h
index bc074c63c7ad..fe4b31320ac8 100644
--- a/include/litmus/rt_param.h
+++ b/include/litmus/rt_param.h
@@ -122,8 +122,9 @@ struct control_page {
122 * started. */ 122 * started. */
123 123
124 /* Flags from userspace signifying PGM wait states. */ 124 /* Flags from userspace signifying PGM wait states. */
125 volatile uint32_t pgm_waiting; /* waiting for tokens */ 125 volatile uint32_t pgm_waiting; /* waiting for tokens */
126 volatile uint32_t pgm_satisfied; /* needed tokens acquired */ 126 volatile uint32_t pgm_sending; /* sending tokens */
127 volatile uint32_t pgm_satisfied; /* done waiting/sending */
127 128
128 /* to be extended */ 129 /* to be extended */
129}; 130};