Initial version of libomxil-e3250-v4l2
[platform/adaptation/ap_samsung/libomxil-e3250-v4l2.git] / openmax / osal / Exynos_OSAL_Queue.h
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
36 typedef struct _EXYNOS_QElem
37 {
38     void             *data;
39     struct _EXYNOS_QElem *qNext;
40 } EXYNOS_QElem;
41
42 typedef 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
53 extern "C" {
54 #endif
55
56 OMX_ERRORTYPE Exynos_OSAL_QueueCreate(EXYNOS_QUEUE *queueHandle, int maxNumElem);
57 OMX_ERRORTYPE Exynos_OSAL_QueueTerminate(EXYNOS_QUEUE *queueHandle);
58 int           Exynos_OSAL_Queue(EXYNOS_QUEUE *queueHandle, void *data);
59 void         *Exynos_OSAL_Dequeue(EXYNOS_QUEUE *queueHandle);
60 int           Exynos_OSAL_GetElemNum(EXYNOS_QUEUE *queueHandle);
61 int           Exynos_OSAL_SetElemNum(EXYNOS_QUEUE *queueHandle, int ElemNum);
62 int           Exynos_OSAL_ResetQueue(EXYNOS_QUEUE *queueHandle);
63
64 #ifdef __cplusplus
65 }
66 #endif
67
68 #endif