#include <pthread.h>
#include <assert.h>
+#ifdef __APPLE__
+#define OS_IS_DARWIN 1
+#else
+#define OS_IS_DARWIN 0
+#endif
+
/* Do trivial stuff with a reader-writer lock. */
int main ( void )
r = pthread_rwlock_unlock( &rwl ); assert(r == 0);
/* this should fail - lock is unowned now */
- r = pthread_rwlock_unlock( &rwl ); assert(r == 0);
+ r = pthread_rwlock_unlock( &rwl ); assert(OS_IS_DARWIN || r == 0);
r = pthread_rwlock_destroy( &rwl ); assert(r == 0);
#include <unistd.h>
#include <semaphore.h>
+#ifdef __APPLE__
+#define OS_IS_DARWIN 1
+#else
+#define OS_IS_DARWIN 0
+#endif
+
pthread_mutex_t mx[4];
pthread_cond_t cv;
pthread_rwlock_t rwl;
r= pthread_cond_init(&cv, NULL); assert(!r);
r= pthread_rwlock_init(&rwl, NULL); assert(!r);
- r= sem_init( &quit_now, 0,0 ); assert(!r);
+ r= sem_init( &quit_now, 0,0 ); assert(OS_IS_DARWIN || !r);
r= pthread_create( &grabber, NULL, grab_the_lock, NULL ); assert(!r);
sleep(1); /* let the grabber get there first */
/* mx is held by someone else. */
r= pthread_cond_wait(&cv, &mx[2] );
- r= sem_post( &quit_now ); assert(!r);
- r= sem_post( &quit_now ); assert(!r);
+ r= sem_post( &quit_now ); assert(OS_IS_DARWIN || !r);
+ r= sem_post( &quit_now ); assert(OS_IS_DARWIN || !r);
r= pthread_join( my_rescuer, NULL ); assert(!r);
r= pthread_join( grabber, NULL ); assert(!r);
#include <semaphore.h>
#include <assert.h>
+#ifdef __APPLE__
+#define OS_IS_DARWIN 1
+#else
+#define OS_IS_DARWIN 0
+#endif
+
#define N_THREADS 3
void* child_fn ( void* semV )
{
int r;
sem_t* sem = (sem_t*)semV;
- r= sem_wait(sem); assert(!r);
+ r= sem_wait(sem); assert(OS_IS_DARWIN || !r);
return NULL;
}
sem_t sem;
pthread_t child[N_THREADS];
- r= sem_init(&sem, 0, N_THREADS); assert(!r);
+ r= sem_init(&sem, 0, N_THREADS); assert(OS_IS_DARWIN || !r);
for (i = 0; i < N_THREADS; i++) {
r= pthread_create( &child[i], NULL, child_fn, (void*)&sem );