2002-01-19 03:48:21 +00:00
|
|
|
/* OBSOLETE #include <stdio.h> */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE /* #include "config.h" */ */
|
|
|
|
/* OBSOLETE #define HAVE_PTHREAD_H */
|
|
|
|
/* OBSOLETE #define __hpux__ */
|
|
|
|
/* OBSOLETE #define __osf__ */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #ifndef HAVE_PTHREAD_H */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE /* Don't even try to compile. In fact, cause a syntax error that we can */
|
|
|
|
/* OBSOLETE look for as a compiler error message and know that we have no pthread */
|
|
|
|
/* OBSOLETE support. In that case we can just suppress the test completely. */ */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #error "no posix threads support" */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #else */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE /* OK. We have the right header. If we try to compile this and fail, then */
|
|
|
|
/* OBSOLETE there is something wrong and the user should know about it so the testsuite */
|
|
|
|
/* OBSOLETE should issue an ERROR result.. */ */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #ifdef __linux__ */
|
|
|
|
/* OBSOLETE #define _MIT_POSIX_THREADS 1 /* Linux (or at least RedHat 4.0) needs this */ */
|
|
|
|
/* OBSOLETE #endif */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #include <pthread.h> */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE /* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create */
|
|
|
|
/* OBSOLETE is prototyped to be just a "pthread_attr_t", while under Solaris it */
|
|
|
|
/* OBSOLETE is a "pthread_attr_t *". Arg! */ */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #if defined (__osf__) || defined (__hpux__) */
|
|
|
|
/* OBSOLETE #define PTHREAD_CREATE_ARG2(arg) arg */
|
|
|
|
/* OBSOLETE #define PTHREAD_CREATE_NULL_ARG2 null_attr */
|
|
|
|
/* OBSOLETE static pthread_attr_t null_attr; */
|
|
|
|
/* OBSOLETE #else */
|
|
|
|
/* OBSOLETE #define PTHREAD_CREATE_ARG2(arg) &arg */
|
|
|
|
/* OBSOLETE #define PTHREAD_CREATE_NULL_ARG2 NULL */
|
|
|
|
/* OBSOLETE #endif */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE static int verbose = 0; */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE static void */
|
|
|
|
/* OBSOLETE common_routine (arg) */
|
|
|
|
/* OBSOLETE int arg; */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE static int from_thread1; */
|
|
|
|
/* OBSOLETE static int from_thread2; */
|
|
|
|
/* OBSOLETE static int from_main; */
|
|
|
|
/* OBSOLETE static int hits; */
|
|
|
|
/* OBSOLETE static int full_coverage; */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE if (verbose) printf("common_routine (%d)\n", arg); */
|
|
|
|
/* OBSOLETE hits++; */
|
|
|
|
/* OBSOLETE switch (arg) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE case 0: */
|
|
|
|
/* OBSOLETE from_main++; */
|
|
|
|
/* OBSOLETE break; */
|
|
|
|
/* OBSOLETE case 1: */
|
|
|
|
/* OBSOLETE from_thread1++; */
|
|
|
|
/* OBSOLETE break; */
|
|
|
|
/* OBSOLETE case 2: */
|
|
|
|
/* OBSOLETE from_thread2++; */
|
|
|
|
/* OBSOLETE break; */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE if (from_main && from_thread1 && from_thread2) */
|
|
|
|
/* OBSOLETE full_coverage = 1; */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE static void * */
|
|
|
|
/* OBSOLETE thread1 (void *arg) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE int i; */
|
|
|
|
/* OBSOLETE int z = 0; */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE if (verbose) printf ("thread1 (%0x) ; pid = %d\n", arg, getpid ()); */
|
|
|
|
/* OBSOLETE for (i=1; i <= 10000000; i++) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE if (verbose) printf("thread1 %d\n", pthread_self ()); */
|
|
|
|
/* OBSOLETE z += i; */
|
|
|
|
/* OBSOLETE common_routine (1); */
|
|
|
|
/* OBSOLETE sleep(1); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE static void * */
|
|
|
|
/* OBSOLETE thread2 (void * arg) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE int i; */
|
|
|
|
/* OBSOLETE int k = 0; */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE if (verbose) printf ("thread2 (%0x) ; pid = %d\n", arg, getpid ()); */
|
|
|
|
/* OBSOLETE for (i=1; i <= 10000000; i++) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE if (verbose) printf("thread2 %d\n", pthread_self ()); */
|
|
|
|
/* OBSOLETE k += i; */
|
|
|
|
/* OBSOLETE common_routine (2); */
|
|
|
|
/* OBSOLETE sleep(1); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE sleep(100); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE int */
|
|
|
|
/* OBSOLETE foo (a, b, c) */
|
|
|
|
/* OBSOLETE int a, b, c; */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE int d, e, f; */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE if (verbose) printf("a=%d\n", a); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE main(argc, argv) */
|
|
|
|
/* OBSOLETE int argc; */
|
|
|
|
/* OBSOLETE char **argv; */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE pthread_t tid1, tid2; */
|
|
|
|
/* OBSOLETE int j; */
|
|
|
|
/* OBSOLETE int t = 0; */
|
|
|
|
/* OBSOLETE void (*xxx) (); */
|
|
|
|
/* OBSOLETE pthread_attr_t attr; */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE if (verbose) printf ("pid = %d\n", getpid()); */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE foo (1, 2, 3); */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #ifndef __osf__ */
|
|
|
|
/* OBSOLETE if (pthread_attr_init (&attr)) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE perror ("pthread_attr_init 1"); */
|
|
|
|
/* OBSOLETE exit (1); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE #endif */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #ifdef PTHREAD_SCOPE_SYSTEM */
|
|
|
|
/* OBSOLETE if (pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM)) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE perror ("pthread_attr_setscope 1"); */
|
|
|
|
/* OBSOLETE exit (1); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE #endif */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE if (pthread_create (&tid1, pthread_attr_default, thread1, (void *) 0xfeedface)) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE perror ("pthread_create 1"); */
|
|
|
|
/* OBSOLETE exit (1); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE if (verbose) printf ("Made thread %d\n", tid1); */
|
|
|
|
/* OBSOLETE sleep (1); */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE if (pthread_create (&tid2, null_attr, thread2, (void *) 0xdeadbeef)) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE perror ("pthread_create 2"); */
|
|
|
|
/* OBSOLETE exit (1); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE if (verbose) printf("Made thread %d\n", tid2); */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE sleep (1); */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE for (j = 1; j <= 10000000; j++) */
|
|
|
|
/* OBSOLETE { */
|
|
|
|
/* OBSOLETE if (verbose) printf("top %d\n", pthread_self ()); */
|
|
|
|
/* OBSOLETE common_routine (0); */
|
|
|
|
/* OBSOLETE sleep(1); */
|
|
|
|
/* OBSOLETE t += j; */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE exit(0); */
|
|
|
|
/* OBSOLETE } */
|
|
|
|
/* OBSOLETE */
|
|
|
|
/* OBSOLETE #endif /* ifndef HAVE_PTHREAD_H */ */
|