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 55d78e0..01adfcc 100644 --- a/firmware/kernel.c +++ b/firmware/kernel.c @@ -107,7 +107,8 @@ static void queue_fetch_sender(struct queue_sender_list *send, /* Puts the specified return value in the waiting thread's return value and wakes the thread - a sender should be confirmed to exist first */ -static void queue_release_sender(struct queue_sender **sender, void *retval) +static void queue_release_sender(struct queue_sender **sender, + intptr_t retval) { (*sender)->retval = retval; wakeup_thread(&(*sender)->thread); @@ -127,7 +128,7 @@ static void queue_release_all_senders(struct event_queue *q) &q->send->senders[i & QUEUE_LENGTH_MASK]; if(*spp) { - queue_release_sender(spp, NULL); + queue_release_sender(spp, 0); } } } @@ -242,7 +243,7 @@ void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks) } } -void queue_post(struct event_queue *q, long id, void *data) +void queue_post(struct event_queue *q, long id, intptr_t data) { int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); unsigned int wr = q->write++ & QUEUE_LENGTH_MASK; @@ -258,7 +259,7 @@ void queue_post(struct event_queue *q, long id, void *data) if(*spp) { /* overflow protect - unblock any thread waiting at this index */ - queue_release_sender(spp, NULL); + queue_release_sender(spp, 0); } } #endif @@ -268,7 +269,7 @@ void queue_post(struct event_queue *q, long id, void *data) } #ifdef HAVE_EXTENDED_MESSAGING_AND_NAME -void * queue_send(struct event_queue *q, long id, void *data) +intptr_t queue_send(struct event_queue *q, long id, intptr_t data) { int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); unsigned int wr = q->write++ & QUEUE_LENGTH_MASK; @@ -284,7 +285,7 @@ void * queue_send(struct event_queue *q, long id, void *data) if(*spp) { /* overflow protect - unblock any thread waiting at this index */ - queue_release_sender(spp, NULL); + queue_release_sender(spp, 0); } *spp = &sender; @@ -298,7 +299,7 @@ void * queue_send(struct event_queue *q, long id, void *data) /* Function as queue_post if sending is not enabled */ wakeup_thread(&q->thread); set_irq_level(oldlevel); - return NULL; + return 0; } #if 0 /* not used now but probably will be later */ @@ -310,7 +311,7 @@ bool queue_in_queue_send(struct event_queue *q) #endif /* Replies with retval to any dequeued message sent with queue_send */ -void queue_reply(struct event_queue *q, void *retval) +void queue_reply(struct event_queue *q, intptr_t retval) { if(q->send && q->send->curr_sender) { @@ -360,7 +361,7 @@ void queue_remove_from_head(struct event_queue *q, long id) if(*spp) { /* Release any thread waiting on this message */ - queue_release_sender(spp, NULL); + queue_release_sender(spp, 0); } } #endif @@ -370,7 +371,7 @@ void queue_remove_from_head(struct event_queue *q, long id) set_irq_level(oldlevel); } -int queue_broadcast(long id, void *data) +int queue_broadcast(long id, intptr_t data) { int i; |