diff options
author | Jim Blandy <jimb@codesourcery.com> | 2008-01-29 19:20:52 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2008-01-29 19:20:52 +0000 |
commit | aceaf3add3eb92dbcf2cb0b268baf1940aab6205 (patch) | |
tree | dfe42150b28901db022f974d44ef716ea51a1abd /gdb/testsuite | |
parent | 3f4178d63f0f7971f5d33c9c2780bd9ceb093779 (diff) | |
download | gdb-aceaf3add3eb92dbcf2cb0b268baf1940aab6205.zip gdb-aceaf3add3eb92dbcf2cb0b268baf1940aab6205.tar.gz gdb-aceaf3add3eb92dbcf2cb0b268baf1940aab6205.tar.bz2 |
* gdb.threads/sigthread.c: Use barriers to ensure that
child_thread and child_thread_two are always initialized before we
start to use them.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.threads/sigthread.c | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index a5d5920..55e0bc8 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-01-29 Jim Blandy <jimb@red-bean.com> + + * gdb.threads/sigthread.c: Use barriers to ensure that + child_thread and child_thread_two are always initialized before we + start to use them. + 2008-01-29 Vladimir Prus <vladimir@codesourcery.com> * gdb.base/watchpoint-solib.exp: New. diff --git a/gdb/testsuite/gdb.threads/sigthread.c b/gdb/testsuite/gdb.threads/sigthread.c index 131d96a..b5233bc 100644 --- a/gdb/testsuite/gdb.threads/sigthread.c +++ b/gdb/testsuite/gdb.threads/sigthread.c @@ -20,6 +20,8 @@ testing. */ #define NSIGS 10000000 +pthread_barrier_t barrier; + void handler (int sig) { @@ -34,6 +36,8 @@ child_two (void *arg) { int i; + pthread_barrier_wait (&barrier); + for (i = 0; i < NSIGS; i++) pthread_kill (child_thread, SIGUSR1); } @@ -43,6 +47,8 @@ thread_function (void *arg) { int i; + pthread_barrier_wait (&barrier); + for (i = 0; i < NSIGS; i++) pthread_kill (child_thread_two, SIGUSR2); } @@ -54,10 +60,14 @@ int main() signal (SIGUSR1, handler); signal (SIGUSR2, handler); + pthread_barrier_init (&barrier, NULL, 3); + main_thread = pthread_self (); pthread_create (&child_thread, NULL, thread_function, NULL); pthread_create (&child_thread_two, NULL, child_two, NULL); + pthread_barrier_wait (&barrier); + for (i = 0; i < NSIGS; i++) pthread_kill (child_thread_two, SIGUSR1); |