1/* 2** Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. 3** Distributed under the terms of the NewOS License. 4*/ 5#ifndef _KERNEL_QUEUE_H 6#define _KERNEL_QUEUE_H 7 8#include <kernel.h> 9 10#ifdef __cplusplus 11extern "C" { 12#endif 13 14typedef struct queue { 15 void *head; 16 void *tail; 17 int count; 18} queue; 19 20int queue_init(queue *q); 21int queue_remove_item(queue *q, void *e); 22int queue_enqueue(queue *q, void *e); 23void *queue_dequeue(queue *q); 24void *queue_peek(queue *q); 25 26typedef struct fixed_queue { 27 void **table; 28 int head; 29 int tail; 30 int count; 31 int size; 32} fixed_queue; 33 34int fixed_queue_init(fixed_queue *q, int size); 35void fixed_queue_destroy(fixed_queue *q); 36int fixed_queue_enqueue(fixed_queue *q, void *e); 37void *fixed_queue_dequeue(fixed_queue *q); 38void *fixed_queue_peek(fixed_queue *q); 39 40#ifdef __cplusplus 41} 42#endif 43 44#endif /* _KERNEL_QUEUE_H */ 45