diff options
Diffstat (limited to 'gdb/testsuite/gdb.hp/more-steps.c')
-rw-r--r-- | gdb/testsuite/gdb.hp/more-steps.c | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/gdb/testsuite/gdb.hp/more-steps.c b/gdb/testsuite/gdb.hp/more-steps.c deleted file mode 100644 index c5ba1e26865..00000000000 --- a/gdb/testsuite/gdb.hp/more-steps.c +++ /dev/null @@ -1,140 +0,0 @@ -/* BeginSourceFile more_steps.c - - This file creates a lot of threads which then execute - in parallel, so that wdb can be tested on handling - simultaneous thread events. - - To compile: - - cc -Ae +DA1.0 -g -o more_steps -lpthread more_steps.c - - To run: - - more_threads -*/ - -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <assert.h> -#include <pthread.h> - -#define TRUE 1 -#define FALSE 0 -#define N_THREADS 3 -#define PHASES 3 - -typedef enum { - ZERO, - ONE, - TWO, - THREE -} phase_t; - -/* Uncomment to turn on debugging output */ -/* #define DEBUG */ - -/* Locks. - */ -int lock_one; /* Main W, others R */ -int lock_two; /* ditto */ -int lock_end[ N_THREADS ]; /* Main R, others R[i] */ -int phase[ N_THREADS ]; - -/* Routine for each thread to run. - */ -void *spin( vp ) - void * vp; -{ - int me = (int) vp; - int i; - - lock_end[ me ] = TRUE; - - phase[ me ] = ONE; - - while( lock_one ); - - phase[ me ] = TWO; - - while( lock_two ); - - phase[ me ] = THREE; - - lock_end[ me ] = FALSE; -} - -void -do_pass() -{ - int i; - pthread_t t[ N_THREADS ]; - int err; - int done; - - /* Start N_THREADS threads, then join them so - * that they are terminated. - */ - for( i = 0; i < N_THREADS; i++ ) { - err = pthread_create( &t[i], NULL, spin, (void *)i ); - if( err != 0 ) { - printf( "== Start/stop, error in thread %d create\n", i ); - } - } - - /* Do phase 1. - */ - lock_one = FALSE; - - /* Do phase 2. - */ - lock_two = FALSE; - - /* Be done. - */ - done = 0; - while( !done ) { - - /* Be optimistic. - */ - done = 1; - for( i = 0; i < N_THREADS; i++ ) { - if( lock_end[i] ) { - /* Thread "i" is not ready yet. - */ - done = 0; - break; - } - } - } - - /* Finish up - */ - for( i = 0; i < N_THREADS; i++ ) { - err = pthread_join(t[i], NULL ); /* Line 105 */ - if( err != 0 ) { /* Line 106 */ - printf( "== Start/stop, error in thread %d join\n", i ); - } - } - - i = 10; /* Line 109. Null line for setting bpts on. */ -} - -main( argc, argv ) -int argc; -char **argv; -{ - int i; - - /* Init - */ - lock_one = TRUE; - lock_two = TRUE; - for( i = 0; i < N_THREADS; i++ ) { - lock_end[i] = TRUE; - phase[i] = ZERO; - } - - do_pass(); - return(0); -} |