diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2006-01-23 10:53:47 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2006-01-23 10:53:47 +0000 |
commit | 765e0f89d804b00c504104f4842947bdeee69fa3 (patch) | |
tree | c551b287abc9605dc676863c877fa07358938d85 /firmware | |
parent | 6be916b379d27664fcbb529fa6034357393d0ccf (diff) | |
download | rockbox-765e0f89d804b00c504104f4842947bdeee69fa3.tar.gz rockbox-765e0f89d804b00c504104f4842947bdeee69fa3.zip |
New kernel function, queue_delete(struct event_queue *q)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8424 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/kernel.h | 1 | ||||
-rw-r--r-- | firmware/kernel.c | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/firmware/export/kernel.h b/firmware/export/kernel.h index 42d160bcea..5cd3c6dc94 100644 --- a/firmware/export/kernel.h +++ b/firmware/export/kernel.h | |||
@@ -86,6 +86,7 @@ int tick_add_task(void (*f)(void)); | |||
86 | int tick_remove_task(void (*f)(void)); | 86 | int tick_remove_task(void (*f)(void)); |
87 | 87 | ||
88 | extern void queue_init(struct event_queue *q); | 88 | extern void queue_init(struct event_queue *q); |
89 | extern void queue_delete(struct event_queue *q); | ||
89 | extern void queue_wait(struct event_queue *q, struct event *ev); | 90 | extern void queue_wait(struct event_queue *q, struct event *ev); |
90 | extern void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks); | 91 | extern void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks); |
91 | extern void queue_post(struct event_queue *q, long id, void *data); | 92 | extern void queue_post(struct event_queue *q, long id, void *data); |
diff --git a/firmware/kernel.c b/firmware/kernel.c index b30a3bb12b..f8b9cec2e1 100644 --- a/firmware/kernel.c +++ b/firmware/kernel.c | |||
@@ -83,6 +83,26 @@ void queue_init(struct event_queue *q) | |||
83 | all_queues[num_queues++] = q; | 83 | all_queues[num_queues++] = q; |
84 | } | 84 | } |
85 | 85 | ||
86 | void queue_delete(struct event_queue *q) | ||
87 | { | ||
88 | int i; | ||
89 | |||
90 | /* Find the queue to be deleted */ | ||
91 | for(i = 0;i < num_queues;i++) | ||
92 | { | ||
93 | if(all_queues[i] == q) | ||
94 | break; | ||
95 | } | ||
96 | |||
97 | /* Move the following queues up in the list */ | ||
98 | for(;i < num_queues-1;i++) | ||
99 | { | ||
100 | all_queues[i] = all_queues[i+1]; | ||
101 | } | ||
102 | |||
103 | num_queues--; | ||
104 | } | ||
105 | |||
86 | void queue_wait(struct event_queue *q, struct event *ev) | 106 | void queue_wait(struct event_queue *q, struct event *ev) |
87 | { | 107 | { |
88 | while(q->read == q->write) | 108 | while(q->read == q->write) |