diff options
Diffstat (limited to 'firmware/kernel.c')
-rw-r--r-- | firmware/kernel.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c index 55d78e0e0b..01adfcc57d 100644 --- a/firmware/kernel.c +++ b/firmware/kernel.c | |||
@@ -107,7 +107,8 @@ static void queue_fetch_sender(struct queue_sender_list *send, | |||
107 | 107 | ||
108 | /* Puts the specified return value in the waiting thread's return value | 108 | /* Puts the specified return value in the waiting thread's return value |
109 | and wakes the thread - a sender should be confirmed to exist first */ | 109 | and wakes the thread - a sender should be confirmed to exist first */ |
110 | static void queue_release_sender(struct queue_sender **sender, void *retval) | 110 | static void queue_release_sender(struct queue_sender **sender, |
111 | intptr_t retval) | ||
111 | { | 112 | { |
112 | (*sender)->retval = retval; | 113 | (*sender)->retval = retval; |
113 | wakeup_thread(&(*sender)->thread); | 114 | wakeup_thread(&(*sender)->thread); |
@@ -127,7 +128,7 @@ static void queue_release_all_senders(struct event_queue *q) | |||
127 | &q->send->senders[i & QUEUE_LENGTH_MASK]; | 128 | &q->send->senders[i & QUEUE_LENGTH_MASK]; |
128 | if(*spp) | 129 | if(*spp) |
129 | { | 130 | { |
130 | queue_release_sender(spp, NULL); | 131 | queue_release_sender(spp, 0); |
131 | } | 132 | } |
132 | } | 133 | } |
133 | } | 134 | } |
@@ -242,7 +243,7 @@ void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks) | |||
242 | } | 243 | } |
243 | } | 244 | } |
244 | 245 | ||
245 | void queue_post(struct event_queue *q, long id, void *data) | 246 | void queue_post(struct event_queue *q, long id, intptr_t data) |
246 | { | 247 | { |
247 | int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); | 248 | int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); |
248 | unsigned int wr = q->write++ & QUEUE_LENGTH_MASK; | 249 | unsigned int wr = q->write++ & QUEUE_LENGTH_MASK; |
@@ -258,7 +259,7 @@ void queue_post(struct event_queue *q, long id, void *data) | |||
258 | if(*spp) | 259 | if(*spp) |
259 | { | 260 | { |
260 | /* overflow protect - unblock any thread waiting at this index */ | 261 | /* overflow protect - unblock any thread waiting at this index */ |
261 | queue_release_sender(spp, NULL); | 262 | queue_release_sender(spp, 0); |
262 | } | 263 | } |
263 | } | 264 | } |
264 | #endif | 265 | #endif |
@@ -268,7 +269,7 @@ void queue_post(struct event_queue *q, long id, void *data) | |||
268 | } | 269 | } |
269 | 270 | ||
270 | #ifdef HAVE_EXTENDED_MESSAGING_AND_NAME | 271 | #ifdef HAVE_EXTENDED_MESSAGING_AND_NAME |
271 | void * queue_send(struct event_queue *q, long id, void *data) | 272 | intptr_t queue_send(struct event_queue *q, long id, intptr_t data) |
272 | { | 273 | { |
273 | int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); | 274 | int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); |
274 | unsigned int wr = q->write++ & QUEUE_LENGTH_MASK; | 275 | unsigned int wr = q->write++ & QUEUE_LENGTH_MASK; |
@@ -284,7 +285,7 @@ void * queue_send(struct event_queue *q, long id, void *data) | |||
284 | if(*spp) | 285 | if(*spp) |
285 | { | 286 | { |
286 | /* overflow protect - unblock any thread waiting at this index */ | 287 | /* overflow protect - unblock any thread waiting at this index */ |
287 | queue_release_sender(spp, NULL); | 288 | queue_release_sender(spp, 0); |
288 | } | 289 | } |
289 | 290 | ||
290 | *spp = &sender; | 291 | *spp = &sender; |
@@ -298,7 +299,7 @@ void * queue_send(struct event_queue *q, long id, void *data) | |||
298 | /* Function as queue_post if sending is not enabled */ | 299 | /* Function as queue_post if sending is not enabled */ |
299 | wakeup_thread(&q->thread); | 300 | wakeup_thread(&q->thread); |
300 | set_irq_level(oldlevel); | 301 | set_irq_level(oldlevel); |
301 | return NULL; | 302 | return 0; |
302 | } | 303 | } |
303 | 304 | ||
304 | #if 0 /* not used now but probably will be later */ | 305 | #if 0 /* not used now but probably will be later */ |
@@ -310,7 +311,7 @@ bool queue_in_queue_send(struct event_queue *q) | |||
310 | #endif | 311 | #endif |
311 | 312 | ||
312 | /* Replies with retval to any dequeued message sent with queue_send */ | 313 | /* Replies with retval to any dequeued message sent with queue_send */ |
313 | void queue_reply(struct event_queue *q, void *retval) | 314 | void queue_reply(struct event_queue *q, intptr_t retval) |
314 | { | 315 | { |
315 | if(q->send && q->send->curr_sender) | 316 | if(q->send && q->send->curr_sender) |
316 | { | 317 | { |
@@ -360,7 +361,7 @@ void queue_remove_from_head(struct event_queue *q, long id) | |||
360 | if(*spp) | 361 | if(*spp) |
361 | { | 362 | { |
362 | /* Release any thread waiting on this message */ | 363 | /* Release any thread waiting on this message */ |
363 | queue_release_sender(spp, NULL); | 364 | queue_release_sender(spp, 0); |
364 | } | 365 | } |
365 | } | 366 | } |
366 | #endif | 367 | #endif |
@@ -370,7 +371,7 @@ void queue_remove_from_head(struct event_queue *q, long id) | |||
370 | set_irq_level(oldlevel); | 371 | set_irq_level(oldlevel); |
371 | } | 372 | } |
372 | 373 | ||
373 | int queue_broadcast(long id, void *data) | 374 | int queue_broadcast(long id, intptr_t data) |
374 | { | 375 | { |
375 | int i; | 376 | int i; |
376 | 377 | ||