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