allwinner_a64/android/hardware/aw/camera/OSAL_Mutex.c
2018-08-08 17:00:29 +08:00

65 lines
1.4 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#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;
}