diff options
Diffstat (limited to 'gdb/testsuite/gdb.hp/start-stop.c')
-rw-r--r-- | gdb/testsuite/gdb.hp/start-stop.c | 161 |
1 files changed, 0 insertions, 161 deletions
diff --git a/gdb/testsuite/gdb.hp/start-stop.c b/gdb/testsuite/gdb.hp/start-stop.c deleted file mode 100644 index dcf2c7e..0000000 --- a/gdb/testsuite/gdb.hp/start-stop.c +++ /dev/null @@ -1,161 +0,0 @@ -/* BeginSourceFile start_stop.c - - This file creates and deletes threads, so that wdb - can be tested on thread delete. - - To compile: - - cc -Ae +DA1.0 -g -o start_stop -lpthread start_stop.c - - To run: - - start_stop --normal run - start_stop 1 --waits in each thread to keep it alive. -*/ - -#include <unistd.h> -#include <stdlib.h> -#include <stdio.h> -#include <assert.h> -#include <pthread.h> - -#define TRUE 1 -#define FALSE 0 -#define OUTER_LOOP_COUNT 3 -#define N_THREADS 3 -#define MAX_LOCAL_VAL 40 - -/* Uncomment to turn on debugging output */ -/* #define START_DEBUG */ - -/* True if waiting for attach. - */ -int wait_here; - -/* Thing to check for debugging purposes. -*/ -int a_global = 0; - -/* Thread-local storage. - */ -__thread int a_thread_local; - -/* Check the results of thread-local storage. - */ -int thread_local_val[ N_THREADS ]; -int val_debugger_saw[ N_THREADS ]; - -/* Routine for each thread to run, does nothing. - */ -void *spin( vp ) - void * vp; -{ - int me = (int) vp; - int i; - -#ifdef START_DEBUG - printf( "== In thread %d\n", me ); -#endif - - a_global++; - - a_thread_local = 0; - for( i = 0; i < a_global; i++ ) { - a_thread_local += i; - } - - thread_local_val[ me ] = a_thread_local; /* Line 67 */ - - printf( "== Thread %d, a_thread_local is %d\n", - (int) vp, a_thread_local ); - - if( wait_here ) { - /* Extend life of thread to extend life of thread-local var. - * This makes life easier for human debugging (though you'd - * probably want to make the delay longer). - */ - sleep( 5 ); - } -} - -void -do_pass( pass ) - int pass; -{ - int i; - pthread_t t[ N_THREADS ]; - int err; - - for( i = 0; i < N_THREADS; i++) { - thread_local_val[i] = 0; - val_debugger_saw[i] = 0; - } - - /* 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 ); - } - } - - 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. */ - -/*#ifdef START_DEBUG*/ - for( i = 0; i < N_THREADS; i++) { - printf( " Local in thread %d was %d, debugger saw %d\n", - i, thread_local_val[i], val_debugger_saw[i] ); - } - printf( "== Pass %d done\n", pass ); -/*#endif*/ - -} - -void -do_it() -{ - /* We want to start some threads and then - * end them, and then do it again and again - */ - int i; - int dummy; - - for( i = 0; i < OUTER_LOOP_COUNT; i++ ) { - do_pass( i ); - dummy = i; /* Line 134, null line for setting bps on */ - } -} - -main( argc, argv ) -int argc; -char **argv; -{ - wait_here = FALSE; - if((argc > 1) && (0 != argv )) { - if( 1 == atoi( argv[1] ) ) - wait_here = TRUE; - } - -#ifdef START_DEBUG - printf( "== Test starting\n" ); -#endif - - do_it(); - -#ifdef START_DEBUG - printf( "== Test done\n" ); -#endif - - return(0); -} - -/* EndSourceFile */ |