summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/export/kernel.h1
-rw-r--r--firmware/kernel.c20
-rw-r--r--uisimulator/sdl/kernel.c5
-rw-r--r--uisimulator/win32/kernel.c5
-rw-r--r--uisimulator/x11/kernel.c5
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));
86int tick_remove_task(void (*f)(void)); 86int tick_remove_task(void (*f)(void));
87 87
88extern void queue_init(struct event_queue *q); 88extern void queue_init(struct event_queue *q);
89extern void queue_delete(struct event_queue *q);
89extern void queue_wait(struct event_queue *q, struct event *ev); 90extern void queue_wait(struct event_queue *q, struct event *ev);
90extern void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks); 91extern void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks);
91extern void queue_post(struct event_queue *q, long id, void *data); 92extern 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
86void 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
86void queue_wait(struct event_queue *q, struct event *ev) 106void 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
39void queue_delete(struct event_queue *q)
40{
41 (void)q;
42}
43
39void queue_wait(struct event_queue *q, struct event *ev) 44void 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
46void queue_delete(struct event_queue *q)
47{
48 (void)q;
49}
50
46void queue_wait(struct event_queue *q, struct event *ev) 51void 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
39void queue_delete(struct event_queue *q)
40{
41 (void)q;
42}
43
39void queue_wait(struct event_queue *q, struct event *ev) 44void queue_wait(struct event_queue *q, struct event *ev)
40{ 45{
41 while(q->read == q->write) 46 while(q->read == q->write)