return EINVAL;
while (1) {
- if (mutex->owner == MONO_THREAD_NONE) {
+ if (pthread_equal (mutex->owner, MONO_THREAD_NONE)) {
mutex->owner = id;
mutex->depth = 1;
break;
- } else if (mutex->owner == id) {
+ } else if (pthread_equal (mutex->owner, id)) {
mutex->depth++;
break;
} else {
if (pthread_mutex_lock (&mutex->mutex) != 0)
return EINVAL;
- if (mutex->owner != MONO_THREAD_NONE && mutex->owner != id) {
+ if (!pthread_equal (mutex->owner, MONO_THREAD_NONE) &&
+ !pthread_equal (mutex->owner, id)) {
pthread_mutex_unlock (&mutex->mutex);
return EBUSY;
}
while (1) {
- if (mutex->owner == MONO_THREAD_NONE) {
+ if (pthread_equal (mutex->owner, MONO_THREAD_NONE)) {
mutex->owner = id;
mutex->depth = 1;
break;
return ETIMEDOUT;
while (1) {
- if (mutex->owner == MONO_THREAD_NONE) {
+ if (pthread_equal (mutex->owner, MONO_THREAD_NONE)) {
mutex->owner = id;
mutex->depth = 1;
break;
- } else if (mutex->owner == id) {
+ } else if (pthread_equal (mutex->owner, id)) {
mutex->depth++;
break;
} else {
if (pthread_mutex_lock (&mutex->mutex) != 0)
return EINVAL;
- if (mutex->owner != pthread_self()) {
+ if (pthread_equal (mutex->owner, pthread_self())) {
/* Not owned by this thread */
pthread_mutex_unlock (&mutex->mutex);
return EPERM;