diff options
-rw-r--r-- | firmware/export/kernel.h | 1 | ||||
-rw-r--r-- | firmware/kernel.c | 20 | ||||
-rw-r--r-- | uisimulator/sdl/kernel.c | 5 | ||||
-rw-r--r-- | uisimulator/win32/kernel.c | 5 | ||||
-rw-r--r-- | uisimulator/x11/kernel.c | 5 |
5 files changed, 36 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) |
diff --git a/uisimulator/sdl/kernel.c b/uisimulator/sdl/kernel.c index 25f2df220c..947d82a550 100644 --- a/uisimulator/sdl/kernel.c +++ b/uisimulator/sdl/kernel.c | |||
@@ -36,6 +36,11 @@ void queue_init(struct event_queue *q) | |||
36 | q->write = 0; | 36 | q->write = 0; |
37 | } | 37 | } |
38 | 38 | ||
39 | void queue_delete(struct event_queue *q) | ||
40 | { | ||
41 | (void)q; | ||
42 | } | ||
43 | |||
39 | void queue_wait(struct event_queue *q, struct event *ev) | 44 | void queue_wait(struct event_queue *q, struct event *ev) |
40 | { | 45 | { |
41 | while(q->read == q->write) | 46 | while(q->read == q->write) |
diff --git a/uisimulator/win32/kernel.c b/uisimulator/win32/kernel.c index eb55bf7a72..08b3114f08 100644 --- a/uisimulator/win32/kernel.c +++ b/uisimulator/win32/kernel.c | |||
@@ -43,6 +43,11 @@ void queue_init(struct event_queue *q) | |||
43 | q->write = 0; | 43 | q->write = 0; |
44 | } | 44 | } |
45 | 45 | ||
46 | void queue_delete(struct event_queue *q) | ||
47 | { | ||
48 | (void)q; | ||
49 | } | ||
50 | |||
46 | void queue_wait(struct event_queue *q, struct event *ev) | 51 | void queue_wait(struct event_queue *q, struct event *ev) |
47 | { | 52 | { |
48 | while(q->read == q->write) | 53 | while(q->read == q->write) |
diff --git a/uisimulator/x11/kernel.c b/uisimulator/x11/kernel.c index 25f2df220c..947d82a550 100644 --- a/uisimulator/x11/kernel.c +++ b/uisimulator/x11/kernel.c | |||
@@ -36,6 +36,11 @@ void queue_init(struct event_queue *q) | |||
36 | q->write = 0; | 36 | q->write = 0; |
37 | } | 37 | } |
38 | 38 | ||
39 | void queue_delete(struct event_queue *q) | ||
40 | { | ||
41 | (void)q; | ||
42 | } | ||
43 | |||
39 | void queue_wait(struct event_queue *q, struct event *ev) | 44 | void queue_wait(struct event_queue *q, struct event *ev) |
40 | { | 45 | { |
41 | while(q->read == q->write) | 46 | while(q->read == q->write) |