13597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu/*
22f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * queue.h, queue
330bd6062e4b295f5f7bcaeb98165065310d29269Ho-Eun Ryu *
42f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * Copyright (c) 2009-2010 Wind River Systems, Inc.
52f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu *
62f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * Licensed under the Apache License, Version 2.0 (the "License");
72f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * you may not use this file except in compliance with the License.
82f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * You may obtain a copy of the License at
92f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu *
102f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * http://www.apache.org/licenses/LICENSE-2.0
112f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu *
122f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * Unless required by applicable law or agreed to in writing, software
132f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * distributed under the License is distributed on an "AS IS" BASIS,
142f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
152f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * See the License for the specific language governing permissions and
162f6e87e64736666857c1bbe2cb0692c1f4e56508Ho-Eun Ryu * limitations under the License.
173597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu */
183597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
193597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#ifndef __QUEUE_H
203597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#define __QUEUE_H
213597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
223597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#include "list.h"
233597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
243597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#ifdef __cplusplus
253597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuextern "C" {
263597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#endif
273597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
283597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct queue {
293597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu	struct list *head;
303597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu	struct list *tail;
313597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu	int  length;
323597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu};
333597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
343597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid __queue_init(struct queue *queue);
353597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct queue *queue_alloc(void);
363597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu/* FIXME */
373597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline void __queue_free(struct queue *queue);
383597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu/* FIXME */
393597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid queue_free_all(struct queue *queue);
403597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
413597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid __queue_push_head(struct queue *queue, struct list *entry);
423597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuint queue_push_head(struct queue *queue, void *data);
433597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid __queue_push_tail(struct queue *queue, struct list *entry);
443597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuint queue_push_tail(struct queue *queue, void *data);
453597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
463597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct list *__queue_pop_head(struct queue *queue);
473597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid *queue_pop_head(struct queue *queue);
483597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryustruct list *__queue_pop_tail(struct queue *queue);
493597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuvoid *queue_pop_tail(struct queue *queue);
503597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
513597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline struct list *__queue_peek_head(struct queue *queue);
523597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline struct list *__queue_peek_tail(struct queue *queue);
533597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline void *queue_peek_head(struct queue *queue);
543597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuinline void *queue_peek_tail(struct queue *queue);
553597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
563597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryuint queue_length(struct queue *queue);
573597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
583597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#ifdef __cplusplus
593597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu} /* extern "C" */
603597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#endif
613597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu
623597788ce7c666b2e86df3932968f0745f4b7bd1Ho-Eun Ryu#endif /* __QUEUE_H */
63