diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-11-25 23:58:08 +0000 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-11-25 23:58:08 +0000 |
commit | 630bf55d4bcd45540ca397d6b83c9465380dd008 (patch) | |
tree | 56ead8cdd2b5595b57d1dad38f24b08657c6f413 /libddekit/lock.c | |
parent | b474ef57e5e75f798250c42e88639fc25595142b (diff) | |
parent | 4ba1188ef5ef2caf46cfedb522e83abf9d59fc54 (diff) |
Merge branch 'dde-clean' into upstream-merged
Diffstat (limited to 'libddekit/lock.c')
-rw-r--r-- | libddekit/lock.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/libddekit/lock.c b/libddekit/lock.c index e534bebe..26d5cfc8 100644 --- a/libddekit/lock.c +++ b/libddekit/lock.c @@ -1,38 +1,39 @@ -#include <cthreads.h> +#include <pthread.h> #include "ddekit/lock.h" #include "ddekit/memory.h" +#include "ddekit/thread.h" #define DDEKIT_DEBUG_LOCKS 0 struct ddekit_lock { - struct mutex lock; - cthread_t helder; + pthread_mutex_t lock; + ddekit_thread_t *helder; }; void _ddekit_lock_init(struct ddekit_lock **mtx) { struct ddekit_lock *lock; lock = (struct ddekit_lock *) ddekit_simple_malloc (sizeof *lock); - mutex_init (&lock->lock); + pthread_mutex_init (&lock->lock, NULL); lock->helder = NULL; *mtx = lock; } void _ddekit_lock_deinit(struct ddekit_lock **mtx) { - mutex_free (*mtx); + ddekit_simple_free (*mtx); *mtx = NULL; } void _ddekit_lock_lock(struct ddekit_lock **mtx) { - mutex_lock (&(*mtx)->lock); - (*mtx)->helder = cthread_self (); + pthread_mutex_lock (&(*mtx)->lock); + (*mtx)->helder = ddekit_thread_myself (); } /* returns 0 on success, != 0 if it would block */ int _ddekit_lock_try_lock(struct ddekit_lock **mtx) { - if (mutex_try_lock (&(*mtx)->lock)) { /* lock succeessfully */ - (*mtx)->helder = cthread_self (); + if (!pthread_mutex_trylock (&(*mtx)->lock)) { /* lock succeessfully */ + (*mtx)->helder = ddekit_thread_myself (); return 0; } return -1; @@ -41,7 +42,7 @@ int _ddekit_lock_try_lock(struct ddekit_lock **mtx) { void _ddekit_lock_unlock(struct ddekit_lock **mtx) { // TODO I wonder if it can cause any trouble. (*mtx)->helder = NULL; - mutex_unlock (&(*mtx)->lock); + pthread_mutex_unlock (&(*mtx)->lock); } |