#include #include #include #include #include "OSAL_Mutex.h" OMX_ERRORTYPE OSAL_MutexCreate(OMX_HANDLETYPE *mutexHandle) { pthread_mutex_t *mutex; mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); if (!mutex) return OMX_ErrorInsufficientResources; if (pthread_mutex_init(mutex, NULL) != 0) return OMX_ErrorUndefined; *mutexHandle = (OMX_HANDLETYPE)mutex; return OMX_ErrorNone; } OMX_ERRORTYPE OSAL_MutexTerminate(OMX_HANDLETYPE mutexHandle) { pthread_mutex_t *mutex = (pthread_mutex_t *)mutexHandle; if (mutex == NULL) return OMX_ErrorBadParameter; if (pthread_mutex_destroy(mutex) != 0) return OMX_ErrorUndefined; if (mutex) free(mutex); return OMX_ErrorNone; } OMX_ERRORTYPE OSAL_MutexLock(OMX_HANDLETYPE mutexHandle) { pthread_mutex_t *mutex = (pthread_mutex_t *)mutexHandle; int result; if (mutex == NULL) return OMX_ErrorBadParameter; if (pthread_mutex_lock(mutex) != 0) return OMX_ErrorUndefined; return OMX_ErrorNone; } OMX_ERRORTYPE OSAL_MutexUnlock(OMX_HANDLETYPE mutexHandle) { pthread_mutex_t *mutex = (pthread_mutex_t *)mutexHandle; int result; if (mutex == NULL) return OMX_ErrorBadParameter; if (pthread_mutex_unlock(mutex) != 0) return OMX_ErrorUndefined; return OMX_ErrorNone; }