3
#include <unistd.h> /* usleep */
10
void test_sem_fork (void)
12
sem * s = sem_alloc (1, "eucalyptus-util-test");
14
printf ("---> testing semaphores between processes\n");
20
printf ("A trying sem...\n");
22
printf ("A got sem!\n");
24
printf ("A releasing sem...\n");
28
for (i=0; i<ITER; i++) {
30
if (i%16==0) printf ("\n");
41
printf ("B trying sem...\n");
43
printf ("B got sem!\n");
45
printf ("B releasing sem...\n");
49
for (i=0; i<ITER; i++) {
56
exit (0); /* child quits */
63
void * thread_a (void * arg)
69
printf ("T trying sem...\n");
71
printf ("T got sem!\n");
73
printf ("T releasing sem...\n");
77
for (i=0; i<ITER; i++) {
79
if (i%16==0) printf ("\n");
88
void * thread_b (void * arg)
94
printf ("U trying sem...\n");
96
printf ("U got sem!\n");
98
printf ("U releasing sem...\n");
102
for (i=0; i<ITER; i++) {
112
void test_sem_pthreads (void)
114
sem * s = sem_alloc (1, "eucalyptus-util-test2");
118
printf ("---> testing semaphores between threads\n");
119
pthread_create (&ta, NULL, thread_a, s);
120
pthread_create (&tb, NULL, thread_b, s);
121
pthread_join (ta, &status);
122
pthread_join (tb, &status);
128
int main (int argc, char * argv[])
130
if ( diff ("/etc/motd", "/etc/motd") != 0 ) return 1;
131
if ( diff ("/etc/passwd", "/etc/motd") == 0 ) return 2;
133
char * s = strdup("jolly old jolly old time...");
135
if ( strcmp ( replace_string ( sp, "old", "new"), "jolly new jolly new time..." ) ) return 3;
136
if ( run ( "ls", "/", "/etc", ">/dev/null", NULL ) ) return 4;
138
/* testing the semaphores */
140
test_sem_pthreads ();