1/*
2 *
3 * Copyright 2012 Samsung Electronics S.LSI Co. LTD
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *      http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/*
19 * @file    Exynos_OSAL_Queue.h
20 * @brief
21 * @author    SeungBeom Kim (sbcrux.kim@samsung.com)
22 * @version    2.0.0
23 * @history
24 *   2012.02.20 : Create
25 */
26
27#ifndef EXYNOS_OSAL_QUEUE
28#define EXYNOS_OSAL_QUEUE
29
30#include "OMX_Types.h"
31#include "OMX_Core.h"
32
33#define QUEUE_ELEMENTS        10
34#define MAX_QUEUE_ELEMENTS    40
35
36typedef struct _EXYNOS_QElem
37{
38    void             *data;
39    struct _EXYNOS_QElem *qNext;
40} EXYNOS_QElem;
41
42typedef struct _EXYNOS_QUEUE
43{
44    EXYNOS_QElem     *first;
45    EXYNOS_QElem     *last;
46    int            numElem;
47    int            maxNumElem;
48    OMX_HANDLETYPE qMutex;
49} EXYNOS_QUEUE;
50
51
52#ifdef __cplusplus
53extern "C" {
54#endif
55
56OMX_ERRORTYPE Exynos_OSAL_QueueCreate(EXYNOS_QUEUE *queueHandle, int maxNumElem);
57OMX_ERRORTYPE Exynos_OSAL_QueueTerminate(EXYNOS_QUEUE *queueHandle);
58int           Exynos_OSAL_Queue(EXYNOS_QUEUE *queueHandle, void *data);
59void         *Exynos_OSAL_Dequeue(EXYNOS_QUEUE *queueHandle);
60int           Exynos_OSAL_GetElemNum(EXYNOS_QUEUE *queueHandle);
61int           Exynos_OSAL_SetElemNum(EXYNOS_QUEUE *queueHandle, int ElemNum);
62int           Exynos_OSAL_ResetQueue(EXYNOS_QUEUE *queueHandle);
63
64#ifdef __cplusplus
65}
66#endif
67
68#endif
69