diff options
author | rpj <rpj> | 2002-02-23 02:01:11 +0000 |
---|---|---|
committer | rpj <rpj> | 2002-02-23 02:01:11 +0000 |
commit | d2b870cd9b6d91261a304e156819571acc309b55 (patch) | |
tree | 4b56dbc20070a24a90c123daadc35ab628f21e8c /tests | |
parent | 09cf57ffcf96b3f0cf7d5ec959c455ba54245a65 (diff) |
* pthread_cond_destroy.c: Expand the time change
critical section to solve deadlock problem.
* pthread.c: Add all remaining C modules.
* pthread.h: Use dllexport/dllimport attributes on functions
to avoid using pthread.def.
* sched.h: Likewise.
* semaphore.h: Likewise.
* GNUmakefile: Add new targets for single translation
unit build to maximise inlining potential; generate
pthread.def automatically.
* Makefile: Likewise, but no longer uses pthread.def.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ChangeLog | 8 | ||||
-rw-r--r-- | tests/GNUmakefile | 5 | ||||
-rw-r--r-- | tests/condvar1_2.c | 42 | ||||
-rw-r--r-- | tests/spin4.c | 45 |
4 files changed, 55 insertions, 45 deletions
diff --git a/tests/ChangeLog b/tests/ChangeLog index 944961d..afd2cbb 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,11 @@ +2002-02-23 Ross Johnson <rpj@special.ise.canberra.edu.au>
+
+ * condvar1_2.c: Loop over the test many times in the hope
+ of detecting any intermittent deadlocks. This is to
+ test a fixed problem in pthread_cond_destroy.c.
+
+ * spin4.c: Remove unused variable.
+
2002-02-17 Ross Johnson <rpj@special.ise.canberra.edu.au>
* condvar1_1.c: New test.
diff --git a/tests/GNUmakefile b/tests/GNUmakefile index 74bd6b3..9e6cf89 100644 --- a/tests/GNUmakefile +++ b/tests/GNUmakefile @@ -49,9 +49,8 @@ MAKE = make GLANG = c++ CC = gcc XXCFLAGS = -#CFLAGS = -g -O0 -mthreads -UNDEBUG -Wall -x $(GLANG) -#CFLAGS = -O3 -mthreads -UNDEBUG -Wall -x $(GLANG) -CFLAGS = -g -O0 -UNDEBUG -Wall $(XXCFLAGS) +CFLAGS = -O3 -UNDEBUG -Wall $(XXCFLAGS) +#CFLAGS = -g -O0 -UNDEBUG -Wall $(XXCFLAGS) BUILD_DIR = .. INCLUDES = -I. diff --git a/tests/condvar1_2.c b/tests/condvar1_2.c index 66237ba..4cb7d9d 100644 --- a/tests/condvar1_2.c +++ b/tests/condvar1_2.c @@ -81,7 +81,8 @@ #include "test.h" enum { - NUM_CV = 100 + NUM_CV = 100, + NUM_LOOPS = 100 }; static pthread_cond_t cv[NUM_CV]; @@ -89,34 +90,37 @@ static pthread_cond_t cv[NUM_CV]; int main() { - int i, j; + int i, j, k; int result = -1; pthread_t t; - for (i = 0; i < NUM_CV; i++) + for (k = 0; k < NUM_LOOPS; k++) { - assert(pthread_cond_init(&cv[i], NULL) == 0); - } + for (i = 0; i < NUM_CV; i++) + { + assert(pthread_cond_init(&cv[i], NULL) == 0); + } - j = NUM_CV; - (void) srand((unsigned)time(NULL)); + j = NUM_CV; + (void) srand((unsigned)time(NULL)); - /* Traverse the list asynchronously. */ - assert(pthread_create(&t, NULL, pthread_timechange_handler_np, NULL) == 0); + /* Traverse the list asynchronously. */ + assert(pthread_create(&t, NULL, pthread_timechange_handler_np, NULL) == 0); - do - { - i = (NUM_CV - 1) * rand() / RAND_MAX; - if (cv[i] != NULL) + do { - j--; - assert(pthread_cond_destroy(&cv[i]) == 0); + i = (NUM_CV - 1) * rand() / RAND_MAX; + if (cv[i] != NULL) + { + j--; + assert(pthread_cond_destroy(&cv[i]) == 0); + } } - } - while (j > 0); + while (j > 0); - assert(pthread_join(t, (void **) &result) == 0); - assert (result == 0); + assert(pthread_join(t, (void **) &result) == 0); + assert (result == 0); + } return 0; } diff --git a/tests/spin4.c b/tests/spin4.c index 3cd6d64..aabbb28 100644 --- a/tests/spin4.c +++ b/tests/spin4.c @@ -6,32 +6,32 @@ * * -------------------------------------------------------------------------- * - * Pthreads-win32 - POSIX Threads Library for Win32 - * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2002 Pthreads-win32 contributors + * Pthreads-win32 - POSIX Threads Library for Win32 + * Copyright(C) 1998 John E. Bossom + * Copyright(C) 1999,2002 Pthreads-win32 contributors * - * Contact Email: rpj@ise.canberra.edu.au + * Contact Email: rpj@ise.canberra.edu.au * - * The current list of contributors is contained - * in the file CONTRIBUTORS included with the source - * code distribution. The list can also be seen at the - * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html + * The current list of contributors is contained + * in the file CONTRIBUTORS included with the source + * code distribution. The list can also be seen at the + * following World Wide Web location: + * http://sources.redhat.com/pthreads-win32/contributors.html * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * You should have received a copy of the GNU Lesser General Public + * License along with this library in the file COPYING.LIB; + * if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * * -------------------------------------------------------------------------- * @@ -47,7 +47,7 @@ struct _timeb currSysTimeStart; struct _timeb currSysTimeStop; #define GetDurationMilliSecs(_TStart, _TStop) ((_TStop.time*1000+_TStop.millitm) \ - - (_TStart.time*1000+_TStart.millitm)) + - (_TStart.time*1000+_TStart.millitm)) static int washere = 0; @@ -66,7 +66,6 @@ int main() { long result = 0; - int i; pthread_t t; int CPUs; struct _timeb sysTime; |