queue.h revision 30bd6062e4b295f5f7bcaeb98165065310d29269
13597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu/*
230bd6062e4b295f5f7bcaeb98165065310d29269Ho-Eun Ryu * Copyright (c) 2009 Wind River Systems, Inc.
330bd6062e4b295f5f7bcaeb98165065310d29269Ho-Eun Ryu *
430bd6062e4b295f5f7bcaeb98165065310d29269Ho-Eun Ryu * The right to copy, distribute, modify, or otherwise make use
530bd6062e4b295f5f7bcaeb98165065310d29269Ho-Eun Ryu * of this software may be licensed only pursuant to the terms
630bd6062e4b295f5f7bcaeb98165065310d29269Ho-Eun Ryu * of an applicable Wind River license agreement.
73597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu */
83597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
93597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#ifndef __QUEUE_H
103597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#define __QUEUE_H
113597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
123597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#include "list.h"
133597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
143597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#ifdef __cplusplus
153597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuextern "C" {
163597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#endif
173597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
183597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct queue {
193597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu	struct list *head;
203597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu	struct list *tail;
213597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu	int  length;
223597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu};
233597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
243597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid __queue_init(struct queue *queue);
253597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct queue *queue_alloc(void);
263597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu/* FIXME */
273597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline void __queue_free(struct queue *queue);
283597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu/* FIXME */
293597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid queue_free_all(struct queue *queue);
303597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
313597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid __queue_push_head(struct queue *queue, struct list *entry);
323597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuint queue_push_head(struct queue *queue, void *data);
333597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid __queue_push_tail(struct queue *queue, struct list *entry);
343597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuint queue_push_tail(struct queue *queue, void *data);
353597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
363597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct list *__queue_pop_head(struct queue *queue);
373597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid *queue_pop_head(struct queue *queue);
383597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct list *__queue_pop_tail(struct queue *queue);
393597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid *queue_pop_tail(struct queue *queue);
403597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
413597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline struct list *__queue_peek_head(struct queue *queue);
423597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline struct list *__queue_peek_tail(struct queue *queue);
433597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline void *queue_peek_head(struct queue *queue);
443597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline void *queue_peek_tail(struct queue *queue);
453597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
463597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuint queue_length(struct queue *queue);
473597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
483597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#ifdef __cplusplus
493597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu} /* extern "C" */
503597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#endif
513597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
523597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#endif /* __QUEUE_H */
53