Example #1
0
int main(void)
{
	int i;

	test_mutexattr();

	i = test_relock(PTHREAD_MUTEX_NORMAL);
	if (i != -1)
		t_error("PTHREAD_MUTEX_NORMAL relock did not deadlock, got %s\n", strerror(i));
	i = test_relock(PTHREAD_MUTEX_ERRORCHECK);
	if (i != EDEADLK)
		t_error("PTHREAD_MUTEX_ERRORCHECK relock did not return EDEADLK, got %s\n", i==-1?"deadlock":strerror(i));
	i = test_relock(PTHREAD_MUTEX_RECURSIVE);
	if (i != 0)
		t_error("PTHREAD_MUTEX_RECURSIVE relock did not succed, got %s\n", i==-1?"deadlock":strerror(i));

	i = test_unlock(PTHREAD_MUTEX_ERRORCHECK);
	if (i != EPERM)
		t_error("PTHREAD_MUTEX_ERRORCHECK unlock did not return EPERM, got %s\n", strerror(i));
	i = test_unlock(PTHREAD_MUTEX_RECURSIVE);
	if (i != EPERM)
		t_error("PTHREAD_MUTEX_RECURSIVE unlock did not return EPERM, got %s\n", strerror(i));

	i = test_unlock_other(PTHREAD_MUTEX_ERRORCHECK);
	if (i != EPERM)
		t_error("PTHREAD_MUTEX_ERRORCHECK unlock did not return EPERM, got %s\n", strerror(i));
	i = test_unlock_other(PTHREAD_MUTEX_RECURSIVE);
	if (i != EPERM)
		t_error("PTHREAD_MUTEX_RECURSIVE unlock did not return EPERM, got %s\n", strerror(i));

	return t_status;
}
Example #2
0
			bool test ( const K &key ) {
				RWLock::Instance inst = m_lock.GetReadLock();
                return test_unlock(key);
			}