summaryrefslogtreecommitdiff
path: root/firmware/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/kernel.c')
-rw-r--r--firmware/kernel.c21
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 */
110static void queue_release_sender(struct queue_sender **sender, void *retval) 110static 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
245void queue_post(struct event_queue *q, long id, void *data) 246void 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
271void * queue_send(struct event_queue *q, long id, void *data) 272intptr_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 */
313void queue_reply(struct event_queue *q, void *retval) 314void 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
373int queue_broadcast(long id, void *data) 374int queue_broadcast(long id, intptr_t data)
374{ 375{
375 int i; 376 int i;
376 377