]>
git.saurik.com Git - apple/system_cmds.git/blob - kextd.tproj/PTLock.c
92316a54a52f77642f0a4c9b982e219d3c89c2db
4 #include <mach/message.h>
6 #define mutex_t pthread_mutex_t
7 #define condition_t pthread_cond_t
9 #define mutex_init(m) pthread_mutex_init(m, NULL)
10 #define mutex_free(m) pthread_mutex_destroy(m)
11 #define mutex_lock(m) pthread_mutex_lock(m)
12 #define mutex_unlock(m) pthread_mutex_unlock(m)
14 #define condition_init(c) pthread_cond_init(c, NULL)
15 #define condition_free(c) pthread_cond_destroy(c)
16 #define condition_wait(c, m) pthread_cond_wait(c, m)
17 #define condition_signal(c) pthread_cond_signal(c)
18 #define condition_broadcast(c) pthread_cond_broadcast(c)
21 typedef struct _PTLock
{
33 l
= (PTLock
*)malloc(sizeof(PTLock
));
39 condition_init(&l
->c
);
45 PTLockFree(PTLockRef lock
)
47 PTLock
* l
= (PTLock
*)lock
;
53 condition_free(&l
->c
);
58 PTLockTakeLock(PTLockRef lock
)
60 PTLock
* l
= (PTLock
*)lock
;
64 condition_wait(&l
->c
, &l
->m
);
70 PTLockUnlock(PTLockRef lock
)
72 PTLock
* l
= (PTLock
*)lock
;
76 condition_signal(&l
->c
);
81 PTLockTryLock(PTLockRef lock
)
83 PTLock
* l
= (PTLock
*)lock
;