ronnie
2022-10-14 1504bb53e29d3d46222c0b3ea994fc494b48e153
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
#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;
}