summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/kernel.c5
-rw-r--r--firmware/kernel.h3
2 files changed, 8 insertions, 0 deletions
diff --git a/firmware/kernel.c b/firmware/kernel.c
index c6ac1fb7aa..639b73def5 100644
--- a/firmware/kernel.c
+++ b/firmware/kernel.c
@@ -94,6 +94,11 @@ void queue_post(struct event_queue *q, int id, void *data)
94 set_irq_level(oldlevel); 94 set_irq_level(oldlevel);
95} 95}
96 96
97bool queue_empty(struct event_queue* q)
98{
99 return ( q->read == q->write );
100}
101
97 102
98/**************************************************************************** 103/****************************************************************************
99 * Timer tick 104 * Timer tick
diff --git a/firmware/kernel.h b/firmware/kernel.h
index cd5539b791..8f981b3753 100644
--- a/firmware/kernel.h
+++ b/firmware/kernel.h
@@ -19,6 +19,8 @@
19#ifndef _KERNEL_H_ 19#ifndef _KERNEL_H_
20#define _KERNEL_H_ 20#define _KERNEL_H_
21 21
22#include <stdbool.h>
23
22/* wrap-safe macros for tick comparison */ 24/* wrap-safe macros for tick comparison */
23#define TIME_AFTER(a,b) ((long)(b) - (long)(a) < 0) 25#define TIME_AFTER(a,b) ((long)(b) - (long)(a) < 0)
24#define TIME_BEFORE(a,b) TIME_AFTER(b,a) 26#define TIME_BEFORE(a,b) TIME_AFTER(b,a)
@@ -60,6 +62,7 @@ int tick_remove_task(void (*f)(void));
60extern void queue_init(struct event_queue *q); 62extern void queue_init(struct event_queue *q);
61extern void queue_wait(struct event_queue *q, struct event *ev); 63extern void queue_wait(struct event_queue *q, struct event *ev);
62extern void queue_post(struct event_queue *q, int id, void *data); 64extern void queue_post(struct event_queue *q, int id, void *data);
65extern bool queue_empty(struct event_queue* q);
63 66
64extern void mutex_init(struct mutex *m); 67extern void mutex_init(struct mutex *m);
65extern void mutex_lock(struct mutex *m); 68extern void mutex_lock(struct mutex *m);