aboutsummaryrefslogtreecommitdiffstats
path: root/include/litmus/sched_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/litmus/sched_plugin.h')
-rw-r--r--include/litmus/sched_plugin.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/litmus/sched_plugin.h b/include/litmus/sched_plugin.h
index e31008fcdd59..8e65555d9b7f 100644
--- a/include/litmus/sched_plugin.h
+++ b/include/litmus/sched_plugin.h
@@ -74,10 +74,28 @@ typedef void (*decrease_prio_klitirqd_t)(struct task_struct* klitirqd,
74 74
75 75
76typedef int (*enqueue_pai_tasklet_t)(struct tasklet_struct* tasklet); 76typedef int (*enqueue_pai_tasklet_t)(struct tasklet_struct* tasklet);
77typedef void (*change_prio_pai_tasklet_t)(struct task_struct *old_prio,
78 struct task_struct *new_prio);
77typedef void (*run_tasklets_t)(struct task_struct* next); 79typedef void (*run_tasklets_t)(struct task_struct* next);
78 80
79typedef raw_spinlock_t* (*get_dgl_spinlock_t) (struct task_struct *t); 81typedef raw_spinlock_t* (*get_dgl_spinlock_t) (struct task_struct *t);
80 82
83
84typedef int (*higher_prio_t)(struct task_struct* a, struct task_struct* b);
85
86#ifdef CONFIG_LITMUS_NESTED_LOCKING
87
88typedef enum
89{
90 BASE,
91 EFFECTIVE
92} comparison_mode_t;
93
94typedef int (*__higher_prio_t)(struct task_struct* a, comparison_mode_t a_mod,
95 struct task_struct* b, comparison_mode_t b_mod);
96#endif
97
98
81/********************* sys call backends ********************/ 99/********************* sys call backends ********************/
82/* This function causes the caller to sleep until the next release */ 100/* This function causes the caller to sleep until the next release */
83typedef long (*complete_job_t) (void); 101typedef long (*complete_job_t) (void);
@@ -112,6 +130,8 @@ struct sched_plugin {
112 task_block_t task_block; 130 task_block_t task_block;
113 task_exit_t task_exit; 131 task_exit_t task_exit;
114 132
133 higher_prio_t compare;
134
115#ifdef CONFIG_LITMUS_LOCKING 135#ifdef CONFIG_LITMUS_LOCKING
116 /* locking protocols */ 136 /* locking protocols */
117 allocate_lock_t allocate_lock; 137 allocate_lock_t allocate_lock;
@@ -121,6 +141,7 @@ struct sched_plugin {
121#ifdef CONFIG_LITMUS_NESTED_LOCKING 141#ifdef CONFIG_LITMUS_NESTED_LOCKING
122 nested_increase_prio_t nested_increase_prio; 142 nested_increase_prio_t nested_increase_prio;
123 nested_decrease_prio_t nested_decrease_prio; 143 nested_decrease_prio_t nested_decrease_prio;
144 __higher_prio_t __compare;
124#endif 145#endif
125#ifdef CONFIG_LITMUS_DGL_SUPPORT 146#ifdef CONFIG_LITMUS_DGL_SUPPORT
126 get_dgl_spinlock_t get_dgl_spinlock; 147 get_dgl_spinlock_t get_dgl_spinlock;
@@ -132,6 +153,7 @@ struct sched_plugin {
132#endif 153#endif
133#ifdef CONFIG_LITMUS_PAI_SOFTIRQD 154#ifdef CONFIG_LITMUS_PAI_SOFTIRQD
134 enqueue_pai_tasklet_t enqueue_pai_tasklet; 155 enqueue_pai_tasklet_t enqueue_pai_tasklet;
156 change_prio_pai_tasklet_t change_prio_pai_tasklet;
135 run_tasklets_t run_tasklets; 157 run_tasklets_t run_tasklets;
136#endif 158#endif
137} __attribute__ ((__aligned__(SMP_CACHE_BYTES))); 159} __attribute__ ((__aligned__(SMP_CACHE_BYTES)));