diff options
-rw-r--r-- | linuxthreads/condvar.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/linuxthreads/condvar.c b/linuxthreads/condvar.c index 5e1dd71..a6a31ca 100644 --- a/linuxthreads/condvar.c +++ b/linuxthreads/condvar.c @@ -62,7 +62,7 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) int already_canceled = 0; /* Check whether the mutex is locked and owned by this thread. */ - if (mutex->__m_kind != PTHREAD_MUTEX_TIMED_NP + if (mutex->__m_kind != PTHREAD_MUTEX_TIMED_NP && mutex->__m_kind != PTHREAD_MUTEX_ADAPTIVE_NP && mutex->__m_owner != self) return EINVAL; @@ -123,7 +123,7 @@ pthread_cond_timedwait_relative(pthread_cond_t *cond, pthread_extricate_if extr; /* Check whether the mutex is locked and owned by this thread. */ - if (mutex->__m_kind != PTHREAD_MUTEX_TIMED_NP + if (mutex->__m_kind != PTHREAD_MUTEX_TIMED_NP && mutex->__m_kind != PTHREAD_MUTEX_ADAPTIVE_NP && mutex->__m_owner != self) return EINVAL; @@ -228,3 +228,21 @@ int pthread_condattr_destroy(pthread_condattr_t *attr) { return 0; } + +int pthread_condattr_getpshared (const pthread_condattr_t *attr, int *pshared) +{ + *pshared = PTHREAD_PROCESS_PRIVATE; + return 0; +} + +int pthread_condattr_setpshared (pthread_condattr_t *attr, int pshared) +{ + if (pshared != PTHREAD_PROCESS_PRIVATE && pshared != PTHREAD_PROCESS_SHARED) + return EINVAL; + + /* For now it is not possible to shared a conditional variable. */ + if (pshared != PTHREAD_PROCESS_PRIVATE) + return ENOSYS; + + return 0; +} |