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