53 #include <sys/timeb.h> 60 #define PTHREAD_CANCEL_DISABLE 0 61 #define PTHREAD_CANCEL_ENABLE 0x01 63 #define PTHREAD_CANCEL_DEFERRED 0 64 #define PTHREAD_CANCEL_ASYNCHRONOUS 0x02 66 #define PTHREAD_CREATE_JOINABLE 0 67 #define PTHREAD_CREATE_DETACHED 0x04 69 #define PTHREAD_EXPLICT_SCHED 0 70 #define PTHREAD_INHERIT_SCHED 0x08 72 #define PTHREAD_SCOPE_PROCESS 0 73 #define PTHREAD_SCOPE_SYSTEM 0x10 75 #define PTHREAD_DEFAULT_ATTR (PTHREAD_CANCEL_ENABLE) 79 #define PTHREAD_ONCE_INIT 0 80 #define PTHREAD_MUTEX_INITIALIZER {(void*)-1,-1,0,0,0,0} 81 #define PTHREAD_RWLOCK_INITIALIZER {0} 82 #define PTHREAD_COND_INITIALIZER {0} 83 #define PTHREAD_BARRIER_INITIALIZER \ 84 {0,0,PTHREAD_MUTEX_INITIALIZER,PTHREAD_COND_INITIALIZER} 85 #define PTHREAD_SPINLOCK_INITIALIZER 0 87 #define PTHREAD_DESTRUCTOR_ITERATIONS 256 88 #define PTHREAD_KEYS_MAX (1<<20) 90 #define PTHREAD_MUTEX_NORMAL 0 91 #define PTHREAD_MUTEX_ERRORCHECK 1 92 #define PTHREAD_MUTEX_RECURSIVE 2 93 #define PTHREAD_MUTEX_DEFAULT 3 94 #define PTHREAD_MUTEX_SHARED 4 95 #define PTHREAD_MUTEX_PRIVATE 0 96 #define PTHREAD_PRIO_NONE 0 97 #define PTHREAD_PRIO_INHERIT 8 98 #define PTHREAD_PRIO_PROTECT 16 99 #define PTHREAD_PRIO_MULT 32 100 #define PTHREAD_PROCESS_SHARED 0 101 #define PTHREAD_PROCESS_PRIVATE 1 103 #define PTHREAD_BARRIER_SERIAL_THREAD 1 118 void (*func)(
void *);
126 void *(* func)(
void *);
145 CONDITION_VARIABLE cv;
156 typedef long pthread_once_t;
157 typedef unsigned pthread_mutexattr_t;
158 typedef SRWLOCK pthread_rwlock_t;
159 typedef CRITICAL_SECTION pthread_mutex_t;
160 typedef unsigned pthread_key_t;
161 typedef void *pthread_barrierattr_t;
162 typedef long pthread_spinlock_t;
163 typedef int pthread_condattr_t;
164 typedef CONDITION_VARIABLE pthread_cond_t;
165 typedef int pthread_rwlockattr_t;
167 volatile long _pthread_cancelling;
172 pthread_once_t _pthread_tls_once;
176 pthread_rwlock_t _pthread_key_lock;
177 unsigned _pthread_key_max;
178 unsigned _pthread_key_sch;
179 void (**_pthread_key_dest)(
void*);
183 #define pthread_cleanup_push(F, A)\ 185 const _pthread_cleanup _pthread_cup = {(F), (A), pthread_self()->clean};\ 186 _ReadWriteBarrier();\ 187 pthread_self()->clean = (_pthread_cleanup *) &_pthread_cup; 188 _ReadWriteBarrier(); }
191 #define pthread_cleanup_pop(E)\ 193 (pthread_self()->clean = _pthread_cup.next, (E?_pthread_cup.func(_pthread_cup.arg):0));} 195 static void _pthread_once_cleanup(pthread_once_t *o)
201 static int pthread_once(pthread_once_t *o,
void (*func)(
void))
211 if (!_InterlockedCompareExchange(o, 2, 0))
243 static int _pthread_once_raw(pthread_once_t *o,
void (*func)(
void))
253 if (!_InterlockedCompareExchange(o, 2, 0))
276 static int pthread_mutex_lock(pthread_mutex_t *m)
278 EnterCriticalSection(m);
282 static int pthread_mutex_unlock(pthread_mutex_t *m)
284 LeaveCriticalSection(m);
288 static int pthread_mutex_trylock(pthread_mutex_t *m)
290 return TryEnterCriticalSection(m) ? 0 : EBUSY;
293 static int pthread_mutex_init(pthread_mutex_t *m, pthread_mutexattr_t *a)
296 InitializeCriticalSection(m);
301 static int pthread_mutex_destroy(pthread_mutex_t *m)
303 DeleteCriticalSection(m);
307 #define pthread_mutex_getprioceiling(M, P) ENOTSUP 308 #define pthread_mutex_setprioceiling(M, P) ENOTSUP 315 static void pthread_testcancel(
void);
317 static int pthread_rwlock_init(pthread_rwlock_t *l, pthread_rwlockattr_t *a)
320 InitializeSRWLock(l);
325 static int pthread_rwlock_destroy(pthread_rwlock_t *l)
331 static int pthread_rwlock_rdlock(pthread_rwlock_t *l)
333 pthread_testcancel();
334 AcquireSRWLockShared(l);
339 static int pthread_rwlock_wrlock(pthread_rwlock_t *l)
341 pthread_testcancel();
342 AcquireSRWLockExclusive(l);
347 static void pthread_tls_init(
void)
349 _pthread_tls = TlsAlloc();
352 if (_pthread_tls == TLS_OUT_OF_INDEXES) abort();
355 static int pthread_rwlock_unlock(pthread_rwlock_t* l)
357 void* state = *(
void**)l;
359 if (state == (
void*)1)
362 ReleaseSRWLockExclusive(l);
367 ReleaseSRWLockShared(l);
374 static void _pthread_cleanup_dest(
pthread_t t)
378 for (j = 0; j < PTHREAD_DESTRUCTOR_ITERATIONS; j++)
382 for (i = 0; i < t->keymax; i++)
384 void *val = t->keyval[i];
388 pthread_rwlock_rdlock(&_pthread_key_lock);
389 if ((uintptr_t) _pthread_key_dest[i] > 1)
393 _pthread_key_dest[i](val);
396 pthread_rwlock_unlock(&_pthread_key_lock);
409 _pthread_once_raw(&_pthread_tls_once, pthread_tls_init);
411 t = (
pthread_t)TlsGetValue(_pthread_tls);
425 t->p_state = PTHREAD_DEFAULT_ATTR;
428 t->h = GetCurrentThread();
431 TlsSetValue(_pthread_tls, t);
447 static int pthread_rwlock_tryrdlock(pthread_rwlock_t *l)
450 void *state = *(
void **) l;
455 if (!InterlockedCompareExchangePointer((
volatile PVOID *) l, (
void *)0x11, NULL))
return 0;
460 if (state == (
void *) 1)
return EBUSY;
463 if ((uintptr_t) state & 14)
return EBUSY;
465 if (InterlockedCompareExchangePointer((
volatile PVOID *) l, (
void *) ((uintptr_t)state + 16), state) == state)
return 0;
470 static int pthread_rwlock_trywrlock(pthread_rwlock_t *l)
473 if (!InterlockedCompareExchangePointer((
volatile PVOID*) l, (
void *)1, NULL))
return 0;
478 static unsigned long long _pthread_time_in_ms(
void)
484 return tb.time * 1000 + tb.millitm;
487 static unsigned long long _pthread_time_in_ms_from_timespec(
const struct timespec *ts)
489 unsigned long long t = ts->tv_sec * 1000;
490 t += ts->tv_nsec / 1000000;
495 static unsigned long long _pthread_rel_time_in_ms(
const struct timespec *ts)
497 unsigned long long t1 = _pthread_time_in_ms_from_timespec(ts);
498 unsigned long long t2 = _pthread_time_in_ms();
501 if (t1 < t2)
return 0;
505 static int pthread_rwlock_timedrdlock(pthread_rwlock_t *l,
const struct timespec *ts)
507 unsigned long long ct = _pthread_time_in_ms();
508 unsigned long long t = _pthread_time_in_ms_from_timespec(ts);
510 pthread_testcancel();
516 if (!pthread_rwlock_tryrdlock(l))
return 0;
519 ct = _pthread_time_in_ms();
522 if (ct > t)
return ETIMEDOUT;
526 static int pthread_rwlock_timedwrlock(pthread_rwlock_t *l,
const struct timespec *ts)
528 unsigned long long ct = _pthread_time_in_ms();
529 unsigned long long t = _pthread_time_in_ms_from_timespec(ts);
531 pthread_testcancel();
537 if (!pthread_rwlock_trywrlock(l))
return 0;
540 ct = _pthread_time_in_ms();
543 if (ct > t)
return ETIMEDOUT;
547 static int pthread_get_concurrency(
int *val)
549 *val = _pthread_concur;
553 static int pthread_set_concurrency(
int val)
555 _pthread_concur = val;
559 #define pthread_getschedparam(T, P, S) ENOTSUP 560 #define pthread_setschedparam(T, P, S) ENOTSUP 561 #define pthread_getcpuclockid(T, C) ENOTSUP 563 static int pthread_exit(
void *res)
569 _pthread_cleanup_dest(t);
575 static void _pthread_invoke_cancel(
void)
579 _InterlockedDecrement(&_pthread_cancelling);
582 for (pcup = pthread_self()->clean; pcup; pcup = pcup->next)
584 pcup->func(pcup->arg);
590 static void pthread_testcancel(
void)
592 if (_pthread_cancelling)
596 if (t->cancelled && (t->p_state & PTHREAD_CANCEL_ENABLE))
598 _pthread_invoke_cancel();
606 if (t->p_state & PTHREAD_CANCEL_ASYNCHRONOUS)
612 if (t->cancelled)
return ESRCH;
614 ctxt.ContextFlags = CONTEXT_CONTROL;
617 GetThreadContext(t->h, &ctxt);
619 ctxt.Rip = (uintptr_t) _pthread_invoke_cancel;
621 ctxt.Eip = (uintptr_t) _pthread_invoke_cancel;
623 SetThreadContext(t->h, &ctxt);
629 _InterlockedIncrement(&_pthread_cancelling);
639 _InterlockedIncrement(&_pthread_cancelling);
645 static unsigned _pthread_get_state(
pthread_attr_t *attr,
unsigned flag)
647 return attr->p_state & flag;
650 static int _pthread_set_state(
pthread_attr_t *attr,
unsigned flag,
unsigned val)
652 if (~flag & val)
return EINVAL;
653 attr->p_state &= ~flag;
654 attr->p_state |= val;
661 attr->p_state = PTHREAD_DEFAULT_ATTR;
674 static int pthread_attr_setdetachstate(
pthread_attr_t *a,
int flag)
676 return _pthread_set_state(a, PTHREAD_CREATE_DETACHED, flag);
679 static int pthread_attr_getdetachstate(
pthread_attr_t *a,
int *flag)
681 *flag = _pthread_get_state(a, PTHREAD_CREATE_DETACHED);
685 static int pthread_attr_setinheritsched(
pthread_attr_t *a,
int flag)
687 return _pthread_set_state(a, PTHREAD_INHERIT_SCHED, flag);
690 static int pthread_attr_getinheritsched(
pthread_attr_t *a,
int *flag)
692 *flag = _pthread_get_state(a, PTHREAD_INHERIT_SCHED);
698 return _pthread_set_state(a, PTHREAD_SCOPE_SYSTEM, flag);
703 *flag = _pthread_get_state(a, PTHREAD_SCOPE_SYSTEM);
707 static int pthread_attr_getstackaddr(
pthread_attr_t *attr,
void **stack)
709 *stack = attr->stack;
713 static int pthread_attr_setstackaddr(
pthread_attr_t *attr,
void *stack)
719 static int pthread_attr_getstacksize(
pthread_attr_t *attr,
size_t *size)
721 *size = attr->s_size;
725 static int pthread_attr_setstacksize(
pthread_attr_t *attr,
size_t size)
731 #define pthread_attr_getguardsize(A, S) ENOTSUP 732 #define pthread_attr_setgaurdsize(A, S) ENOTSUP 733 #define pthread_attr_getschedparam(A, S) ENOTSUP 734 #define pthread_attr_setschedparam(A, S) ENOTSUP 735 #define pthread_attr_getschedpolicy(A, S) ENOTSUP 736 #define pthread_attr_setschedpolicy(A, S) ENOTSUP 739 static int pthread_setcancelstate(
int state,
int *oldstate)
743 if ((state & PTHREAD_CANCEL_ENABLE) != state)
return EINVAL;
744 if (oldstate) *oldstate = t->p_state & PTHREAD_CANCEL_ENABLE;
745 t->p_state &= ~PTHREAD_CANCEL_ENABLE;
751 static int pthread_setcanceltype(
int type,
int *oldtype)
755 if ((type & PTHREAD_CANCEL_ASYNCHRONOUS) != type)
return EINVAL;
756 if (oldtype) *oldtype = t->p_state & PTHREAD_CANCEL_ASYNCHRONOUS;
757 t->p_state &= ~PTHREAD_CANCEL_ASYNCHRONOUS;
763 static int pthread_create_wrapper(
void *args)
767 _pthread_once_raw(&_pthread_tls_once, pthread_tls_init);
769 TlsSetValue(_pthread_tls, tv);
774 tv->ret_arg = tv->func(tv->ret_arg);
777 _pthread_cleanup_dest(tv);
781 while (tv->h == (HANDLE) -1)
788 if (!tv->h) free(tv);
807 tv->p_state = PTHREAD_DEFAULT_ATTR;
814 tv->p_state = attr->p_state;
815 ssize = (
unsigned int)attr->s_size;
821 tv->h = (HANDLE) _beginthreadex(NULL, ssize, (_beginthreadex_proc_type)pthread_create_wrapper, tv, 0, NULL);
824 if (!tv->h)
return 1;
826 if (tv->p_state & PTHREAD_CREATE_DETACHED)
836 static int pthread_join(
pthread_t t,
void **res)
840 pthread_testcancel();
842 WaitForSingleObject(tv->h, INFINITE);
846 if (res) *res = tv->ret_arg;
869 static int pthread_mutexattr_init(pthread_mutexattr_t *a)
875 static int pthread_mutexattr_destroy(pthread_mutexattr_t *a)
881 static int pthread_mutexattr_gettype(pthread_mutexattr_t *a,
int *type)
888 static int pthread_mutexattr_settype(pthread_mutexattr_t *a,
int type)
890 if ((
unsigned) type > 3)
return EINVAL;
897 static int pthread_mutexattr_getpshared(pthread_mutexattr_t *a,
int *type)
904 static int pthread_mutexattr_setpshared(pthread_mutexattr_t * a,
int type)
906 if ((type & 4) != type)
return EINVAL;
914 static int pthread_mutexattr_getprotocol(pthread_mutexattr_t *a,
int *type)
916 *type = *a & (8 + 16);
921 static int pthread_mutexattr_setprotocol(pthread_mutexattr_t *a,
int type)
923 if ((type & (8 + 16)) != 8 + 16)
return EINVAL;
931 static int pthread_mutexattr_getprioceiling(pthread_mutexattr_t *a,
int * prio)
933 *prio = *a / PTHREAD_PRIO_MULT;
937 static int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *a,
int prio)
939 *a &= (PTHREAD_PRIO_MULT - 1);
940 *a += prio * PTHREAD_PRIO_MULT;
945 static int pthread_mutex_timedlock(pthread_mutex_t *m,
struct timespec *ts)
947 unsigned long long t, ct;
949 struct _pthread_crit_t
960 if (!pthread_mutex_trylock(m))
return 0;
962 ct = (DWORD)_pthread_time_in_ms();
963 t = (DWORD)_pthread_time_in_ms_from_timespec(ts);
968 if (ct > t)
return ETIMEDOUT;
971 WaitForSingleObject(((
struct _pthread_crit_t *)m)->sem, (DWORD)(t - ct));
974 if (!pthread_mutex_trylock(m))
return 0;
977 ct = _pthread_time_in_ms();
981 #define _PTHREAD_BARRIER_FLAG (1<<30) 985 EnterCriticalSection(&b->m);
987 while (b->total > _PTHREAD_BARRIER_FLAG)
990 SleepConditionVariableCS(&b->cv, &b->m, INFINITE);
993 LeaveCriticalSection(&b->m);
995 DeleteCriticalSection(&b->m);
1008 InitializeCriticalSection(&b->m);
1009 InitializeConditionVariable(&b->cv);
1016 EnterCriticalSection(&b->m);
1018 while (b->total > _PTHREAD_BARRIER_FLAG)
1021 SleepConditionVariableCS(&b->cv, &b->m, INFINITE);
1025 if (b->total == _PTHREAD_BARRIER_FLAG) b->total = 0;
1029 if (b->total == b->count)
1031 b->total += _PTHREAD_BARRIER_FLAG - 1;
1032 WakeAllConditionVariable(&b->cv);
1034 LeaveCriticalSection(&b->m);
1040 while (b->total < _PTHREAD_BARRIER_FLAG)
1043 SleepConditionVariableCS(&b->cv, &b->m, INFINITE);
1049 if (b->total == _PTHREAD_BARRIER_FLAG) WakeAllConditionVariable(&b->cv);
1051 LeaveCriticalSection(&b->m);
1057 static int pthread_barrierattr_init(
void **attr)
1063 static int pthread_barrierattr_destroy(
void **attr)
1086 static int pthread_key_create(pthread_key_t *key,
void (* dest)(
void *))
1092 if (!key)
return EINVAL;
1094 pthread_rwlock_wrlock(&_pthread_key_lock);
1096 for (i = _pthread_key_sch; i < _pthread_key_max; i++)
1098 if (!_pthread_key_dest[i])
1103 _pthread_key_dest[i] = dest;
1107 _pthread_key_dest[i] = (void(*)(
void *))1;
1109 pthread_rwlock_unlock(&_pthread_key_lock);
1115 for (i = 0; i < _pthread_key_sch; i++)
1117 if (!_pthread_key_dest[i])
1122 _pthread_key_dest[i] = dest;
1126 _pthread_key_dest[i] = (void(*)(
void *))1;
1128 pthread_rwlock_unlock(&_pthread_key_lock);
1134 if (!_pthread_key_max) _pthread_key_max = 1;
1135 if (_pthread_key_max == PTHREAD_KEYS_MAX)
1137 pthread_rwlock_unlock(&_pthread_key_lock);
1142 nmax = _pthread_key_max * 2;
1143 if (nmax > PTHREAD_KEYS_MAX) nmax = PTHREAD_KEYS_MAX;
1146 d = (void (**)(
void*))realloc(_pthread_key_dest, nmax *
sizeof(*d));
1149 pthread_rwlock_unlock(&_pthread_key_lock);
1155 memset((
void *) &d[_pthread_key_max], 0, (nmax-_pthread_key_max)*
sizeof(
void *));
1158 _pthread_key_dest = d;
1159 _pthread_key_sch = _pthread_key_max + 1;
1160 *key = _pthread_key_max;
1161 _pthread_key_max = nmax;
1165 _pthread_key_dest[*key] = dest;
1169 _pthread_key_dest[*key] = (void(*)(
void *))1;
1172 pthread_rwlock_unlock(&_pthread_key_lock);
1177 static int pthread_key_delete(pthread_key_t key)
1179 if (key > _pthread_key_max)
return EINVAL;
1180 if (!_pthread_key_dest)
return EINVAL;
1182 pthread_rwlock_wrlock(&_pthread_key_lock);
1183 _pthread_key_dest[key] = NULL;
1186 if (_pthread_key_sch > key) _pthread_key_sch = key;
1188 pthread_rwlock_unlock(&_pthread_key_lock);
1193 static void *pthread_getspecific(pthread_key_t key)
1197 if (key >= t->keymax)
return NULL;
1199 return t->keyval[key];
1203 static int pthread_setspecific(pthread_key_t key,
const void *value)
1207 if (key > t->keymax)
1209 int keymax = (key + 1) * 2;
1210 void **kv = (
void**)realloc(t->keyval, keymax *
sizeof(
void *));
1212 if (!kv)
return ENOMEM;
1215 memset(&kv[t->keymax], 0, (keymax - t->keymax)*
sizeof(
void*));
1221 t->keyval[key] = (
void *) value;
1227 static int pthread_spin_init(pthread_spinlock_t *l,
int pshared)
1235 static int pthread_spin_destroy(pthread_spinlock_t *l)
1242 static int pthread_spin_lock(pthread_spinlock_t *l)
1244 while (_InterlockedExchange(l, EBUSY))
1252 _ReadWriteBarrier();
1259 static int pthread_spin_trylock(pthread_spinlock_t *l)
1261 return _InterlockedExchange(l, EBUSY);
1264 static int pthread_spin_unlock(pthread_spinlock_t *l)
1267 _ReadWriteBarrier();
1274 static int pthread_cond_init(pthread_cond_t *c, pthread_condattr_t *a)
1278 InitializeConditionVariable(c);
1282 static int pthread_cond_signal(pthread_cond_t *c)
1284 WakeConditionVariable(c);
1288 static int pthread_cond_broadcast(pthread_cond_t *c)
1290 WakeAllConditionVariable(c);
1294 static int pthread_cond_wait(pthread_cond_t *c, pthread_mutex_t *m)
1296 pthread_testcancel();
1297 SleepConditionVariableCS(c, m, INFINITE);
1301 static int pthread_cond_destroy(pthread_cond_t *c)
1307 static int pthread_cond_timedwait(pthread_cond_t *c, pthread_mutex_t *m,
struct timespec *t)
1309 unsigned long long tm = _pthread_rel_time_in_ms(t);
1311 pthread_testcancel();
1313 if (!SleepConditionVariableCS(c, m, (DWORD)tm))
return ETIMEDOUT;
1316 if (!_pthread_rel_time_in_ms(t))
return ETIMEDOUT;
1321 static int pthread_condattr_destroy(pthread_condattr_t *a)
1327 #define pthread_condattr_getclock(A, C) ENOTSUP 1328 #define pthread_condattr_setclock(A, C) ENOTSUP 1330 static int pthread_condattr_init(pthread_condattr_t *a)
1336 static int pthread_condattr_getpshared(pthread_condattr_t *a,
int *s)
1342 static int pthread_condattr_setpshared(pthread_condattr_t *a,
int s)
1348 static int pthread_rwlockattr_destroy(pthread_rwlockattr_t *a)
1354 static int pthread_rwlockattr_init(pthread_rwlockattr_t *a)
1359 static int pthread_rwlockattr_getpshared(pthread_rwlockattr_t *a,
int *s)
1365 static int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *a,
int s)
1373 #define pthread_atfork(F1,F2,F3) 0 1376 #define pthread_kill(T, S) 0 1377 #define pthread_sigmask(H, S1, S2) 0 1381 #define accept(...) (pthread_testcancel(), accept(__VA_ARGS__)) 1382 #define aio_suspend(...) (pthread_testcancel(), aio_suspend(__VA_ARGS__)) 1383 #define clock_nanosleep(...) (pthread_testcancel(), clock_nanosleep(__VA_ARGS__)) 1384 #define close(...) (pthread_testcancel(), close(__VA_ARGS__)) 1385 #define connect(...) (pthread_testcancel(), connect(__VA_ARGS__)) 1386 #define creat(...) (pthread_testcancel(), creat(__VA_ARGS__)) 1387 #define fcntl(...) (pthread_testcancel(), fcntl(__VA_ARGS__)) 1388 #define fdatasync(...) (pthread_testcancel(), fdatasync(__VA_ARGS__)) 1389 #define fsync(...) (pthread_testcancel(), fsync(__VA_ARGS__)) 1390 #define getmsg(...) (pthread_testcancel(), getmsg(__VA_ARGS__)) 1391 #define getpmsg(...) (pthread_testcancel(), getpmsg(__VA_ARGS__)) 1392 #define lockf(...) (pthread_testcancel(), lockf(__VA_ARGS__)) 1393 #define mg_receive(...) (pthread_testcancel(), mg_receive(__VA_ARGS__)) 1394 #define mg_send(...) (pthread_testcancel(), mg_send(__VA_ARGS__)) 1395 #define mg_timedreceive(...) (pthread_testcancel(), mg_timedreceive(__VA_ARGS__)) 1396 #define mg_timessend(...) (pthread_testcancel(), mg_timedsend(__VA_ARGS__)) 1397 #define msgrcv(...) (pthread_testcancel(), msgrecv(__VA_ARGS__)) 1398 #define msgsnd(...) (pthread_testcancel(), msgsnd(__VA_ARGS__)) 1399 #define msync(...) (pthread_testcancel(), msync(__VA_ARGS__)) 1400 #define nanosleep(...) (pthread_testcancel(), nanosleep(__VA_ARGS__)) 1401 #define open(...) (pthread_testcancel(), open(__VA_ARGS__)) 1402 #define pause(...) (pthread_testcancel(), pause(__VA_ARGS__)) 1403 #define poll(...) (pthread_testcancel(), poll(__VA_ARGS__)) 1404 #define pread(...) (pthread_testcancel(), pread(__VA_ARGS__)) 1405 #define pselect(...) (pthread_testcancel(), pselect(__VA_ARGS__)) 1406 #define putmsg(...) (pthread_testcancel(), putmsg(__VA_ARGS__)) 1407 #define putpmsg(...) (pthread_testcancel(), putpmsg(__VA_ARGS__)) 1408 #define pwrite(...) (pthread_testcancel(), pwrite(__VA_ARGS__)) 1409 #define read(...) (pthread_testcancel(), read(__VA_ARGS__)) 1410 #define readv(...) (pthread_testcancel(), readv(__VA_ARGS__)) 1411 #define recv(...) (pthread_testcancel(), recv(__VA_ARGS__)) 1412 #define recvfrom(...) (pthread_testcancel(), recvfrom(__VA_ARGS__)) 1413 #define recvmsg(...) (pthread_testcancel(), recvmsg(__VA_ARGS__)) 1414 #define select(...) (pthread_testcancel(), select(__VA_ARGS__)) 1415 #define sem_timedwait(...) (pthread_testcancel(), sem_timedwait(__VA_ARGS__)) 1416 #define sem_wait(...) (pthread_testcancel(), sem_wait(__VA_ARGS__)) 1417 #define send(...) (pthread_testcancel(), send(__VA_ARGS__)) 1418 #define sendmsg(...) (pthread_testcancel(), sendmsg(__VA_ARGS__)) 1419 #define sendto(...) (pthread_testcancel(), sendto(__VA_ARGS__)) 1420 #define sigpause(...) (pthread_testcancel(), sigpause(__VA_ARGS__)) 1421 #define sigsuspend(...) (pthread_testcancel(), sigsuspend(__VA_ARGS__)) 1422 #define sigwait(...) (pthread_testcancel(), sigwait(__VA_ARGS__)) 1423 #define sigwaitinfo(...) (pthread_testcancel(), sigwaitinfo(__VA_ARGS__)) 1424 #define sleep(...) (pthread_testcancel(), sleep(__VA_ARGS__)) 1425 #define system(...) (pthread_testcancel(), system(__VA_ARGS__)) 1428 #define access(...) (pthread_testcancel(), access(__VA_ARGS__)) 1429 #define asctime(...) (pthread_testcancel(), asctime(__VA_ARGS__)) 1430 #define asctime_r(...) (pthread_testcancel(), asctime_r(__VA_ARGS__)) 1431 #define catclose(...) (pthread_testcancel(), catclose(__VA_ARGS__)) 1432 #define catgets(...) (pthread_testcancel(), catgets(__VA_ARGS__)) 1433 #define catopen(...) (pthread_testcancel(), catopen(__VA_ARGS__)) 1434 #define closedir(...) (pthread_testcancel(), closedir(__VA_ARGS__)) 1435 #define closelog(...) (pthread_testcancel(), closelog(__VA_ARGS__)) 1436 #define ctermid(...) (pthread_testcancel(), ctermid(__VA_ARGS__)) 1437 #define ctime(...) (pthread_testcancel(), ctime(__VA_ARGS__)) 1438 #define ctime_r(...) (pthread_testcancel(), ctime_r(__VA_ARGS__)) 1439 #define dbm_close(...) (pthread_testcancel(), dbm_close(__VA_ARGS__)) 1440 #define dbm_delete(...) (pthread_testcancel(), dbm_delete(__VA_ARGS__)) 1441 #define dbm_fetch(...) (pthread_testcancel(), dbm_fetch(__VA_ARGS__)) 1442 #define dbm_nextkey(...) (pthread_testcancel(), dbm_nextkey(__VA_ARGS__)) 1443 #define dbm_open(...) (pthread_testcancel(), dbm_open(__VA_ARGS__)) 1444 #define dbm_store(...) (pthread_testcancel(), dbm_store(__VA_ARGS__)) 1445 #define dlclose(...) (pthread_testcancel(), dlclose(__VA_ARGS__)) 1446 #define dlopen(...) (pthread_testcancel(), dlopen(__VA_ARGS__)) 1447 #define endgrent(...) (pthread_testcancel(), endgrent(__VA_ARGS__)) 1448 #define endhostent(...) (pthread_testcancel(), endhostent(__VA_ARGS__)) 1449 #define endnetent(...) (pthread_testcancel(), endnetent(__VA_ARGS__)) 1450 #define endprotoent(...) (pthread_testcancel(), endprotoend(__VA_ARGS__)) 1451 #define endpwent(...) (pthread_testcancel(), endpwent(__VA_ARGS__)) 1452 #define endservent(...) (pthread_testcancel(), endservent(__VA_ARGS__)) 1453 #define endutxent(...) (pthread_testcancel(), endutxent(__VA_ARGS__)) 1454 #define fclose(...) (pthread_testcancel(), fclose(__VA_ARGS__)) 1455 #define fflush(...) (pthread_testcancel(), fflush(__VA_ARGS__)) 1456 #define fgetc(...) (pthread_testcancel(), fgetc(__VA_ARGS__)) 1457 #define fgetpos(...) (pthread_testcancel(), fgetpos(__VA_ARGS__)) 1458 #define fgets(...) (pthread_testcancel(), fgets(__VA_ARGS__)) 1459 #define fgetwc(...) (pthread_testcancel(), fgetwc(__VA_ARGS__)) 1460 #define fgetws(...) (pthread_testcancel(), fgetws(__VA_ARGS__)) 1461 #define fmtmsg(...) (pthread_testcancel(), fmtmsg(__VA_ARGS__)) 1462 #define fopen(...) (pthread_testcancel(), fopen(__VA_ARGS__)) 1463 #define fpathconf(...) (pthread_testcancel(), fpathconf(__VA_ARGS__)) 1464 #define fprintf(...) (pthread_testcancel(), fprintf(__VA_ARGS__)) 1465 #define fputc(...) (pthread_testcancel(), fputc(__VA_ARGS__)) 1466 #define fputs(...) (pthread_testcancel(), fputs(__VA_ARGS__)) 1467 #define fputwc(...) (pthread_testcancel(), fputwc(__VA_ARGS__)) 1468 #define fputws(...) (pthread_testcancel(), fputws(__VA_ARGS__)) 1469 #define fread(...) (pthread_testcancel(), fread(__VA_ARGS__)) 1470 #define freopen(...) (pthread_testcancel(), freopen(__VA_ARGS__)) 1471 #define fscanf(...) (pthread_testcancel(), fscanf(__VA_ARGS__)) 1472 #define fseek(...) (pthread_testcancel(), fseek(__VA_ARGS__)) 1473 #define fseeko(...) (pthread_testcancel(), fseeko(__VA_ARGS__)) 1474 #define fsetpos(...) (pthread_testcancel(), fsetpos(__VA_ARGS__)) 1475 #define fstat(...) (pthread_testcancel(), fstat(__VA_ARGS__)) 1476 #define ftell(...) (pthread_testcancel(), ftell(__VA_ARGS__)) 1477 #define ftello(...) (pthread_testcancel(), ftello(__VA_ARGS__)) 1478 #define ftw(...) (pthread_testcancel(), ftw(__VA_ARGS__)) 1479 #define fwprintf(...) (pthread_testcancel(), fwprintf(__VA_ARGS__)) 1480 #define fwrite(...) (pthread_testcancel(), fwrite(__VA_ARGS__)) 1481 #define fwscanf(...) (pthread_testcancel(), fwscanf(__VA_ARGS__)) 1482 #define getaddrinfo(...) (pthread_testcancel(), getaddrinfo(__VA_ARGS__)) 1483 #define getc(...) (pthread_testcancel(), getc(__VA_ARGS__)) 1484 #define getc_unlocked(...) (pthread_testcancel(), getc_unlocked(__VA_ARGS__)) 1485 #define getchar(...) (pthread_testcancel(), getchar(__VA_ARGS__)) 1486 #define getchar_unlocked(...) (pthread_testcancel(), getchar_unlocked(__VA_ARGS__)) 1487 #define getcwd(...) (pthread_testcancel(), getcwd(__VA_ARGS__)) 1488 #define getdate(...) (pthread_testcancel(), getdate(__VA_ARGS__)) 1489 #define getgrent(...) (pthread_testcancel(), getgrent(__VA_ARGS__)) 1490 #define getgrgid(...) (pthread_testcancel(), getgrgid(__VA_ARGS__)) 1491 #define getgrgid_r(...) (pthread_testcancel(), getgrgid_r(__VA_ARGS__)) 1492 #define gergrnam(...) (pthread_testcancel(), getgrnam(__VA_ARGS__)) 1493 #define getgrnam_r(...) (pthread_testcancel(), getgrnam_r(__VA_ARGS__)) 1494 #define gethostbyaddr(...) (pthread_testcancel(), gethostbyaddr(__VA_ARGS__)) 1495 #define gethostbyname(...) (pthread_testcancel(), gethostbyname(__VA_ARGS__)) 1496 #define gethostent(...) (pthread_testcancel(), gethostent(__VA_ARGS__)) 1497 #define gethostid(...) (pthread_testcancel(), gethostid(__VA_ARGS__)) 1498 #define gethostname(...) (pthread_testcancel(), gethostname(__VA_ARGS__)) 1499 #define getlogin(...) (pthread_testcancel(), getlogin(__VA_ARGS__)) 1500 #define getlogin_r(...) (pthread_testcancel(), getlogin_r(__VA_ARGS__)) 1501 #define getnameinfo(...) (pthread_testcancel(), getnameinfo(__VA_ARGS__)) 1502 #define getnetbyaddr(...) (pthread_testcancel(), getnetbyaddr(__VA_ARGS__)) 1503 #define getnetbyname(...) (pthread_testcancel(), getnetbyname(__VA_ARGS__)) 1504 #define getnetent(...) (pthread_testcancel(), getnetent(__VA_ARGS__)) 1505 #define getopt(...) (pthread_testcancel(), getopt(__VA_ARGS__)) 1506 #define getprotobyname(...) (pthread_testcancel(), getprotobyname(__VA_ARGS__)) 1507 #define getprotobynumber(...) (pthread_testcancel(), getprotobynumber(__VA_ARGS__)) 1508 #define getprotoent(...) (pthread_testcancel(), getprotoent(__VA_ARGS__)) 1509 #define getpwent(...) (pthread_testcancel(), getpwent(__VA_ARGS__)) 1510 #define getpwnam(...) (pthread_testcancel(), getpwnam(__VA_ARGS__)) 1511 #define getpwnam_r(...) (pthread_testcancel(), getpwnam_r(__VA_ARGS__)) 1512 #define getpwuid(...) (pthread_testcancel(), getpwuid(__VA_ARGS__)) 1513 #define getpwuid_r(...) (pthread_testcancel(), getpwuid_r(__VA_ARGS__)) 1514 #define gets(...) (pthread_testcancel(), gets(__VA_ARGS__)) 1515 #define getservbyname(...) (pthread_testcancel(), getservbyname(__VA_ARGS__)) 1516 #define getservbyport(...) (pthread_testcancel(), getservbyport(__VA_ARGS__)) 1517 #define getservent(...) (pthread_testcancel(), getservent(__VA_ARGS__)) 1518 #define getutxent(...) (pthread_testcancel(), getutxent(__VA_ARGS__)) 1519 #define getutxid(...) (pthread_testcancel(), getutxid(__VA_ARGS__)) 1520 #define getutxline(...) (pthread_testcancel(), getutxline(__VA_ARGS__)) 1522 #define getwc(...) (pthread_testcancel(), getwc(__VA_ARGS__)) 1524 #define getwchar(...) (pthread_testcancel(), getwchar(__VA_ARGS__)) 1525 #define getwd(...) (pthread_testcancel(), getwd(__VA_ARGS__)) 1526 #define glob(...) (pthread_testcancel(), glob(__VA_ARGS__)) 1527 #define iconv_close(...) (pthread_testcancel(), iconv_close(__VA_ARGS__)) 1528 #define iconv_open(...) (pthread_testcancel(), iconv_open(__VA_ARGS__)) 1529 #define ioctl(...) (pthread_testcancel(), ioctl(__VA_ARGS__)) 1530 #define link(...) (pthread_testcancel(), link(__VA_ARGS__)) 1531 #define localtime(...) (pthread_testcancel(), localtime(__VA_ARGS__)) 1532 #define localtime_r(...) (pthread_testcancel(), localtime_r(__VA_ARGS__)) 1533 #define lseek(...) (pthread_testcancel(), lseek(__VA_ARGS__)) 1534 #define lstat(...) (pthread_testcancel(), lstat(__VA_ARGS__)) 1535 #define mkstemp(...) (pthread_testcancel(), mkstemp(__VA_ARGS__)) 1536 #define nftw(...) (pthread_testcancel(), nftw(__VA_ARGS__)) 1537 #define opendir(...) (pthread_testcancel(), opendir(__VA_ARGS__)) 1538 #define openlog(...) (pthread_testcancel(), openlog(__VA_ARGS__)) 1539 #define pathconf(...) (pthread_testcancel(), pathconf(__VA_ARGS__)) 1540 #define pclose(...) (pthread_testcancel(), pclose(__VA_ARGS__)) 1541 #define perror(...) (pthread_testcancel(), perror(__VA_ARGS__)) 1542 #define popen(...) (pthread_testcancel(), popen(__VA_ARGS__)) 1543 #define posix_fadvise(...) (pthread_testcancel(), posix_fadvise(__VA_ARGS__)) 1544 #define posix_fallocate(...) (pthread_testcancel(), posix_fallocate(__VA_ARGS__)) 1545 #define posix_madvise(...) (pthread_testcancel(), posix_madvise(__VA_ARGS__)) 1546 #define posix_openpt(...) (pthread_testcancel(), posix_openpt(__VA_ARGS__)) 1547 #define posix_spawn(...) (pthread_testcancel(), posix_spawn(__VA_ARGS__)) 1548 #define posix_spawnp(...) (pthread_testcancel(), posix_spawnp(__VA_ARGS__)) 1549 #define posix_trace_clear(...) (pthread_testcancel(), posix_trace_clear(__VA_ARGS__)) 1550 #define posix_trace_close(...) (pthread_testcancel(), posix_trace_close(__VA_ARGS__)) 1551 #define posix_trace_create(...) (pthread_testcancel(), posix_trace_create(__VA_ARGS__)) 1552 #define posix_trace_create_withlog(...) (pthread_testcancel(), posix_trace_create_withlog(__VA_ARGS__)) 1553 #define posix_trace_eventtypelist_getne(...) (pthread_testcancel(), posix_trace_eventtypelist_getne(__VA_ARGS__)) 1554 #define posix_trace_eventtypelist_rewin(...) (pthread_testcancel(), posix_trace_eventtypelist_rewin(__VA_ARGS__)) 1555 #define posix_trace_flush(...) (pthread_testcancel(), posix_trace_flush(__VA_ARGS__)) 1556 #define posix_trace_get_attr(...) (pthread_testcancel(), posix_trace_get_attr(__VA_ARGS__)) 1557 #define posix_trace_get_filter(...) (pthread_testcancel(), posix_trace_get_filter(__VA_ARGS__)) 1558 #define posix_trace_get_status(...) (pthread_testcancel(), posix_trace_get_status(__VA_ARGS__)) 1559 #define posix_trace_getnext_event(...) (pthread_testcancel(), posix_trace_getnext_event(__VA_ARGS__)) 1560 #define posix_trace_open(...) (pthread_testcancel(), posix_trace_open(__VA_ARGS__)) 1561 #define posix_trace_rewind(...) (pthread_testcancel(), posix_trace_rewind(__VA_ARGS__)) 1562 #define posix_trace_setfilter(...) (pthread_testcancel(), posix_trace_setfilter(__VA_ARGS__)) 1563 #define posix_trace_shutdown(...) (pthread_testcancel(), posix_trace_shutdown(__VA_ARGS__)) 1564 #define posix_trace_timedgetnext_event(...) (pthread_testcancel(), posix_trace_timedgetnext_event(__VA_ARGS__)) 1565 #define posix_typed_mem_open(...) (pthread_testcancel(), posix_typed_mem_open(__VA_ARGS__)) 1566 #define printf(...) (pthread_testcancel(), printf(__VA_ARGS__)) 1567 #define putc(...) (pthread_testcancel(), putc(__VA_ARGS__)) 1568 #define putc_unlocked(...) (pthread_testcancel(), putc_unlocked(__VA_ARGS__)) 1569 #define putchar(...) (pthread_testcancel(), putchar(__VA_ARGS__)) 1570 #define putchar_unlocked(...) (pthread_testcancel(), putchar_unlocked(__VA_ARGS__)) 1571 #define puts(...) (pthread_testcancel(), puts(__VA_ARGS__)) 1572 #define pututxline(...) (pthread_testcancel(), pututxline(__VA_ARGS__)) 1574 #define putwc(...) (pthread_testcancel(), putwc(__VA_ARGS__)) 1576 #define putwchar(...) (pthread_testcancel(), putwchar(__VA_ARGS__)) 1577 #define readdir(...) (pthread_testcancel(), readdir(__VA_ARSG__)) 1578 #define readdir_r(...) (pthread_testcancel(), readdir_r(__VA_ARGS__)) 1579 #define remove(...) (pthread_testcancel(), remove(__VA_ARGS__)) 1580 #define rename(...) (pthread_testcancel(), rename(__VA_ARGS__)) 1581 #define rewind(...) (pthread_testcancel(), rewind(__VA_ARGS__)) 1582 #define rewinddir(...) (pthread_testcancel(), rewinddir(__VA_ARGS__)) 1583 #define scanf(...) (pthread_testcancel(), scanf(__VA_ARGS__)) 1584 #define seekdir(...) (pthread_testcancel(), seekdir(__VA_ARGS__)) 1585 #define semop(...) (pthread_testcancel(), semop(__VA_ARGS__)) 1586 #define setgrent(...) (pthread_testcancel(), setgrent(__VA_ARGS__)) 1587 #define sethostent(...) (pthread_testcancel(), sethostemt(__VA_ARGS__)) 1588 #define setnetent(...) (pthread_testcancel(), setnetent(__VA_ARGS__)) 1589 #define setprotoent(...) (pthread_testcancel(), setprotoent(__VA_ARGS__)) 1590 #define setpwent(...) (pthread_testcancel(), setpwent(__VA_ARGS__)) 1591 #define setservent(...) (pthread_testcancel(), setservent(__VA_ARGS__)) 1592 #define setutxent(...) (pthread_testcancel(), setutxent(__VA_ARGS__)) 1593 #define stat(...) (pthread_testcancel(), stat(__VA_ARGS__)) 1594 #define strerror(...) (pthread_testcancel(), strerror(__VA_ARGS__)) 1595 #define strerror_r(...) (pthread_testcancel(), strerror_r(__VA_ARGS__)) 1596 #define strftime(...) (pthread_testcancel(), strftime(__VA_ARGS__)) 1597 #define symlink(...) (pthread_testcancel(), symlink(__VA_ARGS__)) 1598 #define sync(...) (pthread_testcancel(), sync(__VA_ARGS__)) 1599 #define syslog(...) (pthread_testcancel(), syslog(__VA_ARGS__)) 1600 #define tmpfile(...) (pthread_testcancel(), tmpfile(__VA_ARGS__)) 1601 #define tmpnam(...) (pthread_testcancel(), tmpnam(__VA_ARGS__)) 1602 #define ttyname(...) (pthread_testcancel(), ttyname(__VA_ARGS__)) 1603 #define ttyname_r(...) (pthread_testcancel(), ttyname_r(__VA_ARGS__)) 1604 #define tzset(...) (pthread_testcancel(), tzset(__VA_ARGS__)) 1605 #define ungetc(...) (pthread_testcancel(), ungetc(__VA_ARGS__)) 1606 #define ungetwc(...) (pthread_testcancel(), ungetwc(__VA_ARGS__)) 1607 #define unlink(...) (pthread_testcancel(), unlink(__VA_ARGS__)) 1608 #define vfprintf(...) (pthread_testcancel(), vfprintf(__VA_ARGS__)) 1609 #define vfwprintf(...) (pthread_testcancel(), vfwprintf(__VA_ARGS__)) 1610 #define vprintf(...) (pthread_testcancel(), vprintf(__VA_ARGS__)) 1611 #define vwprintf(...) (pthread_testcancel(), vwprintf(__VA_ARGS__)) 1612 #define wcsftime(...) (pthread_testcancel(), wcsftime(__VA_ARGS__)) 1613 #define wordexp(...) (pthread_testcancel(), wordexp(__VA_ARGS__)) 1614 #define wprintf(...) (pthread_testcancel(), wprintf(__VA_ARGS__)) 1615 #define wscanf(...) (pthread_testcancel(), wscanf(__VA_ARGS__)) Definition: winpthreads.h:116
Definition: winpthreads.h:123
Definition: winpthreads.h:149
Definition: winpthreads.h:140