diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/litmus/ikglp_lock.h | 31 | ||||
-rw-r--r-- | include/litmus/kfmlp_lock.h | 21 | ||||
-rw-r--r-- | include/litmus/locking.h | 3 | ||||
-rw-r--r-- | include/litmus/rt_param.h | 17 |
4 files changed, 43 insertions, 29 deletions
diff --git a/include/litmus/ikglp_lock.h b/include/litmus/ikglp_lock.h index f9178d3dfba9..91a905a5d101 100644 --- a/include/litmus/ikglp_lock.h +++ b/include/litmus/ikglp_lock.h | |||
@@ -58,7 +58,7 @@ struct fifo_queue | |||
58 | ikglp_donee_heap_node_t donee_heap_node; | 58 | ikglp_donee_heap_node_t donee_heap_node; |
59 | 59 | ||
60 | struct task_struct* hp_waiter; | 60 | struct task_struct* hp_waiter; |
61 | int count; /* number of waiters + holder */ | 61 | unsigned int count; /* number of waiters + holder */ |
62 | 62 | ||
63 | struct nested_info nest; | 63 | struct nested_info nest; |
64 | }; | 64 | }; |
@@ -70,14 +70,14 @@ struct ikglp_semaphore | |||
70 | raw_spinlock_t lock; | 70 | raw_spinlock_t lock; |
71 | raw_spinlock_t real_lock; | 71 | raw_spinlock_t real_lock; |
72 | 72 | ||
73 | int nr_replicas; // AKA k | 73 | unsigned int nr_replicas; // AKA k |
74 | int m; | 74 | unsigned int max_fifo_len; // max len of a fifo queue |
75 | 75 | ||
76 | int max_fifo_len; // max len of a fifo queue | 76 | unsigned int max_in_fifos; // AKA m |
77 | int nr_in_fifos; | 77 | unsigned int nr_in_fifos; |
78 | 78 | ||
79 | struct binheap top_m; // min heap, base prio | 79 | struct binheap top_m; // min heap, base prio |
80 | int top_m_size; // number of nodes in top_m | 80 | unsigned int top_m_size; // number of nodes in top_m |
81 | 81 | ||
82 | struct binheap not_top_m; // max heap, base prio | 82 | struct binheap not_top_m; // max heap, base prio |
83 | 83 | ||
@@ -103,7 +103,7 @@ int ikglp_lock(struct litmus_lock* l); | |||
103 | int ikglp_unlock(struct litmus_lock* l); | 103 | int ikglp_unlock(struct litmus_lock* l); |
104 | int ikglp_close(struct litmus_lock* l); | 104 | int ikglp_close(struct litmus_lock* l); |
105 | void ikglp_free(struct litmus_lock* l); | 105 | void ikglp_free(struct litmus_lock* l); |
106 | struct litmus_lock* ikglp_new(int m, struct litmus_lock_ops*, void* __user arg); | 106 | struct litmus_lock* ikglp_new(unsigned int m, struct litmus_lock_ops*, void* __user arg); |
107 | 107 | ||
108 | 108 | ||
109 | 109 | ||
@@ -113,8 +113,8 @@ struct ikglp_queue_info | |||
113 | { | 113 | { |
114 | struct fifo_queue* q; | 114 | struct fifo_queue* q; |
115 | lt_t estimated_len; | 115 | lt_t estimated_len; |
116 | int *nr_cur_users; | 116 | unsigned int *nr_cur_users; |
117 | int64_t *nr_aff_users; | 117 | unsigned int *nr_aff_users; |
118 | }; | 118 | }; |
119 | 119 | ||
120 | struct ikglp_affinity_ops | 120 | struct ikglp_affinity_ops |
@@ -138,12 +138,13 @@ struct ikglp_affinity | |||
138 | struct affinity_observer obs; | 138 | struct affinity_observer obs; |
139 | struct ikglp_affinity_ops *ops; | 139 | struct ikglp_affinity_ops *ops; |
140 | struct ikglp_queue_info *q_info; | 140 | struct ikglp_queue_info *q_info; |
141 | int *nr_cur_users_on_rsrc; | 141 | unsigned int *nr_cur_users_on_rsrc; |
142 | int64_t *nr_aff_on_rsrc; | 142 | unsigned int *nr_aff_on_rsrc; |
143 | int offset; | 143 | unsigned int offset; |
144 | int nr_simult; | 144 | unsigned int nr_simult; |
145 | int nr_rsrc; | 145 | unsigned int nr_rsrc; |
146 | int relax_max_fifo_len; | 146 | |
147 | int relax_max_fifo_len:1; | ||
147 | }; | 148 | }; |
148 | 149 | ||
149 | static inline struct ikglp_affinity* ikglp_aff_obs_from_aff_obs(struct affinity_observer* aff_obs) | 150 | static inline struct ikglp_affinity* ikglp_aff_obs_from_aff_obs(struct affinity_observer* aff_obs) |
diff --git a/include/litmus/kfmlp_lock.h b/include/litmus/kfmlp_lock.h index 3609a3a20424..2af953852e02 100644 --- a/include/litmus/kfmlp_lock.h +++ b/include/litmus/kfmlp_lock.h | |||
@@ -16,7 +16,7 @@ struct kfmlp_queue | |||
16 | wait_queue_head_t wait; | 16 | wait_queue_head_t wait; |
17 | struct task_struct* owner; | 17 | struct task_struct* owner; |
18 | struct task_struct* hp_waiter; | 18 | struct task_struct* hp_waiter; |
19 | int count; /* number of waiters + holder */ | 19 | unsigned int count; /* number of waiters + holder */ |
20 | }; | 20 | }; |
21 | 21 | ||
22 | struct kfmlp_semaphore | 22 | struct kfmlp_semaphore |
@@ -25,7 +25,7 @@ struct kfmlp_semaphore | |||
25 | 25 | ||
26 | spinlock_t lock; | 26 | spinlock_t lock; |
27 | 27 | ||
28 | int num_resources; /* aka k */ | 28 | unsigned int num_resources; /* aka k */ |
29 | 29 | ||
30 | struct kfmlp_queue *queues; /* array */ | 30 | struct kfmlp_queue *queues; /* array */ |
31 | struct kfmlp_queue *shortest_queue; /* pointer to shortest queue */ | 31 | struct kfmlp_queue *shortest_queue; /* pointer to shortest queue */ |
@@ -52,7 +52,7 @@ struct kfmlp_queue_info | |||
52 | { | 52 | { |
53 | struct kfmlp_queue* q; | 53 | struct kfmlp_queue* q; |
54 | lt_t estimated_len; | 54 | lt_t estimated_len; |
55 | int *nr_cur_users; | 55 | unsigned int *nr_cur_users; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | struct kfmlp_affinity_ops | 58 | struct kfmlp_affinity_ops |
@@ -71,10 +71,10 @@ struct kfmlp_affinity | |||
71 | struct affinity_observer obs; | 71 | struct affinity_observer obs; |
72 | struct kfmlp_affinity_ops *ops; | 72 | struct kfmlp_affinity_ops *ops; |
73 | struct kfmlp_queue_info *q_info; | 73 | struct kfmlp_queue_info *q_info; |
74 | int *nr_cur_users_on_rsrc; | 74 | unsigned int *nr_cur_users_on_rsrc; |
75 | int offset; | 75 | unsigned int offset; |
76 | int nr_simult; | 76 | unsigned int nr_simult; |
77 | int nr_rsrc; | 77 | unsigned int nr_rsrc; |
78 | }; | 78 | }; |
79 | 79 | ||
80 | static inline struct kfmlp_affinity* kfmlp_aff_obs_from_aff_obs(struct affinity_observer* aff_obs) | 80 | static inline struct kfmlp_affinity* kfmlp_aff_obs_from_aff_obs(struct affinity_observer* aff_obs) |
@@ -86,10 +86,9 @@ int kfmlp_aff_obs_close(struct affinity_observer*); | |||
86 | void kfmlp_aff_obs_free(struct affinity_observer*); | 86 | void kfmlp_aff_obs_free(struct affinity_observer*); |
87 | 87 | ||
88 | #ifdef CONFIG_LITMUS_NVIDIA | 88 | #ifdef CONFIG_LITMUS_NVIDIA |
89 | struct affinity_observer* kfmlp_gpu_aff_obs_new(struct affinity_observer_ops*, | 89 | struct affinity_observer* kfmlp_gpu_aff_obs_new( |
90 | void* __user arg); | 90 | struct affinity_observer_ops*, void* __user arg); |
91 | struct affinity_observer* kfmlp_simple_gpu_aff_obs_new(struct affinity_observer_ops*, | 91 | struct affinity_observer* kfmlp_simple_gpu_aff_obs_new(struct affinity_observer_ops*, void* __user arg); |
92 | void* __user arg); | ||
93 | #endif | 92 | #endif |
94 | 93 | ||
95 | #endif /* end affinity */ | 94 | #endif /* end affinity */ |
diff --git a/include/litmus/locking.h b/include/litmus/locking.h index fc437811d2b6..b9c6a2b1d01e 100644 --- a/include/litmus/locking.h +++ b/include/litmus/locking.h | |||
@@ -66,8 +66,9 @@ typedef struct dgl_wait_state { | |||
66 | } dgl_wait_state_t; | 66 | } dgl_wait_state_t; |
67 | 67 | ||
68 | void wake_or_wait_on_next_lock(dgl_wait_state_t *dgl_wait); | 68 | void wake_or_wait_on_next_lock(dgl_wait_state_t *dgl_wait); |
69 | void select_next_lock(dgl_wait_state_t* dgl_wait /*, struct litmus_lock* prev_lock*/); | 69 | struct litmus_lock* select_next_lock(dgl_wait_state_t* dgl_wait /*, struct litmus_lock* prev_lock*/); |
70 | 70 | ||
71 | void init_dgl_wait_state(dgl_wait_state_t* dgl_wait); | ||
71 | void init_dgl_waitqueue_entry(wait_queue_t *wq_node, dgl_wait_state_t* dgl_wait); | 72 | void init_dgl_waitqueue_entry(wait_queue_t *wq_node, dgl_wait_state_t* dgl_wait); |
72 | int dgl_wake_up(wait_queue_t *wq_node, unsigned mode, int sync, void *key); | 73 | int dgl_wake_up(wait_queue_t *wq_node, unsigned mode, int sync, void *key); |
73 | struct task_struct* __waitqueue_dgl_remove_first(wait_queue_head_t *wq, dgl_wait_state_t** dgl_wait); | 74 | struct task_struct* __waitqueue_dgl_remove_first(wait_queue_head_t *wq, dgl_wait_state_t** dgl_wait); |
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h index 716fc034c5f4..c4cba8551c47 100644 --- a/include/litmus/rt_param.h +++ b/include/litmus/rt_param.h | |||
@@ -119,11 +119,24 @@ struct affinity_observer_args | |||
119 | struct gpu_affinity_observer_args | 119 | struct gpu_affinity_observer_args |
120 | { | 120 | { |
121 | struct affinity_observer_args obs; | 121 | struct affinity_observer_args obs; |
122 | int replica_to_gpu_offset; | 122 | unsigned int replica_to_gpu_offset; |
123 | int nr_simult_users; | 123 | unsigned int rho; |
124 | int relaxed_rules; | 124 | int relaxed_rules; |
125 | }; | 125 | }; |
126 | 126 | ||
127 | |||
128 | #define IKGLP_M_IN_FIFOS (0u) | ||
129 | #define IKGLP_UNLIMITED_IN_FIFOS (~0u) | ||
130 | #define IKGLP_OPTIMAL_FIFO_LEN (0u) | ||
131 | #define IKGLP_UNLIMITED_FIFO_LEN (~0u) | ||
132 | |||
133 | struct ikglp_args | ||
134 | { | ||
135 | unsigned int nr_replicas; | ||
136 | unsigned int max_in_fifos; | ||
137 | unsigned int max_fifo_len; | ||
138 | }; | ||
139 | |||
127 | /* The definition of the data that is shared between the kernel and real-time | 140 | /* The definition of the data that is shared between the kernel and real-time |
128 | * tasks via a shared page (see litmus/ctrldev.c). | 141 | * tasks via a shared page (see litmus/ctrldev.c). |
129 | * | 142 | * |