summaryrefslogtreecommitdiff
path: root/uisimulator/win32/kernel.c
diff options
context:
space:
mode:
Diffstat (limited to 'uisimulator/win32/kernel.c')
-rw-r--r--uisimulator/win32/kernel.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/uisimulator/win32/kernel.c b/uisimulator/win32/kernel.c
index 150b8e42cc..567ed9ee39 100644
--- a/uisimulator/win32/kernel.c
+++ b/uisimulator/win32/kernel.c
@@ -56,6 +56,25 @@ void queue_wait(struct event_queue *q, struct event *ev)
56 *ev = q->events[(q->read++) & QUEUE_LENGTH_MASK]; 56 *ev = q->events[(q->read++) & QUEUE_LENGTH_MASK];
57} 57}
58 58
59void queue_wait_w_tmo(struct event_queue *q, struct event *ev, int ticks)
60{
61 unsigned int timeout = current_tick + ticks;
62
63 while(q->read == q->write && TIME_BEFORE( current_tick, timeout ))
64 {
65 sleep(1);
66 }
67
68 if(q->read != q->write)
69 {
70 *ev = q->events[(q->read++) & QUEUE_LENGTH_MASK];
71 }
72 else
73 {
74 ev->id = SYS_TIMEOUT;
75 }
76}
77
59void queue_post(struct event_queue *q, int id, void *data) 78void queue_post(struct event_queue *q, int id, void *data)
60{ 79{
61 int wr; 80 int wr;