summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2005-05-06 02:43:04 +0000
committerPascal Rigaux <pixel@mandriva.com>2005-05-06 02:43:04 +0000
commit4e506c9aefe5b89970ae6894d05ad53c81af0d83 (patch)
tree2fac98df209e72eaba773cad2d7b90c99d9d9249 /mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c
parent793707b39bf2e9df40a6d2d60b83b3061088ae9e (diff)
downloaddrakx-4e506c9aefe5b89970ae6894d05ad53c81af0d83.tar
drakx-4e506c9aefe5b89970ae6894d05ad53c81af0d83.tar.gz
drakx-4e506c9aefe5b89970ae6894d05ad53c81af0d83.tar.bz2
drakx-4e506c9aefe5b89970ae6894d05ad53c81af0d83.tar.xz
drakx-4e506c9aefe5b89970ae6894d05ad53c81af0d83.zip
use installed dietlibc, not our forked cvs version
Diffstat (limited to 'mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c')
-rw-r--r--mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c59
1 files changed, 0 insertions, 59 deletions
diff --git a/mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c b/mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c
deleted file mode 100644
index 8db49e840..000000000
--- a/mdk-stage1/dietlibc/libpthread/pthread_cond_wait.c
+++ /dev/null
@@ -1,59 +0,0 @@
-#include <unistd.h>
-#include <errno.h>
-
-#include <pthread.h>
-#include "thread_internal.h"
-
-int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
-{
- _pthread_descr tmp;
- _pthread_descr this;
-
- __THREAD_INIT();
-
- this=__thread_self();
-
- /* put in wait-chain */
- __NO_ASYNC_CANCEL_BEGIN;
- __pthread_lock(&(cond->lock));
- this->waiting=1;
- if (cond->wait_chain) {
- for(tmp=cond->wait_chain;tmp->waitnext;tmp=tmp->waitnext);
- tmp->waitnext=this;
- } else cond->wait_chain=this;
- __pthread_unlock(&(cond->lock));
- __NO_ASYNC_CANCEL_STOP;
-
- /* Aeh yeah / wait till signal */
- pthread_mutex_unlock(mutex);
- while (this->waiting) {
- __thread_wait_some_time();
- if (this->canceled) break; /* we got a cancel signal */
- }
- pthread_mutex_lock(mutex);
-
- __NO_ASYNC_CANCEL_BEGIN;
- __pthread_lock(&(cond->lock));
- if (this->waiting) { /* still waiting -> SIGNAL */
- _pthread_descr prev;
- /* remove from wait-chain */
- prev=cond->wait_chain;
- if ((prev=cond->wait_chain)==this) {
- cond->wait_chain=this->waitnext;
- } else {
- for (tmp=prev->waitnext;tmp;prev=tmp,tmp=prev->waitnext) {
- if (tmp==this) {
- prev->waitnext=this->waitnext;
- break;
- }
- }
- }
- this->waiting=0;
- this->waitnext=0;
- }
- __pthread_unlock(&(cond->lock));
- __NO_ASYNC_CANCEL_END;
- return 0;
-}
-
-