int main() { assert(pthread_mutexattr_init(&mxAttr) == 0); BEGIN_MUTEX_STALLED_ROBUST(mxAttr) assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_RECURSIVE) == 0); assert(mutex == NULL); assert(pthread_mutex_init(&mutex, &mxAttr) == 0); assert(mutex != NULL); assert(pthread_mutex_lock(&mutex) == 0); assert(pthread_mutex_unlock(&mutex) == 0); assert(pthread_mutex_destroy(&mutex) == 0); assert(mutex == NULL); END_MUTEX_STALLED_ROBUST(mxAttr) return 0; }
int main() { pthread_t t; int mxType = -1; assert(pthread_mutexattr_init(&mxAttr) == 0); BEGIN_MUTEX_STALLED_ROBUST(mxAttr) lockCount = 0; assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_ERRORCHECK) == 0); assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); assert(mxType == PTHREAD_MUTEX_ERRORCHECK); assert(pthread_mutex_init(&mutex, &mxAttr) == 0); assert(pthread_mutex_lock(&mutex) == 0); assert(pthread_create(&t, NULL, locker, NULL) == 0); Sleep(2000); assert(lockCount == 1); assert(pthread_mutex_unlock(&mutex) == 0); END_MUTEX_STALLED_ROBUST(mxAttr) return 0; }
int test_mutex6r(void) #endif { pthread_t t; void* result = (void*)0; int mxType = -1; assert(pthread_mutexattr_init(&mxAttr) == 0); BEGIN_MUTEX_STALLED_ROBUST(mxAttr) lockCount = 0; assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_RECURSIVE) == 0); assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); assert(mxType == PTHREAD_MUTEX_RECURSIVE); assert(pthread_mutex_init(&mutex, &mxAttr) == 0); assert(pthread_create(&t, NULL, locker, NULL) == 0); assert(pthread_join(t, &result) == 0); assert((int)(size_t)result == 555); assert(lockCount == 2); assert(pthread_mutex_destroy(&mutex) == 0); END_MUTEX_STALLED_ROBUST(mxAttr) assert(pthread_mutexattr_destroy(&mxAttr) == 0); return 0; }
int test_mutex8r(void) #endif { pthread_t t; int mxType = -1; assert(pthread_mutexattr_init(&mxAttr) == 0); BEGIN_MUTEX_STALLED_ROBUST(mxAttr) lockCount = 0; assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_RECURSIVE) == 0); assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); assert(mxType == PTHREAD_MUTEX_RECURSIVE); assert(pthread_mutex_init(&mutex, &mxAttr) == 0); assert(pthread_mutex_lock(&mutex) == 0); assert(pthread_create(&t, NULL, locker, NULL) == 0); Sleep(2000); assert(lockCount == 1); assert(pthread_mutex_unlock(&mutex) == 0); END_MUTEX_STALLED_ROBUST(mxAttr) return 0; }
int test_mutex6n(void) #endif { pthread_t t; int mxType = -1; assert(pthread_mutexattr_init(&mxAttr) == 0); BEGIN_MUTEX_STALLED_ROBUST(mxAttr) lockCount = 0; assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_NORMAL) == 0); assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); assert(mxType == PTHREAD_MUTEX_NORMAL); assert(pthread_mutex_init(&mutex, &mxAttr) == 0); assert(pthread_create(&t, NULL, locker, NULL) == 0); Sleep(1000); assert(lockCount == 1); /* * Should succeed even though we don't own the lock * because FAST mutexes don't check ownership. */ assert(pthread_mutex_unlock(&mutex) == (IS_ROBUST?EPERM:0)); Sleep (1000); assert(lockCount == (IS_ROBUST?1:2)); END_MUTEX_STALLED_ROBUST(mxAttr) return 0; }
int main() { pthread_t t; void* result = (void*)0; int mxType = -1; assert(pthread_mutexattr_init(&mxAttr) == 0); BEGIN_MUTEX_STALLED_ROBUST(mxAttr) lockCount = 0; assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_ERRORCHECK) == 0); assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); assert(mxType == PTHREAD_MUTEX_ERRORCHECK); assert(pthread_mutex_init(&mutex, &mxAttr) == 0); assert(pthread_create(&t, NULL, locker, NULL) == 0); assert(pthread_join(t, &result) == 0); assert((int)(size_t)result == 555); assert(lockCount == 2); assert(pthread_mutex_destroy(&mutex) == 0); END_MUTEX_STALLED_ROBUST(mxAttr) assert(pthread_mutexattr_destroy(&mxAttr) == 0); exit(0); /* Never reached */ return 0; }
int main() { pthread_t t; int mxType = -1; assert(pthread_mutexattr_init(&mxAttr) == 0); BEGIN_MUTEX_STALLED_ROBUST(mxAttr) lockCount = 0; assert(pthread_mutexattr_settype(&mxAttr, PTHREAD_MUTEX_NORMAL) == 0); assert(pthread_mutexattr_gettype(&mxAttr, &mxType) == 0); assert(mxType == PTHREAD_MUTEX_NORMAL); assert(pthread_mutex_init(&mutex, &mxAttr) == 0); assert(pthread_create(&t, NULL, locker, NULL) == 0); Sleep(100); assert(lockCount == 1); assert(pthread_mutex_unlock(&mutex) == IS_ROBUST?EPERM:0); Sleep (100); assert(lockCount == IS_ROBUST?1:2); END_MUTEX_STALLED_ROBUST(mxAttr) exit(0); /* Never reached */ return 0; }