/* 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 */ */
