2
/* Check that Helgrind does not complain about semaphores with a
3
nonzero initial value, when said semaphores are correctly used.
4
Also useful for generating VCG of simple semaphore activity, for
13
void* child_fn ( void* semV )
16
sem_t* sem = (sem_t*)semV;
17
r= sem_wait(sem); assert(!r);
25
pthread_t child[N_THREADS];
27
r= sem_init(&sem, 0, N_THREADS); assert(!r);
29
for (i = 0; i < N_THREADS; i++) {
30
r= pthread_create( &child[i], NULL, child_fn, (void*)&sem );
34
for (i = 0; i < N_THREADS; i++) {
35
r= pthread_join( child[i], NULL );