diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2013-11-19 14:12:08 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2014-02-19 15:33:40 -0500 |
commit | e92deb39f12594254a3dce0b9cac347eab9dd2ad (patch) | |
tree | 6bccf0d5d86baa319528c97f78a6afd2f3803a0e /include | |
parent | c99faf7a7afc4ff013628fa4321e590d8bb1aecb (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.h | 3 | ||||
-rw-r--r-- | include/litmus/rt_param.h | 5 |
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 | ||
9 | void setup_pgm_release(struct task_struct* t); | 10 | int 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 | }; |