initial check-in, version 0.5.0
This commit is contained in:
commit
0b44a0315b
1021 changed files with 45711 additions and 0 deletions
26
src/thread/pthread_cond_timedwait.c
Normal file
26
src/thread/pthread_cond_timedwait.c
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
#include "pthread_impl.h"
|
||||
|
||||
static void relock(void *m)
|
||||
{
|
||||
pthread_mutex_lock(m);
|
||||
}
|
||||
|
||||
int pthread_cond_timedwait(pthread_cond_t *c, pthread_mutex_t *m, const struct timespec *ts)
|
||||
{
|
||||
int r, e=0;
|
||||
CANCELPT(0);
|
||||
|
||||
pthread_cleanup_push(relock, m);
|
||||
c->__block = 1;
|
||||
if ((r=pthread_mutex_unlock(m))) return r;
|
||||
|
||||
CANCELPT(1);
|
||||
e = __timedwait(&c->__block, 1, CLOCK_REALTIME, ts, 0);
|
||||
CANCELPT(0);
|
||||
|
||||
pthread_cleanup_pop(0);
|
||||
if ((r=pthread_mutex_lock(m))) return r;
|
||||
|
||||
CANCELPT(0);
|
||||
return e;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue