#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
-static pthread_mutex_t wait_mutex = PTHREAD_MUTEX_INITIALIZER;
-static pthread_mutex_t sleep_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t uwrap_getuid_sync_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t uwrap_setuid_sync_mutex = PTHREAD_MUTEX_INITIALIZER;
static void *uwrap_getuid_sync(void *arg)
{
(void) arg; /* unused */
- pthread_mutex_unlock(&sleep_mutex);
- pthread_mutex_lock(&wait_mutex);
+ pthread_mutex_lock(&uwrap_getuid_sync_mutex);
u = getuid();
assert_int_equal(u, 888);
+ pthread_mutex_unlock(&uwrap_getuid_sync_mutex);
return NULL;
}
(void) arg; /* unused */
+ pthread_mutex_lock(&uwrap_setuid_sync_mutex);
+
rc = setuid(888);
assert_int_equal(rc, 0);
+ pthread_mutex_unlock(&uwrap_setuid_sync_mutex);
return NULL;
}
(void) state; /* unused */
- pthread_mutex_lock(&wait_mutex);
- pthread_mutex_lock(&sleep_mutex);
+ pthread_mutex_lock(&uwrap_getuid_sync_mutex);
+ pthread_mutex_lock(&uwrap_setuid_sync_mutex);
/* Create thread which will wait for change. */
pthread_create(&threads[0],
uwrap_getuid_sync,
NULL);
- pthread_mutex_lock(&sleep_mutex);
-
pthread_create(&threads[1],
NULL,
uwrap_setuid_sync,
NULL);
+ pthread_mutex_unlock(&uwrap_setuid_sync_mutex);
+
pthread_join(threads[1], NULL);
- pthread_mutex_unlock(&wait_mutex);
+ pthread_mutex_unlock(&uwrap_getuid_sync_mutex);
pthread_join(threads[0], NULL);