xref: /aosp_15_r20/external/libhevc/encoder/osal.c (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
1*c83a76b0SSuyog Pawar /******************************************************************************
2*c83a76b0SSuyog Pawar  *
3*c83a76b0SSuyog Pawar  * Copyright (C) 2018 The Android Open Source Project
4*c83a76b0SSuyog Pawar  *
5*c83a76b0SSuyog Pawar  * Licensed under the Apache License, Version 2.0 (the "License");
6*c83a76b0SSuyog Pawar  * you may not use this file except in compliance with the License.
7*c83a76b0SSuyog Pawar  * You may obtain a copy of the License at:
8*c83a76b0SSuyog Pawar  *
9*c83a76b0SSuyog Pawar  * http://www.apache.org/licenses/LICENSE-2.0
10*c83a76b0SSuyog Pawar  *
11*c83a76b0SSuyog Pawar  * Unless required by applicable law or agreed to in writing, software
12*c83a76b0SSuyog Pawar  * distributed under the License is distributed on an "AS IS" BASIS,
13*c83a76b0SSuyog Pawar  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*c83a76b0SSuyog Pawar  * See the License for the specific language governing permissions and
15*c83a76b0SSuyog Pawar  * limitations under the License.
16*c83a76b0SSuyog Pawar  *
17*c83a76b0SSuyog Pawar  *****************************************************************************
18*c83a76b0SSuyog Pawar  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*c83a76b0SSuyog Pawar */
20*c83a76b0SSuyog Pawar 
21*c83a76b0SSuyog Pawar /*****************************************************************************/
22*c83a76b0SSuyog Pawar /*                                                                           */
23*c83a76b0SSuyog Pawar /*  File Name         : osal.c                                               */
24*c83a76b0SSuyog Pawar /*                                                                           */
25*c83a76b0SSuyog Pawar /*  Description       : This file contains all the API's of OSAL             */
26*c83a76b0SSuyog Pawar /*                      initialization and closure                           */
27*c83a76b0SSuyog Pawar /*                                                                           */
28*c83a76b0SSuyog Pawar /*  List of Functions : osal_init                                            */
29*c83a76b0SSuyog Pawar /*                      osal_register_callbacks                              */
30*c83a76b0SSuyog Pawar /*                      osal_close                                           */
31*c83a76b0SSuyog Pawar /*                      osal_get_version                                     */
32*c83a76b0SSuyog Pawar /*                      osal_print_status_log                                */
33*c83a76b0SSuyog Pawar /*                                                                           */
34*c83a76b0SSuyog Pawar /*  Issues / Problems : None                                                 */
35*c83a76b0SSuyog Pawar /*                                                                           */
36*c83a76b0SSuyog Pawar /*  Revision History  :                                                      */
37*c83a76b0SSuyog Pawar /*                                                                           */
38*c83a76b0SSuyog Pawar /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
39*c83a76b0SSuyog Pawar /*         19 04 2006   Ittiam          Draft                                */
40*c83a76b0SSuyog Pawar /*                                                                           */
41*c83a76b0SSuyog Pawar /*****************************************************************************/
42*c83a76b0SSuyog Pawar 
43*c83a76b0SSuyog Pawar /*****************************************************************************/
44*c83a76b0SSuyog Pawar /* File Includes                                                             */
45*c83a76b0SSuyog Pawar /*****************************************************************************/
46*c83a76b0SSuyog Pawar 
47*c83a76b0SSuyog Pawar /* System include files */
48*c83a76b0SSuyog Pawar #include <stdio.h>
49*c83a76b0SSuyog Pawar 
50*c83a76b0SSuyog Pawar #include <sys/types.h>
51*c83a76b0SSuyog Pawar #include <semaphore.h>
52*c83a76b0SSuyog Pawar #include <pthread.h>
53*c83a76b0SSuyog Pawar 
54*c83a76b0SSuyog Pawar /* User include files */
55*c83a76b0SSuyog Pawar #include "cast_types.h"
56*c83a76b0SSuyog Pawar #include "osal.h"
57*c83a76b0SSuyog Pawar #include "osal_handle.h"
58*c83a76b0SSuyog Pawar 
59*c83a76b0SSuyog Pawar /*****************************************************************************/
60*c83a76b0SSuyog Pawar /* Constant Macros                                                           */
61*c83a76b0SSuyog Pawar /*****************************************************************************/
62*c83a76b0SSuyog Pawar 
63*c83a76b0SSuyog Pawar #define OSAL_VERSION "OSAL_v13.1"
64*c83a76b0SSuyog Pawar 
65*c83a76b0SSuyog Pawar /*****************************************************************************/
66*c83a76b0SSuyog Pawar /*                                                                           */
67*c83a76b0SSuyog Pawar /*  Function Name : osal_init                                                */
68*c83a76b0SSuyog Pawar /*                                                                           */
69*c83a76b0SSuyog Pawar /*  Description   : This function creates and initializes the OSAL instance  */
70*c83a76b0SSuyog Pawar /*                                                                           */
71*c83a76b0SSuyog Pawar /*  Inputs        : Memory for OSAL handle                                   */
72*c83a76b0SSuyog Pawar /*                                                                           */
73*c83a76b0SSuyog Pawar /*  Globals       : None                                                     */
74*c83a76b0SSuyog Pawar /*                                                                           */
75*c83a76b0SSuyog Pawar /*  Processing    : Initializes OSAL handle parameters to default values.    */
76*c83a76b0SSuyog Pawar /*                                                                           */
77*c83a76b0SSuyog Pawar /*  Outputs       : Status of OSAL handle initialization                     */
78*c83a76b0SSuyog Pawar /*                                                                           */
79*c83a76b0SSuyog Pawar /*  Returns       : On SUCCESS - OSAL_SUCCESS                                */
80*c83a76b0SSuyog Pawar /*                  On FAILURE - OSAL_ERROR                                  */
81*c83a76b0SSuyog Pawar /*                                                                           */
82*c83a76b0SSuyog Pawar /*  Issues        : None                                                     */
83*c83a76b0SSuyog Pawar /*                                                                           */
84*c83a76b0SSuyog Pawar /*  Revision History:                                                        */
85*c83a76b0SSuyog Pawar /*                                                                           */
86*c83a76b0SSuyog Pawar /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
87*c83a76b0SSuyog Pawar /*         19 04 2006   Ittiam          Draft                                */
88*c83a76b0SSuyog Pawar /*                                                                           */
89*c83a76b0SSuyog Pawar /*****************************************************************************/
90*c83a76b0SSuyog Pawar 
osal_init(IN void * osal_handle)91*c83a76b0SSuyog Pawar WORD32 osal_init(IN void *osal_handle)
92*c83a76b0SSuyog Pawar {
93*c83a76b0SSuyog Pawar     osal_t *handle = (osal_t *)osal_handle;
94*c83a76b0SSuyog Pawar 
95*c83a76b0SSuyog Pawar     /* Validate the input */
96*c83a76b0SSuyog Pawar     if(0 == osal_handle)
97*c83a76b0SSuyog Pawar         return OSAL_ERROR;
98*c83a76b0SSuyog Pawar 
99*c83a76b0SSuyog Pawar     /* Initialize call back functions */
100*c83a76b0SSuyog Pawar     handle->alloc = 0;
101*c83a76b0SSuyog Pawar     handle->free = 0;
102*c83a76b0SSuyog Pawar     handle->mmr_handle = 0;
103*c83a76b0SSuyog Pawar 
104*c83a76b0SSuyog Pawar     return OSAL_SUCCESS;
105*c83a76b0SSuyog Pawar }
106*c83a76b0SSuyog Pawar 
107*c83a76b0SSuyog Pawar /*****************************************************************************/
108*c83a76b0SSuyog Pawar /*                                                                           */
109*c83a76b0SSuyog Pawar /*  Function Name : osal_register_callbacks                                  */
110*c83a76b0SSuyog Pawar /*                                                                           */
111*c83a76b0SSuyog Pawar /*  Description   : This function registers MMR handle and allocation and    */
112*c83a76b0SSuyog Pawar /*                  freeing call back functions.                             */
113*c83a76b0SSuyog Pawar /*                                                                           */
114*c83a76b0SSuyog Pawar /*  Inputs        : OSAL handle                                              */
115*c83a76b0SSuyog Pawar /*                  OSAL callback attributes                                 */
116*c83a76b0SSuyog Pawar /*                                                                           */
117*c83a76b0SSuyog Pawar /*  Globals       : None                                                     */
118*c83a76b0SSuyog Pawar /*                                                                           */
119*c83a76b0SSuyog Pawar /*  Processing    : This function initializes OSAL call back parameters.     */
120*c83a76b0SSuyog Pawar /*                                                                           */
121*c83a76b0SSuyog Pawar /*  Outputs       : Status of OSAL callback registration                     */
122*c83a76b0SSuyog Pawar /*                                                                           */
123*c83a76b0SSuyog Pawar /*  Returns       : On SUCCESS - OSAL_SUCCESS                                */
124*c83a76b0SSuyog Pawar /*                  On FAILURE - OSAL_ERROR                                  */
125*c83a76b0SSuyog Pawar /*                                                                           */
126*c83a76b0SSuyog Pawar /*  Issues        : None                                                     */
127*c83a76b0SSuyog Pawar /*                                                                           */
128*c83a76b0SSuyog Pawar /*  Revision History:                                                        */
129*c83a76b0SSuyog Pawar /*                                                                           */
130*c83a76b0SSuyog Pawar /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
131*c83a76b0SSuyog Pawar /*         10 05 2006   Ittiam          Draft                                */
132*c83a76b0SSuyog Pawar /*                                                                           */
133*c83a76b0SSuyog Pawar /*****************************************************************************/
134*c83a76b0SSuyog Pawar 
osal_register_callbacks(IN void * osal_handle,IN osal_cb_funcs_t * cb_funcs)135*c83a76b0SSuyog Pawar WORD32 osal_register_callbacks(IN void *osal_handle, IN osal_cb_funcs_t *cb_funcs)
136*c83a76b0SSuyog Pawar {
137*c83a76b0SSuyog Pawar     osal_t *handle = (osal_t *)osal_handle;
138*c83a76b0SSuyog Pawar 
139*c83a76b0SSuyog Pawar     /* Validate the input */
140*c83a76b0SSuyog Pawar     if(0 == handle || 0 == cb_funcs)
141*c83a76b0SSuyog Pawar         return OSAL_ERROR;
142*c83a76b0SSuyog Pawar 
143*c83a76b0SSuyog Pawar     if(0 == cb_funcs->osal_alloc || 0 == cb_funcs->osal_free)
144*c83a76b0SSuyog Pawar         return OSAL_ERROR;
145*c83a76b0SSuyog Pawar 
146*c83a76b0SSuyog Pawar     /* Initialize call back parameters */
147*c83a76b0SSuyog Pawar     handle->mmr_handle = cb_funcs->mmr_handle;
148*c83a76b0SSuyog Pawar     handle->alloc = cb_funcs->osal_alloc;
149*c83a76b0SSuyog Pawar     handle->free = cb_funcs->osal_free;
150*c83a76b0SSuyog Pawar 
151*c83a76b0SSuyog Pawar     return OSAL_SUCCESS;
152*c83a76b0SSuyog Pawar }
153*c83a76b0SSuyog Pawar 
154*c83a76b0SSuyog Pawar /*****************************************************************************/
155*c83a76b0SSuyog Pawar /*                                                                           */
156*c83a76b0SSuyog Pawar /*  Function Name : osal_close                                               */
157*c83a76b0SSuyog Pawar /*                                                                           */
158*c83a76b0SSuyog Pawar /*  Description   : This function closes the OSAL instance                   */
159*c83a76b0SSuyog Pawar /*                                                                           */
160*c83a76b0SSuyog Pawar /*  Inputs        : OSAL handle                                              */
161*c83a76b0SSuyog Pawar /*                                                                           */
162*c83a76b0SSuyog Pawar /*  Globals       : None                                                     */
163*c83a76b0SSuyog Pawar /*                                                                           */
164*c83a76b0SSuyog Pawar /*  Processing    : Frees the memory allocated for the OSAL handle           */
165*c83a76b0SSuyog Pawar /*                                                                           */
166*c83a76b0SSuyog Pawar /*  Outputs       : Status of OSAL instance close                            */
167*c83a76b0SSuyog Pawar /*                                                                           */
168*c83a76b0SSuyog Pawar /*  Returns       : On SUCCESS - 0                                           */
169*c83a76b0SSuyog Pawar /*                  On FALIURE - -1                                          */
170*c83a76b0SSuyog Pawar /*                                                                           */
171*c83a76b0SSuyog Pawar /*  Issues        : None                                                     */
172*c83a76b0SSuyog Pawar /*                                                                           */
173*c83a76b0SSuyog Pawar /*  Revision History:                                                        */
174*c83a76b0SSuyog Pawar /*                                                                           */
175*c83a76b0SSuyog Pawar /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
176*c83a76b0SSuyog Pawar /*         19 04 2006   Ittiam          Draft                                */
177*c83a76b0SSuyog Pawar /*                                                                           */
178*c83a76b0SSuyog Pawar /*****************************************************************************/
179*c83a76b0SSuyog Pawar 
osal_close(IN void * osal_handle)180*c83a76b0SSuyog Pawar WORD32 osal_close(IN void *osal_handle)
181*c83a76b0SSuyog Pawar {
182*c83a76b0SSuyog Pawar     /* Validate input */
183*c83a76b0SSuyog Pawar     if(0 == osal_handle)
184*c83a76b0SSuyog Pawar         return OSAL_ERROR;
185*c83a76b0SSuyog Pawar 
186*c83a76b0SSuyog Pawar     return OSAL_SUCCESS;
187*c83a76b0SSuyog Pawar }
188*c83a76b0SSuyog Pawar 
189*c83a76b0SSuyog Pawar /*****************************************************************************/
190*c83a76b0SSuyog Pawar /*                                                                           */
191*c83a76b0SSuyog Pawar /*  Function Name : osal_get_version                                         */
192*c83a76b0SSuyog Pawar /*                                                                           */
193*c83a76b0SSuyog Pawar /*  Description   : This function gets the version of OSAL library.          */
194*c83a76b0SSuyog Pawar /*                                                                           */
195*c83a76b0SSuyog Pawar /*  Inputs        : None                                                     */
196*c83a76b0SSuyog Pawar /*  Globals       : None                                                     */
197*c83a76b0SSuyog Pawar /*                                                                           */
198*c83a76b0SSuyog Pawar /*  Processing    : Returns a NULL terminated string with has the version of */
199*c83a76b0SSuyog Pawar /*                  library being used.                                      */
200*c83a76b0SSuyog Pawar /*                                                                           */
201*c83a76b0SSuyog Pawar /*  Outputs       : Version of OSAL library.                                 */
202*c83a76b0SSuyog Pawar /*                                                                           */
203*c83a76b0SSuyog Pawar /*  Returns       : Pointer to a NULL terminated string                      */
204*c83a76b0SSuyog Pawar /*                                                                           */
205*c83a76b0SSuyog Pawar /*  Issues        : None                                                     */
206*c83a76b0SSuyog Pawar /*                                                                           */
207*c83a76b0SSuyog Pawar /*  Revision History:                                                        */
208*c83a76b0SSuyog Pawar /*                                                                           */
209*c83a76b0SSuyog Pawar /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
210*c83a76b0SSuyog Pawar /*         07 03 2006   Ittiam          Draft                                */
211*c83a76b0SSuyog Pawar /*                                                                           */
212*c83a76b0SSuyog Pawar /*****************************************************************************/
213*c83a76b0SSuyog Pawar 
osal_get_version()214*c83a76b0SSuyog Pawar WORD8 *osal_get_version()
215*c83a76b0SSuyog Pawar {
216*c83a76b0SSuyog Pawar     return ((WORD8 *)OSAL_VERSION);
217*c83a76b0SSuyog Pawar }
218