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