From bd2561dcbb73cd967676f50fec98759405f5e901 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Mon, 29 Apr 2002 14:25:44 +0000 Subject: Added queue handling stuff - NOT INTERRUPT SAFE git-svn-id: svn://svn.rockbox.org/rockbox/trunk@315 a1c6a512-1295-4272-9138-f99709370657 --- firmware/kernel.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'firmware/kernel.h') diff --git a/firmware/kernel.h b/firmware/kernel.h index 60e8ad6..cef6cfe 100644 --- a/firmware/kernel.h +++ b/firmware/kernel.h @@ -25,6 +25,22 @@ #define HZ 100 /* number of ticks per second */ +#define QUEUE_LENGTH 16 /* MUST be a power of 2 */ +#define QUEUE_LENGTH_MASK (QUEUE_LENGTH - 1) + +struct event +{ + int id; + void *data; +}; + +struct event_queue +{ + struct event events[QUEUE_LENGTH]; + unsigned int read; + unsigned int write; +}; + /* global tick variable */ extern long current_tick; @@ -32,5 +48,8 @@ extern long current_tick; extern void yield(void); extern void sleep(int ticks); +extern void queue_init(struct event_queue *q); +extern struct event *queue_wait(struct event_queue *q); +extern void queue_post(struct event_queue *q, int id, void *data); #endif -- cgit v1.1