diff options
author | Keith Seitz <keiths@redhat.com> | 2002-09-24 19:36:06 +0000 |
---|---|---|
committer | Keith Seitz <keiths@redhat.com> | 2002-09-24 19:36:06 +0000 |
commit | d1a2f204347cd6608e4c9e5962573232769e50ef (patch) | |
tree | 3c4c25a5a9f43cb7664901f6bc7a9d27caf4d2b0 /gdb/testsuite/gdb.mi/pthreads.c | |
parent | 94b66fa77de33288655d56ec5b0b1dc2f3f8e1bd (diff) | |
download | gdb-d1a2f204347cd6608e4c9e5962573232769e50ef.zip gdb-d1a2f204347cd6608e4c9e5962573232769e50ef.tar.gz gdb-d1a2f204347cd6608e4c9e5962573232769e50ef.tar.bz2 |
* configure.in: Add config header.
Check for pthread.h.
* configure: Regenerate.
* config.in: New file.
* pthreads.c: New file.
* mi-pthreads.exp: New file to test thread functionality.
* gdb669.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.mi/pthreads.c')
-rw-r--r-- | gdb/testsuite/gdb.mi/pthreads.c | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.mi/pthreads.c b/gdb/testsuite/gdb.mi/pthreads.c new file mode 100644 index 0000000..c3e17bc --- /dev/null +++ b/gdb/testsuite/gdb.mi/pthreads.c @@ -0,0 +1,80 @@ +#include <stdio.h> + +#include "config.h" + +#ifndef HAVE_PTHREAD_H + +/* Don't even try to compile. In fact, cause a syntax error that we can + look for as a compiler error message and know that we have no pthread + support. In that case we can just suppress the test completely. */ + +#error "no posix threads support" + +#else + +/* OK. We have the right header. If we try to compile this and fail, then + there is something wrong and the user should know about it so the testsuite + should issue an ERROR result.. */ + +#ifdef __linux__ +#define _MIT_POSIX_THREADS 1 /* GNU/Linux (or at least RedHat 4.0) + needs this */ +#endif + +#include <pthread.h> + +/* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create + is prototyped to be just a "pthread_attr_t", while under Solaris it + is a "pthread_attr_t *". Arg! */ + +#if defined (__osf__) || defined (__hpux__) +#define PTHREAD_CREATE_ARG2(arg) arg +#define PTHREAD_CREATE_NULL_ARG2 null_attr +static pthread_attr_t null_attr; +#else +#define PTHREAD_CREATE_ARG2(arg) &arg +#define PTHREAD_CREATE_NULL_ARG2 NULL +#endif + +void * +routine (void *arg) +{ + sleep (9); + printf ("hello thread\n"); +} + +/* Marker function for the testsuite */ +void +done_making_threads (void) +{ + /* Nothing */ +}; + +void +create_thread (void) +{ + pthread_t tid; + + if (pthread_create (&tid, PTHREAD_CREATE_NULL_ARG2, routine, (void *) 0xfeedface)) + { + perror ("pthread_create 1"); + exit (1); + } +} + +int +main (int argc, char *argv[]) +{ + int i; + + /* Create a few threads */ + for (i = 0; i < 5; i++) + create_thread (); + done_making_threads (); + + printf ("hello\n"); + printf ("hello\n"); + return 0; +} + +#endif /* ifndef HAVE_PTHREAD_H */ |