summaryrefslogtreecommitdiff
path: root/uisimulator/sdl
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/sdl')
-rw-r--r--uisimulator/sdl/kernel.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/uisimulator/sdl/kernel.c b/uisimulator/sdl/kernel.c
index bfe6062450..f1eb095e7b 100644
--- a/uisimulator/sdl/kernel.c
+++ b/uisimulator/sdl/kernel.c
@@ -38,6 +38,7 @@ void queue_init(struct event_queue *q, bool register_queue)
38 38
39 q->read = 0; 39 q->read = 0;
40 q->write = 0; 40 q->write = 0;
41 q->thread = NULL;
41} 42}
42 43
43void queue_delete(struct event_queue *q) 44void queue_delete(struct event_queue *q)
@@ -99,6 +100,19 @@ void queue_clear(struct event_queue* q)
99 q->write = 0; 100 q->write = 0;
100} 101}
101 102
103void queue_remove_from_head(struct event_queue *q, long id)
104{
105 int oldlevel = set_irq_level(15<<4);
106
107 while (q->read != q->write &&
108 q->events[(q->read) & QUEUE_LENGTH_MASK].id == id)
109 {
110 q->read++;
111 }
112
113 set_irq_level(oldlevel);
114}
115
102void switch_thread(bool save_context, struct thread_entry **blocked_list) 116void switch_thread(bool save_context, struct thread_entry **blocked_list)
103{ 117{
104 (void)save_context; 118 (void)save_context;