120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/*
220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *
338ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang * Copyright 2012 Samsung Electronics S.LSI Co. LTD
420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *
520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Licensed under the Apache License, Version 2.0 (the "License");
620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * you may not use this file except in compliance with the License.
720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * You may obtain a copy of the License at
820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *
920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *      http://www.apache.org/licenses/LICENSE-2.0
1020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *
1120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Unless required by applicable law or agreed to in writing, software
1220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * distributed under the License is distributed on an "AS IS" BASIS,
1320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * See the License for the specific language governing permissions and
1520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * limitations under the License.
1620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
1720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
1820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/*
1920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @file    Exynos_OSAL_Queue.h
2020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @brief
2120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @author    SeungBeom Kim (sbcrux.kim@samsung.com)
2238ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang * @version    2.0.0
2320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @history
2438ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang *   2012.02.20 : Create
2520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
2620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
2738ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang#ifndef EXYNOS_OSAL_QUEUE
2838ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang#define EXYNOS_OSAL_QUEUE
2920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "OMX_Types.h"
3120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "OMX_Core.h"
3220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3338ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang#define QUEUE_ELEMENTS        10
3438ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang#define MAX_QUEUE_ELEMENTS    40
3520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _EXYNOS_QElem
3720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
3820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    void             *data;
3920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    struct _EXYNOS_QElem *qNext;
4020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} EXYNOS_QElem;
4120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
4220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _EXYNOS_QUEUE
4320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
4420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    EXYNOS_QElem     *first;
4520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    EXYNOS_QElem     *last;
4620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    int            numElem;
4738ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    int            maxNumElem;
4820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_HANDLETYPE qMutex;
4920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} EXYNOS_QUEUE;
5020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
5120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
5220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
5320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changextern "C" {
5420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
5520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
5638ef2572d26fc760c584a1855a3d002f34eb0231Jiho ChangOMX_ERRORTYPE Exynos_OSAL_QueueCreate(EXYNOS_QUEUE *queueHandle, int maxNumElem);
5720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OSAL_QueueTerminate(EXYNOS_QUEUE *queueHandle);
5820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changint           Exynos_OSAL_Queue(EXYNOS_QUEUE *queueHandle, void *data);
5920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changvoid         *Exynos_OSAL_Dequeue(EXYNOS_QUEUE *queueHandle);
6020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changint           Exynos_OSAL_GetElemNum(EXYNOS_QUEUE *queueHandle);
6120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changint           Exynos_OSAL_SetElemNum(EXYNOS_QUEUE *queueHandle, int ElemNum);
6238ef2572d26fc760c584a1855a3d002f34eb0231Jiho Changint           Exynos_OSAL_ResetQueue(EXYNOS_QUEUE *queueHandle);
6320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
6420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
6520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang}
6620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
6720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
6820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
69