summaryrefslogtreecommitdiff
path: root/uisimulator/sdl/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/sdl/kernel.c')
-rw-r--r--uisimulator/sdl/kernel.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/uisimulator/sdl/kernel.c b/uisimulator/sdl/kernel.c
index 96654d50ac..220d069721 100644
--- a/uisimulator/sdl/kernel.c
+++ b/uisimulator/sdl/kernel.c
@@ -405,6 +405,26 @@ bool queue_empty(const struct event_queue* q)
405 return ( q->read == q->write ); 405 return ( q->read == q->write );
406} 406}
407 407
408bool queue_peek(struct event_queue *q, struct queue_event *ev)
409{
410 if (q->read == q->write)
411 return false;
412
413 bool have_msg = false;
414
415 int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);
416
417 if (q->read != q->write)
418 {
419 *ev = q->events[q->read & QUEUE_LENGTH_MASK];
420 have_msg = true;
421 }
422
423 set_irq_level(oldlevel);
424
425 return have_msg;
426}
427
408void queue_clear(struct event_queue* q) 428void queue_clear(struct event_queue* q)
409{ 429{
410 int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL); 430 int oldlevel = set_irq_level(HIGHEST_IRQ_LEVEL);