change log for rtems (2011-07-31)
rtems-vc at rtems.org
rtems-vc at rtems.org
Sun Jul 31 17:11:32 UTC 2011
*joel*:
2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
PR 1867/cpukit
* Makefile.am, configure.ac, psx12/task.c, psxkey03/init.c,
psxrwlock01/test.c: Correct implementation of pthread_exit() and
pthread_join() to support the case where a thread is joinable but
calls pthread_exit() before a thread has attempted to join.
M 1.348 testsuites/psxtests/ChangeLog
M 1.76 testsuites/psxtests/Makefile.am
M 1.84 testsuites/psxtests/configure.ac
M 1.8 testsuites/psxtests/psx12/task.c
M 1.8 testsuites/psxtests/psxkey03/init.c
M 1.17 testsuites/psxtests/psxrwlock01/test.c
diff -u rtems/testsuites/psxtests/ChangeLog:1.347 rtems/testsuites/psxtests/ChangeLog:1.348
--- rtems/testsuites/psxtests/ChangeLog:1.347 Fri Jul 22 15:23:20 2011
+++ rtems/testsuites/psxtests/ChangeLog Sun Jul 31 11:16:17 2011
@@ -1,3 +1,11 @@
+2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
+ PR 1867/cpukit
+ * Makefile.am, configure.ac, psx12/task.c, psxkey03/init.c,
+ psxrwlock01/test.c: Correct implementation of pthread_exit() and
+ pthread_join() to support the case where a thread is joinable but
+ calls pthread_exit() before a thread has attempted to join.
+
2011-07-22 Joel Sherrill <joel.sherrill at oarcorp.com>
PR 1839/filesystem
diff -u rtems/testsuites/psxtests/Makefile.am:1.75 rtems/testsuites/psxtests/Makefile.am:1.76
--- rtems/testsuites/psxtests/Makefile.am:1.75 Mon Jun 20 00:37:02 2011
+++ rtems/testsuites/psxtests/Makefile.am Sun Jul 31 11:16:17 2011
@@ -7,7 +7,8 @@
SUBDIRS = psxclock
if HAS_POSIX
SUBDIRS += psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 psx09 \
- psx10 psx11 psx12 psx13 psx14 psx15 psxaio01 psxaio02 psxaio03 \
+ psx10 psx11 psx12 psx13 psx14 psx15 psx16 \
+ psxaio01 psxaio02 psxaio03 \
psxalarm01 psxautoinit01 psxautoinit02 psxbarrier01 \
psxcancel psxcancel01 psxclassic01 psxcleanup psxcleanup01 \
psxcond01 psxenosys psxkey01 psxkey02 psxkey03 \
diff -u rtems/testsuites/psxtests/configure.ac:1.83 rtems/testsuites/psxtests/configure.ac:1.84
--- rtems/testsuites/psxtests/configure.ac:1.83 Tue Mar 8 16:10:38 2011
+++ rtems/testsuites/psxtests/configure.ac Sun Jul 31 11:16:17 2011
@@ -96,6 +96,7 @@
psx13/Makefile
psx14/Makefile
psx15/Makefile
+psx16/Makefile
psxaio01/Makefile
psxaio02/Makefile
psxaio03/Makefile
diff -u rtems/testsuites/psxtests/psx12/task.c:1.7 rtems/testsuites/psxtests/psx12/task.c:1.8
--- rtems/testsuites/psxtests/psx12/task.c:1.7 Tue Feb 22 03:47:31 2011
+++ rtems/testsuites/psxtests/psx12/task.c Sun Jul 31 11:16:17 2011
@@ -30,6 +30,11 @@
void *argument
)
{
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "Task_1: exitting" );
pthread_exit( NULL );
diff -u rtems/testsuites/psxtests/psxkey03/init.c:1.7 rtems/testsuites/psxtests/psxkey03/init.c:1.8
--- rtems/testsuites/psxtests/psxkey03/init.c:1.7 Tue Feb 22 03:47:34 2011
+++ rtems/testsuites/psxtests/psxkey03/init.c Sun Jul 31 11:16:17 2011
@@ -32,6 +32,11 @@
{
int sc;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "Test_Thread - pthread_setspecific - OK" );
sc = pthread_setspecific( Key, key_value );
rtems_test_assert( !sc );
diff -u rtems/testsuites/psxtests/psxrwlock01/test.c:1.16 rtems/testsuites/psxtests/psxrwlock01/test.c:1.17
--- rtems/testsuites/psxtests/psxrwlock01/test.c:1.16 Tue Feb 22 03:47:35 2011
+++ rtems/testsuites/psxtests/psxrwlock01/test.c Sun Jul 31 11:16:17 2011
@@ -39,6 +39,11 @@
{
int status;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "ReadThread - pthread_rwlock_rdlock(RWLock) blocking -- OK" );
status = pthread_rwlock_rdlock(&RWLock);
rtems_test_assert( !status );
@@ -56,6 +61,11 @@
{
int status;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "WriteThread - pthread_rwlock_wrlock(RWLock) blocking -- OK" );
status = pthread_rwlock_wrlock(&RWLock);
rtems_test_assert( !status );
*joel*:
branches: 1.1.2; 1.1.4;
file Makefile.am was initially added on branch rtems-4-10-branch.
A NONE testsuites/psxtests/psx16/Makefile.am
*joel*:
branches: 1.1.2; 1.1.4;
file .cvsignore was initially added on branch rtems-4-10-branch.
A NONE testsuites/psxtests/psx16/.cvsignore
*joel* (on branch rtems-4-10-branch):
2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
PR 1867/cpukit
* Makefile.am, configure.ac, psx12/task.c, psxkey03/init.c,
psxrwlock01/test.c: Correct implementation of pthread_exit() and
pthread_join() to support the case where a thread is joinable but
calls pthread_exit() before a thread has attempted to join.
* psx16/.cvsignore, psx16/Makefile.am, psx16/init.c, psx16/psx16.doc,
psx16/psx16.scn: New files.
M 1.264.2.4 testsuites/psxtests/ChangeLog
M 1.58.2.1 testsuites/psxtests/Makefile.am
M 1.61.2.4 testsuites/psxtests/configure.ac
M 1.6.8.1 testsuites/psxtests/psx12/task.c
M 1.1.2.1 testsuites/psxtests/psx16/.cvsignore
M 1.1.2.1 testsuites/psxtests/psx16/Makefile.am
M 1.1.2.1 testsuites/psxtests/psx16/init.c
M 1.1.2.1 testsuites/psxtests/psx16/psx16.doc
M 1.1.2.1 testsuites/psxtests/psx16/psx16.scn
M 1.5.2.1 testsuites/psxtests/psxkey03/init.c
M 1.13.2.1 testsuites/psxtests/psxrwlock01/test.c
diff -u rtems/testsuites/psxtests/ChangeLog:1.264.2.3 rtems/testsuites/psxtests/ChangeLog:1.264.2.4
--- rtems/testsuites/psxtests/ChangeLog:1.264.2.3 Tue Feb 8 00:38:03 2011
+++ rtems/testsuites/psxtests/ChangeLog Sun Jul 31 11:16:42 2011
@@ -1,14 +1,24 @@
-2011-02-08 Ralf Corsépius <ralf.corsepius at rtems.org>
+2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
+ PR 1867/cpukit
+ * Makefile.am, configure.ac, psx12/task.c, psxkey03/init.c,
+ psxrwlock01/test.c: Correct implementation of pthread_exit() and
+ pthread_join() to support the case where a thread is joinable but
+ calls pthread_exit() before a thread has attempted to join.
+ * psx16/.cvsignore, psx16/Makefile.am, psx16/init.c, psx16/psx16.doc,
+ psx16/psx16.scn: New files.
+
+2011-02-08 Ralf Corsépius <ralf.corsepius at rtems.org>
* include/pmacros.h: Add PRIxblksize_t, PRIxblkcnt_t.
* configure.ac: Add AC_CHECK_SIZEOF([blksize_t]),
AC_CHECK_SIZEOF([blkcnt_t]).
-2011-02-02 Ralf Corsépius <ralf.corsepius at rtems.org>
+2011-02-02 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Require autoconf-2.68, automake-1.11.1.
-2010-10-01 Ralf Corsépius <ralf.corsepius at rtems.org>
+2010-10-01 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Check for pthread_attr_{get,set}cputime instead of
pthread_pthread_attr_{get,set}cputime (Typo).
@@ -18,7 +28,7 @@
* psxfile01/test.c, psxmount/test.c, psxreaddir/test.c,
psxstat/test.c: Update to the new mount API.
-2010-05-29 Ralf Corsépius <ralf.corsepius at rtems.org>
+2010-05-29 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Add AC_CHECK_SIZEOF(off_t).
* include/pmacros.h: Add PRIdoff_t.
@@ -55,7 +65,7 @@
psxhdrs/pthread22.c, psxhdrs/sched01.c, psxhdrs/sched03.c:
Reflect POSIX changes to sched_param.
-2010-04-02 Ralf Corsépius <ralf.corsepius at rtems.org>
+2010-04-02 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxhdrs/proc01.c, psxhdrs/proc02.c, psxhdrs/proc07.c,
psxhdrs/proc08.c, psxhdrs/proc09.c, psxhdrs/proc10.c,
@@ -136,28 +146,28 @@
* psxenosys/Makefile.am: Add documentation file.
* psxenosys/psxenosys.doc: New file.
-2009-01-02 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-01-02 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxsignal03/init.c:
Print sigval.sival_ptr instead of "union sigval".
-2009-01-01 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-01-01 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxstat/test.c: Apply PRI* macros to print struct stat fields.
* psxreaddir/test.c: Apply PRI* macros to print struct stat fields.
* psxfile01/test.c: Remove obsure #ifdef's.
Apply PRI* macros to print struct stat fields.
-2009-10-31 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-31 Ralf Corsépius <ralf.corsepius at rtems.org>
* include/pmacros.h: Change TM_OCTOBER to 9, TM_NOVEMBER to 10,
TM_DECEMBER to 11 (tm_mon months start with JAN = 0).
-2009-10-31 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-31 Ralf Corsépius <ralf.corsepius at rtems.org>
* include/pmacros.h: November is the 11th month.
-2009-10-30 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-30 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxstat/test.c: Remove #ifdef's.
* psxmount/test.c, psxreaddir/test.c: Remove __P (unused anachronism).
@@ -169,7 +179,7 @@
rtems_object_api_minimum_class, rtems_object_api_maximum_class.
Reflect the prototypes having been missing to printf's.
-2009-10-29 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-29 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxsysconf/init.c:
Comment out sysconf(LONG_MAX) check (not useful).
@@ -179,11 +189,11 @@
* psx10/init.c: Pass 0x7FFF instead of 0xFFFFFF as invalid pshared
attribute to pthread_condattr_setpshared for 16bit target compliance.
-2009-10-28 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-28 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxbarrier01/test.c: Include <tmacros.h>
-2009-10-27 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-27 Ralf Corsépius <ralf.corsepius at rtems.org>
* psx01/init.c, psx01/task.c, psx02/init.c, psx03/init.c,
psx04/init.c, psx05/init.c, psx06/init.c, psx07/init.c,
@@ -193,7 +203,7 @@
psxmsgq02/init.c, psxsignal01/init.c, psxualarm/init.c:
Use PRIxpthread_t to print pthread_t's.
-2009-10-27 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-27 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxmsgq02/init.c:
Remove cast in call to fatal_posix_service_status_errno.
@@ -206,14 +216,14 @@
* configure.ac:
Add AC_CHECK_DECLS pthread_attr_getcputime, pthread_attr_setcputime.
-2009-10-27 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-27 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxtimer01/psxtimer.c: Use %ld to print *.tv_nsec.
* psxsysconf/init.c: Use %ld to print *.tv_nsec.
* psxclock/init.c: Use %ld to print *.tv_nsec.
* psx06/init.c, psx06/system.h: Misc. warning fixes.
-2009-10-26 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-26 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxsignal03/init.c: Add missing argument to printf.
* psxfile01/test.c: Use %zu instead of %d to print size_t's.
@@ -222,7 +232,7 @@
* configure.ac: Add AC_CHECK_HEADERS sys/mman.h.
Add AC_CHECK_DECLS pthread_atfork, adjtime, mprotect.
-2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxtime/test.c: Include <sys/time.h>.
Conditionally add local prototype for adjtime()
@@ -236,27 +246,27 @@
if pthread.h doesn't supply it.
* psxkey01/init.c: Include "test_support.h".
-2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Check for pthread_atfork in pthread.h.
* psxrwlock01/test.c: Conditionally add local prototype for
pthread_atfork() if pthread.h doesn't supply it.
Include <pthread.h>.
-2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Check for sys/mman.h.
Check for mprotect in sys/mman.h.
* psxenosys/init.c: Conditionally add local prototype for
mprotect() if sys/mman.h doesn't supply it.
-2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Check for pthread_rwlock_unlock in pthread.h.
* psxrwlock01/test.c: Conditionally add local prototype for
pthread_rwlock_unlock() if pthread.h doesn't supply it.
-2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-25 Ralf Corsépius <ralf.corsepius at rtems.org>
* psx01/init.c, psxalarm01/init.c, psxbarrier01/test.c,
psxclock/init.c, psxfatal01/testcase.h, psxfatal02/testcase.h,
@@ -273,7 +283,7 @@
* Makefile.am: Build file IO related tests even with POSIX threading is
disabled.
-2009-10-20 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-10-20 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Don't add -ansi -fasm to CFLAGS.
@@ -768,7 +778,7 @@
* psxfile01/test.c: Change from int to size_t.
-2009-04-03 Ralf Corsépius <ralf.corsepius at rtems.org>
+2009-04-03 Ralf Corsépius <ralf.corsepius at rtems.org>
* psx01/Makefile.am, psx02/Makefile.am, psx03/Makefile.am,
psx04/Makefile.am, psx05/Makefile.am, psx06/Makefile.am,
@@ -816,7 +826,7 @@
* psx01/psx01.scn: Bump version to 4.9.99.0
-2008-09-06 Ralf Corsépius <ralf.corsepius at rtems.org>
+2008-09-06 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxcleanup/psxcleanup.c, psxfatal_support/init.c,
psxfatal_support/system.h: Convert to "bool".
@@ -1044,7 +1054,7 @@
* psxrwlock01/main.c, psxrwlock01/test.c: Improve rwlock test to
include normal blocking and unblocking on timeout.
-2006-12-02 Ralf Corsépius <ralf.corsepius at rtems.org>
+2006-12-02 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: New BUG-REPORT address.
@@ -1078,11 +1088,11 @@
* psxsem01/init.c: Make sem_timedwait more conformant to Open Group
specification.
-2006-10-17 Ralf Corsépius <ralf.corsepius at rtems.org>
+2006-10-17 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Require autoconf-2.60. Require automake-1.10.
-2006-07-11 Ralf Corsépius <ralf.corsepius at rtems.org>
+2006-07-11 Ralf Corsépius <ralf.corsepius at rtems.org>
* psx01/Makefile.am, psx02/Makefile.am, psx03/Makefile.am,
psx04/Makefile.am, psx05/Makefile.am, psx06/Makefile.am,
@@ -1268,7 +1278,7 @@
* psxfile01/test.c, psxmsgq01/init.c, psxstat/test.c,
psxtimer/psxtimer.c: Eliminate warnings and typos.
-2004-02-26 Sébastien Barré <sbarre at sdelcc.com>
+2004-02-26 Sébastien Barré <sbarre at sdelcc.com>
PR 582/core
* psxmsgq01/init.c, psxmsgq01/psxmsgq01.scn: Fix the POSIX message
diff -u rtems/testsuites/psxtests/Makefile.am:1.58 rtems/testsuites/psxtests/Makefile.am:1.58.2.1
--- rtems/testsuites/psxtests/Makefile.am:1.58 Mon Dec 28 10:43:10 2009
+++ rtems/testsuites/psxtests/Makefile.am Sun Jul 31 11:16:43 2011
@@ -7,7 +7,7 @@
SUBDIRS = psxclock
if HAS_POSIX
SUBDIRS += psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 psx09 \
- psx10 psx11 psx12 psx13 psx14 psxalarm01 \
+ psx10 psx11 psx12 psx13 psx14 psx16 psxalarm01 \
psxautoinit01 psxautoinit02 psxbarrier01 \
psxcancel psxcancel01 psxcleanup psxcleanup01 \
psxcond01 psxenosys psxkey01 psxkey02 \
diff -u rtems/testsuites/psxtests/configure.ac:1.61.2.3 rtems/testsuites/psxtests/configure.ac:1.61.2.4
--- rtems/testsuites/psxtests/configure.ac:1.61.2.3 Tue Feb 8 00:38:03 2011
+++ rtems/testsuites/psxtests/configure.ac Sun Jul 31 11:16:43 2011
@@ -74,6 +74,7 @@
psx12/Makefile
psx13/Makefile
psx14/Makefile
+psx16/Makefile
psxalarm01/Makefile
psxautoinit01/Makefile
psxautoinit02/Makefile
diff -u rtems/testsuites/psxtests/psx12/task.c:1.6 rtems/testsuites/psxtests/psx12/task.c:1.6.8.1
--- rtems/testsuites/psxtests/psx12/task.c:1.6 Thu Sep 4 13:53:38 2003
+++ rtems/testsuites/psxtests/psx12/task.c Sun Jul 31 11:16:43 2011
@@ -26,6 +26,11 @@
void *argument
)
{
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "Task_1: exitting" );
pthread_exit( NULL );
diff -u /dev/null rtems/testsuites/psxtests/psx16/.cvsignore:1.1.2.1
--- /dev/null Sun Jul 31 12:11:27 2011
+++ rtems/testsuites/psxtests/psx16/.cvsignore Sun Jul 31 11:16:43 2011
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff -u /dev/null rtems/testsuites/psxtests/psx16/Makefile.am:1.1.2.1
--- /dev/null Sun Jul 31 12:11:27 2011
+++ rtems/testsuites/psxtests/psx16/Makefile.am Sun Jul 31 11:16:43 2011
@@ -0,0 +1,25 @@
+##
+## $Id$
+##
+
+rtems_tests_PROGRAMS = psx16
+psx16_SOURCES = init.c
+
+dist_rtems_tests_DATA = psx16.scn
+dist_rtems_tests_DATA += psx16.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psx16_OBJECTS) $(psx16_LDADD)
+LINK_LIBS = $(psx16_LDLIBS)
+
+psx16$(EXEEXT): $(psx16_OBJECTS) $(psx16_DEPENDENCIES)
+ @rm -f psx16$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff -u /dev/null rtems/testsuites/psxtests/psx16/init.c:1.1.2.1
--- /dev/null Sun Jul 31 12:11:27 2011
+++ rtems/testsuites/psxtests/psx16/init.c Sun Jul 31 11:16:43 2011
@@ -0,0 +1,78 @@
+/*
+ * COPYRIGHT (c) 1989-2011.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <tmacros.h>
+#include "test_support.h"
+#include <pthread.h>
+
+int Index;
+
+void *TestThread(
+ void *argument
+)
+{
+ int *index = (int *)argument;
+
+ *index = 7;
+
+ puts( "TestThread exiting" );
+ return argument;
+}
+
+void *POSIX_Init(
+ rtems_task_argument argument
+)
+{
+ int status;
+ pthread_t id;
+ pthread_attr_t attr;
+ void *join_return;
+
+ puts( "\n\n*** POSIX TEST PSX16 ***" );
+
+ Index = 5;
+
+ /* Initialize and set thread detached attribute */
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+
+ puts( "Creating TestThread" );
+ status = pthread_create( &id, &attr, TestThread, (void *)&Index );
+ rtems_test_assert( status == 0 );
+
+ /* let test thread run and exit */
+ puts( "Let TestThread run and exit before we attempt to join" );
+ sleep( 2 );
+
+ join_return = NULL;
+ status = pthread_join( id, &join_return );
+ rtems_test_assert( status == 0 );
+ rtems_test_assert( join_return == &Index );
+ rtems_test_assert( *(int *)join_return == 7 );
+ puts( "Successfully joined with TestThread" );
+
+ puts( "*** END OF POSIX TEST PSX16 ***" );
+
+ rtems_test_exit(0);
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 2
+
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_INIT
+#include <rtems/confdefs.h>
+/* end of file */
diff -u /dev/null rtems/testsuites/psxtests/psx16/psx16.doc:1.1.2.1
--- /dev/null Sun Jul 31 12:11:27 2011
+++ rtems/testsuites/psxtests/psx16/psx16.doc Sun Jul 31 11:16:43 2011
@@ -0,0 +1,24 @@
+#
+# $Id$
+#
+# COPYRIGHT (c) 1989-2011.
+# On-Line Applications Research Corporation (OAR).
+#
+# The license and distribution terms for this file may be
+# found in the file LICENSE in this distribution or at
+# http://www.rtems.com/license/LICENSE.
+#
+
+This file describes the directives and concepts tested by this test set.
+
+test set name: psx16
+
+directives:
+
+ pthread_join
+ pthread_exit
+
+concepts:
+
++ Ensure that if a joinable thread exits before it has been joined,
+that it waits for a thread to call pthread_join.
diff -u /dev/null rtems/testsuites/psxtests/psx16/psx16.scn:1.1.2.1
--- /dev/null Sun Jul 31 12:11:27 2011
+++ rtems/testsuites/psxtests/psx16/psx16.scn Sun Jul 31 11:16:43 2011
@@ -0,0 +1,6 @@
+*** POSIX TEST PSX16 ***
+Creating TestThread
+Let TestThread run and exit before we attempt to join
+TestThread exiting
+Successfully joined with TestThread
+*** END OF POSIX TEST PSX16 ***
diff -u rtems/testsuites/psxtests/psxkey03/init.c:1.5 rtems/testsuites/psxtests/psxkey03/init.c:1.5.2.1
--- rtems/testsuites/psxtests/psxkey03/init.c:1.5 Tue Dec 8 11:52:53 2009
+++ rtems/testsuites/psxtests/psxkey03/init.c Sun Jul 31 11:16:43 2011
@@ -28,6 +28,11 @@
{
int sc;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "Test_Thread - pthread_setspecific - OK" );
sc = pthread_setspecific( Key, key_value );
rtems_test_assert( !sc );
diff -u rtems/testsuites/psxtests/psxrwlock01/test.c:1.13 rtems/testsuites/psxtests/psxrwlock01/test.c:1.13.2.1
--- rtems/testsuites/psxtests/psxrwlock01/test.c:1.13 Tue Dec 8 15:16:02 2009
+++ rtems/testsuites/psxtests/psxrwlock01/test.c Sun Jul 31 11:16:43 2011
@@ -35,6 +35,11 @@
{
int status;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "ReadThread - pthread_rwlock_rdlock(RWLock) blocking -- OK" );
status = pthread_rwlock_rdlock(&RWLock);
rtems_test_assert( !status );
@@ -52,6 +57,11 @@
{
int status;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "WriteThread - pthread_rwlock_wrlock(RWLock) blocking -- OK" );
status = pthread_rwlock_wrlock(&RWLock);
rtems_test_assert( !status );
*joel*:
file psx16.scn was added on branch rtems-4-9-branch on 2011-07-31 16:17:02 +0000
R 1.1 testsuites/psxtests/psx16/psx16.scn
*joel*:
file init.c was added on branch rtems-4-9-branch on 2011-07-31 16:17:02 +0000
R 1.1 testsuites/psxtests/psx16/init.c
*joel*:
file Makefile.am was added on branch rtems-4-9-branch on 2011-07-31 16:17:02 +0000
R 1.1 testsuites/psxtests/psx16/Makefile.am
*joel*:
branches: 1.1.2; 1.1.4;
file init.c was initially added on branch rtems-4-10-branch.
A NONE testsuites/psxtests/psx16/init.c
*joel*:
file .cvsignore was added on branch rtems-4-9-branch on 2011-07-31 16:17:02 +0000
R 1.1 testsuites/psxtests/psx16/.cvsignore
*joel*:
branches: 1.1.2; 1.1.4;
file psx16.doc was initially added on branch rtems-4-10-branch.
A NONE testsuites/psxtests/psx16/psx16.doc
*joel*:
branches: 1.1.2; 1.1.4;
file psx16.scn was initially added on branch rtems-4-10-branch.
A NONE testsuites/psxtests/psx16/psx16.scn
*joel*:
file psx16.doc was added on branch rtems-4-9-branch on 2011-07-31 16:17:02 +0000
R 1.1 testsuites/psxtests/psx16/psx16.doc
*joel* (on branch rtems-4-9-branch):
2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
PR 1867/cpukit
* posix/src/pthreadexit.c, posix/src/pthreadjoin.c: Correct
implementation of pthread_exit() and pthread_join() to support the
case where a thread is joinable but calls pthread_exit() before a
thread has attempted to join.
M 1.2892 cpukit/ChangeLog
M 1.1539.2.79 cpukit/ChangeLog
M 1.2346.2.100 cpukit/ChangeLog
M 1.13 cpukit/posix/src/pthreadexit.c
M 1.10.2.1 cpukit/posix/src/pthreadexit.c
M 1.12.2.1 cpukit/posix/src/pthreadexit.c
M 1.12 cpukit/posix/src/pthreadjoin.c
M 1.8.4.2 cpukit/posix/src/pthreadjoin.c
M 1.8.2.2 cpukit/posix/src/pthreadjoin.c
diff -u rtems/cpukit/ChangeLog:1.2891 rtems/cpukit/ChangeLog:1.2892
--- rtems/cpukit/ChangeLog:1.2891 Wed Jul 27 12:17:49 2011
+++ rtems/cpukit/ChangeLog Sun Jul 31 11:15:59 2011
@@ -1,3 +1,11 @@
+2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
+ PR 1867/cpukit
+ * posix/src/pthreadexit.c, posix/src/pthreadjoin.c: Correct
+ implementation of pthread_exit() and pthread_join() to support the
+ case where a thread is joinable but calls pthread_exit() before a
+ thread has attempted to join.
+
2011-07-27 Joel Sherrill <joel.sherrilL at OARcorp.com>
* posix/src/pthread.c, posix/src/pthreadjoin.c: Revert accidental
diff -u rtems/cpukit/ChangeLog:1.1539.2.78 rtems/cpukit/ChangeLog:1.1539.2.79
--- rtems/cpukit/ChangeLog:1.1539.2.78 Sun Jul 24 15:26:12 2011
+++ rtems/cpukit/ChangeLog Sun Jul 31 11:16:53 2011
@@ -1,3 +1,11 @@
+2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
+ PR 1867/cpukit
+ * posix/src/pthreadexit.c, posix/src/pthreadjoin.c: Correct
+ implementation of pthread_exit() and pthread_join() to support the
+ case where a thread is joinable but calls pthread_exit() before a
+ thread has attempted to join.
+
2011-07-24 Joel Sherrill <joel.sherrilL at OARcorp.com>
PR 1839/filesystem
diff -u rtems/cpukit/ChangeLog:1.2346.2.99 rtems/cpukit/ChangeLog:1.2346.2.100
--- rtems/cpukit/ChangeLog:1.2346.2.99 Sun Jul 31 09:12:27 2011
+++ rtems/cpukit/ChangeLog Sun Jul 31 11:16:28 2011
@@ -1,5 +1,13 @@
2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
+ PR 1867/cpukit
+ * posix/src/pthreadexit.c, posix/src/pthreadjoin.c: Correct
+ implementation of pthread_exit() and pthread_join() to support the
+ case where a thread is joinable but calls pthread_exit() before a
+ thread has attempted to join.
+
+2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
PR 1839/filesystem
* libcsupport/include/rtems/libio_.h, libcsupport/src/fchdir.c,
libcsupport/src/fdatasync.c, libcsupport/src/fpathconf.c,
diff -u rtems/cpukit/posix/src/pthreadexit.c:1.12 rtems/cpukit/posix/src/pthreadexit.c:1.13
--- rtems/cpukit/posix/src/pthreadexit.c:1.12 Mon Nov 30 09:44:21 2009
+++ rtems/cpukit/posix/src/pthreadexit.c Sun Jul 31 11:16:00 2011
@@ -3,7 +3,7 @@
*
* NOTE: Key destructors are executed in the POSIX api delete extension.
*
- * COPYRIGHT (c) 1989-2008.
+ * COPYRIGHT (c) 1989-2011.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -25,15 +25,21 @@
#include <rtems/score/thread.h>
#include <rtems/posix/pthread.h>
+
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
- Objects_Information *the_information;
+ Objects_Information *the_information;
+ Thread_Control *unblocked;
+ POSIX_API_Control *api;
the_information = _Objects_Get_information_id( the_thread->Object.id );
+ api = the_thread->API_Extensions[ THREAD_API_POSIX ];
+
+
/*
* The_information has to be non-NULL. Otherwise, we couldn't be
* running in a thread of this API and class.
@@ -51,6 +57,31 @@
the_thread->Wait.return_argument = value_ptr;
+ /*
+ * Process join
+ */
+ if ( api->detachstate == PTHREAD_CREATE_JOINABLE ) {
+ unblocked = _Thread_queue_Dequeue( &api->Join_List );
+ if ( unblocked ) {
+ do {
+ *(void **)unblocked->Wait.return_argument = value_ptr;
+ } while ( (unblocked = _Thread_queue_Dequeue( &api->Join_List )) );
+ } else {
+ _Thread_Set_state(
+ the_thread,
+ STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT
+ );
+ _RTEMS_Unlock_allocator();
+ _Thread_Enable_dispatch();
+ /* now waiting for thread to arrive */
+ _RTEMS_Lock_allocator();
+ _Thread_Disable_dispatch();
+ }
+ }
+
+ /*
+ * Now shut down the thread
+ */
_Thread_Close( the_information, the_thread );
_POSIX_Threads_Free( the_thread );
diff -u rtems/cpukit/posix/src/pthreadexit.c:1.10 rtems/cpukit/posix/src/pthreadexit.c:1.10.2.1
--- rtems/cpukit/posix/src/pthreadexit.c:1.10 Thu May 22 15:38:03 2008
+++ rtems/cpukit/posix/src/pthreadexit.c Sun Jul 31 11:16:55 2011
@@ -3,7 +3,7 @@
*
* NOTE: Key destructors are executed in the POSIX api delete extension.
*
- * COPYRIGHT (c) 1989-2008.
+ * COPYRIGHT (c) 1989-2011.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -26,15 +26,21 @@
#include <rtems/score/thread.h>
#include <rtems/posix/pthread.h>
+
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
- Objects_Information *the_information;
+ Objects_Information *the_information;
+ Thread_Control *unblocked;
+ POSIX_API_Control *api;
the_information = _Objects_Get_information_id( the_thread->Object.id );
+ api = the_thread->API_Extensions[ THREAD_API_POSIX ];
+
+
/*
* The_information has to be non-NULL. Otherwise, we couldn't be
* running in a thread of this API and class.
@@ -52,6 +58,31 @@
the_thread->Wait.return_argument = value_ptr;
+ /*
+ * Process join
+ */
+ if ( api->detachstate == PTHREAD_CREATE_JOINABLE ) {
+ unblocked = _Thread_queue_Dequeue( &api->Join_List );
+ if ( unblocked ) {
+ do {
+ *(void **)unblocked->Wait.return_argument = value_ptr;
+ } while ( (unblocked = _Thread_queue_Dequeue( &api->Join_List )) );
+ } else {
+ _Thread_Set_state(
+ the_thread,
+ STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT
+ );
+ _RTEMS_Unlock_allocator();
+ _Thread_Enable_dispatch();
+ /* now waiting for thread to arrive */
+ _RTEMS_Lock_allocator();
+ _Thread_Disable_dispatch();
+ }
+ }
+
+ /*
+ * Now shut down the thread
+ */
_Thread_Close( the_information, the_thread );
_POSIX_Threads_Free( the_thread );
diff -u rtems/cpukit/posix/src/pthreadexit.c:1.12 rtems/cpukit/posix/src/pthreadexit.c:1.12.2.1
--- rtems/cpukit/posix/src/pthreadexit.c:1.12 Mon Nov 30 09:44:21 2009
+++ rtems/cpukit/posix/src/pthreadexit.c Sun Jul 31 11:16:30 2011
@@ -3,7 +3,7 @@
*
* NOTE: Key destructors are executed in the POSIX api delete extension.
*
- * COPYRIGHT (c) 1989-2008.
+ * COPYRIGHT (c) 1989-2011.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -25,15 +25,21 @@
#include <rtems/score/thread.h>
#include <rtems/posix/pthread.h>
+
void _POSIX_Thread_Exit(
Thread_Control *the_thread,
void *value_ptr
)
{
- Objects_Information *the_information;
+ Objects_Information *the_information;
+ Thread_Control *unblocked;
+ POSIX_API_Control *api;
the_information = _Objects_Get_information_id( the_thread->Object.id );
+ api = the_thread->API_Extensions[ THREAD_API_POSIX ];
+
+
/*
* The_information has to be non-NULL. Otherwise, we couldn't be
* running in a thread of this API and class.
@@ -51,6 +57,31 @@
the_thread->Wait.return_argument = value_ptr;
+ /*
+ * Process join
+ */
+ if ( api->detachstate == PTHREAD_CREATE_JOINABLE ) {
+ unblocked = _Thread_queue_Dequeue( &api->Join_List );
+ if ( unblocked ) {
+ do {
+ *(void **)unblocked->Wait.return_argument = value_ptr;
+ } while ( (unblocked = _Thread_queue_Dequeue( &api->Join_List )) );
+ } else {
+ _Thread_Set_state(
+ the_thread,
+ STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT
+ );
+ _RTEMS_Unlock_allocator();
+ _Thread_Enable_dispatch();
+ /* now waiting for thread to arrive */
+ _RTEMS_Lock_allocator();
+ _Thread_Disable_dispatch();
+ }
+ }
+
+ /*
+ * Now shut down the thread
+ */
_Thread_Close( the_information, the_thread );
_POSIX_Threads_Free( the_thread );
diff -u rtems/cpukit/posix/src/pthreadjoin.c:1.11 rtems/cpukit/posix/src/pthreadjoin.c:1.12
--- rtems/cpukit/posix/src/pthreadjoin.c:1.11 Wed Jul 27 12:17:49 2011
+++ rtems/cpukit/posix/src/pthreadjoin.c Sun Jul 31 11:16:00 2011
@@ -52,12 +52,18 @@
* Put ourself on the threads join list
*/
- _Thread_Executing->Wait.return_argument = &return_pointer;
-
- _Thread_queue_Enter_critical_section( &api->Join_List );
-
- _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
-
+ if ( the_thread->current_state ==
+ (STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT) ) {
+ return_pointer = the_thread->Wait.return_argument;
+ _Thread_Clear_state(
+ the_thread,
+ (STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT)
+ );
+ } else {
+ _Thread_Executing->Wait.return_argument = &return_pointer;
+ _Thread_queue_Enter_critical_section( &api->Join_List );
+ _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
+ }
_Thread_Enable_dispatch();
if ( value_ptr )
diff -u rtems/cpukit/posix/src/pthreadjoin.c:1.8.4.1 rtems/cpukit/posix/src/pthreadjoin.c:1.8.4.2
--- rtems/cpukit/posix/src/pthreadjoin.c:1.8.4.1 Tue Mar 8 16:14:56 2011
+++ rtems/cpukit/posix/src/pthreadjoin.c Sun Jul 31 11:16:30 2011
@@ -52,12 +52,18 @@
* Put ourself on the threads join list
*/
- _Thread_Executing->Wait.return_argument = &return_pointer;
-
- _Thread_queue_Enter_critical_section( &api->Join_List );
-
- _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
-
+ if ( the_thread->current_state ==
+ (STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT) ) {
+ return_pointer = the_thread->Wait.return_argument;
+ _Thread_Clear_state(
+ the_thread,
+ (STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT)
+ );
+ } else {
+ _Thread_Executing->Wait.return_argument = &return_pointer;
+ _Thread_queue_Enter_critical_section( &api->Join_List );
+ _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
+ }
_Thread_Enable_dispatch();
if ( value_ptr )
diff -u rtems/cpukit/posix/src/pthreadjoin.c:1.8.2.1 rtems/cpukit/posix/src/pthreadjoin.c:1.8.2.2
--- rtems/cpukit/posix/src/pthreadjoin.c:1.8.2.1 Tue Mar 8 16:15:07 2011
+++ rtems/cpukit/posix/src/pthreadjoin.c Sun Jul 31 11:16:55 2011
@@ -52,12 +52,18 @@
* Put ourself on the threads join list
*/
- _Thread_Executing->Wait.return_argument = &return_pointer;
-
- _Thread_queue_Enter_critical_section( &api->Join_List );
-
- _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
-
+ if ( the_thread->current_state ==
+ (STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT) ) {
+ return_pointer = the_thread->Wait.return_argument;
+ _Thread_Clear_state(
+ the_thread,
+ (STATES_WAITING_FOR_JOIN_AT_EXIT | STATES_TRANSIENT)
+ );
+ } else {
+ _Thread_Executing->Wait.return_argument = &return_pointer;
+ _Thread_queue_Enter_critical_section( &api->Join_List );
+ _Thread_queue_Enqueue( &api->Join_List, WATCHDOG_NO_TIMEOUT );
+ }
_Thread_Enable_dispatch();
if ( value_ptr )
*joel* (on branch rtems-4-9-branch):
2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
PR 1867/cpukit
* Makefile.am, configure.ac, psx12/task.c, psxrwlock01/test.c: Correct
implementation of pthread_exit() and pthread_join() to support the
case where a thread is joinable but calls pthread_exit() before a
thread has attempted to join.
* psx16/.cvsignore, psx16/Makefile.am, psx16/init.c, psx16/psx16.doc,
psx16/psx16.scn: New files.
M 1.125.2.1 testsuites/psxtests/ChangeLog
M 1.32.2.1 testsuites/psxtests/Makefile.am
M 1.31.2.1 testsuites/psxtests/configure.ac
M 1.6.6.1 testsuites/psxtests/psx12/task.c
M 1.1.4.2 testsuites/psxtests/psx16/.cvsignore
M 1.1.4.2 testsuites/psxtests/psx16/Makefile.am
M 1.1.4.2 testsuites/psxtests/psx16/init.c
M 1.1.4.2 testsuites/psxtests/psx16/psx16.doc
M 1.1.4.2 testsuites/psxtests/psx16/psx16.scn
M 1.4.2.1 testsuites/psxtests/psxrwlock01/test.c
diff -u rtems/testsuites/psxtests/ChangeLog:1.125 rtems/testsuites/psxtests/ChangeLog:1.125.2.1
--- rtems/testsuites/psxtests/ChangeLog:1.125 Fri Sep 5 22:33:27 2008
+++ rtems/testsuites/psxtests/ChangeLog Sun Jul 31 11:17:02 2011
@@ -1,4 +1,14 @@
-2008-09-06 Ralf Corsépius <ralf.corsepius at rtems.org>
+2011-07-31 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
+ PR 1867/cpukit
+ * Makefile.am, configure.ac, psx12/task.c, psxrwlock01/test.c: Correct
+ implementation of pthread_exit() and pthread_join() to support the
+ case where a thread is joinable but calls pthread_exit() before a
+ thread has attempted to join.
+ * psx16/.cvsignore, psx16/Makefile.am, psx16/init.c, psx16/psx16.doc,
+ psx16/psx16.scn: New files.
+
+2008-09-06 Ralf Corsépius <ralf.corsepius at rtems.org>
* psxcleanup/psxcleanup.c, psxfatal_support/init.c,
psxfatal_support/system.h: Convert to "bool".
@@ -226,7 +236,7 @@
* psxrwlock01/main.c, psxrwlock01/test.c: Improve rwlock test to
include normal blocking and unblocking on timeout.
-2006-12-02 Ralf Corsépius <ralf.corsepius at rtems.org>
+2006-12-02 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: New BUG-REPORT address.
@@ -260,11 +270,11 @@
* psxsem01/init.c: Make sem_timedwait more conformant to Open Group
specification.
-2006-10-17 Ralf Corsépius <ralf.corsepius at rtems.org>
+2006-10-17 Ralf Corsépius <ralf.corsepius at rtems.org>
* configure.ac: Require autoconf-2.60. Require automake-1.10.
-2006-07-11 Ralf Corsépius <ralf.corsepius at rtems.org>
+2006-07-11 Ralf Corsépius <ralf.corsepius at rtems.org>
* psx01/Makefile.am, psx02/Makefile.am, psx03/Makefile.am,
psx04/Makefile.am, psx05/Makefile.am, psx06/Makefile.am,
@@ -450,7 +460,7 @@
* psxfile01/test.c, psxmsgq01/init.c, psxstat/test.c,
psxtimer/psxtimer.c: Eliminate warnings and typos.
-2004-02-26 Sébastien Barré <sbarre at sdelcc.com>
+2004-02-26 Sébastien Barré <sbarre at sdelcc.com>
PR 582/core
* psxmsgq01/init.c, psxmsgq01/psxmsgq01.scn: Fix the POSIX message
diff -u rtems/testsuites/psxtests/Makefile.am:1.32 rtems/testsuites/psxtests/Makefile.am:1.32.2.1
--- rtems/testsuites/psxtests/Makefile.am:1.32 Mon Feb 4 13:39:43 2008
+++ rtems/testsuites/psxtests/Makefile.am Sun Jul 31 11:17:02 2011
@@ -5,9 +5,9 @@
ACLOCAL_AMFLAGS = -I ../aclocal
SUBDIRS = psxhdrs psx01 psx02 psx03 psx04 psx05 psx06 psx07 psx08 psx09 \
- psx10 psx11 psx12 psx13 psx14 psxcleanup psxtime psxtimer01 psxtimer02 \
- psxcancel psxbarrier01 psxmsgq01 psxmsgq02 psxrwlock01 psxsem01 \
- psxspin01 psxenosys psxsignal01 psxsysconf psxualarm psxkey01 \
+ psx10 psx11 psx12 psx13 psx14 psx16 psxcleanup psxtime psxtimer01 \
+ psxtimer02 psxcancel psxbarrier01 psxmsgq01 psxmsgq02 psxrwlock01
+ psxsem01 psxspin01 psxenosys psxsignal01 psxsysconf psxualarm psxkey01 \
psxfatal01 psxfatal02
## File IO tests
diff -u rtems/testsuites/psxtests/configure.ac:1.31 rtems/testsuites/psxtests/configure.ac:1.31.2.1
--- rtems/testsuites/psxtests/configure.ac:1.31 Mon Feb 4 13:39:43 2008
+++ rtems/testsuites/psxtests/configure.ac Sun Jul 31 11:17:02 2011
@@ -41,6 +41,7 @@
psx12/Makefile
psx13/Makefile
psx14/Makefile
+psx16/Makefile
psxbarrier01/Makefile
psxcancel/Makefile
psxchroot01/Makefile
diff -u rtems/testsuites/psxtests/psx12/task.c:1.6 rtems/testsuites/psxtests/psx12/task.c:1.6.6.1
--- rtems/testsuites/psxtests/psx12/task.c:1.6 Thu Sep 4 13:53:38 2003
+++ rtems/testsuites/psxtests/psx12/task.c Sun Jul 31 11:17:02 2011
@@ -26,6 +26,11 @@
void *argument
)
{
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "Task_1: exitting" );
pthread_exit( NULL );
diff -u /dev/null rtems/testsuites/psxtests/psx16/.cvsignore:1.1.4.2
--- /dev/null Sun Jul 31 12:11:31 2011
+++ rtems/testsuites/psxtests/psx16/.cvsignore Sun Jul 31 11:17:02 2011
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff -u /dev/null rtems/testsuites/psxtests/psx16/Makefile.am:1.1.4.2
--- /dev/null Sun Jul 31 12:11:31 2011
+++ rtems/testsuites/psxtests/psx16/Makefile.am Sun Jul 31 11:17:02 2011
@@ -0,0 +1,25 @@
+##
+## $Id$
+##
+
+rtems_tests_PROGRAMS = psx16
+psx16_SOURCES = init.c
+
+dist_rtems_tests_DATA = psx16.scn
+dist_rtems_tests_DATA += psx16.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(psx16_OBJECTS) $(psx16_LDADD)
+LINK_LIBS = $(psx16_LDLIBS)
+
+psx16$(EXEEXT): $(psx16_OBJECTS) $(psx16_DEPENDENCIES)
+ @rm -f psx16$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff -u /dev/null rtems/testsuites/psxtests/psx16/init.c:1.1.4.2
--- /dev/null Sun Jul 31 12:11:31 2011
+++ rtems/testsuites/psxtests/psx16/init.c Sun Jul 31 11:17:02 2011
@@ -0,0 +1,78 @@
+/*
+ * COPYRIGHT (c) 1989-2011.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <tmacros.h>
+#include "test_support.h"
+#include <pthread.h>
+
+int Index;
+
+void *TestThread(
+ void *argument
+)
+{
+ int *index = (int *)argument;
+
+ *index = 7;
+
+ puts( "TestThread exiting" );
+ return argument;
+}
+
+void *POSIX_Init(
+ rtems_task_argument argument
+)
+{
+ int status;
+ pthread_t id;
+ pthread_attr_t attr;
+ void *join_return;
+
+ puts( "\n\n*** POSIX TEST PSX16 ***" );
+
+ Index = 5;
+
+ /* Initialize and set thread detached attribute */
+ pthread_attr_init(&attr);
+ pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+
+ puts( "Creating TestThread" );
+ status = pthread_create( &id, &attr, TestThread, (void *)&Index );
+ rtems_test_assert( status == 0 );
+
+ /* let test thread run and exit */
+ puts( "Let TestThread run and exit before we attempt to join" );
+ sleep( 2 );
+
+ join_return = NULL;
+ status = pthread_join( id, &join_return );
+ rtems_test_assert( status == 0 );
+ rtems_test_assert( join_return == &Index );
+ rtems_test_assert( *(int *)join_return == 7 );
+ puts( "Successfully joined with TestThread" );
+
+ puts( "*** END OF POSIX TEST PSX16 ***" );
+
+ rtems_test_exit(0);
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_POSIX_THREADS 2
+
+#define CONFIGURE_POSIX_INIT_THREAD_TABLE
+
+#define CONFIGURE_INIT
+#include <rtems/confdefs.h>
+/* end of file */
diff -u /dev/null rtems/testsuites/psxtests/psx16/psx16.doc:1.1.4.2
--- /dev/null Sun Jul 31 12:11:31 2011
+++ rtems/testsuites/psxtests/psx16/psx16.doc Sun Jul 31 11:17:02 2011
@@ -0,0 +1,24 @@
+#
+# $Id$
+#
+# COPYRIGHT (c) 1989-2011.
+# On-Line Applications Research Corporation (OAR).
+#
+# The license and distribution terms for this file may be
+# found in the file LICENSE in this distribution or at
+# http://www.rtems.com/license/LICENSE.
+#
+
+This file describes the directives and concepts tested by this test set.
+
+test set name: psx16
+
+directives:
+
+ pthread_join
+ pthread_exit
+
+concepts:
+
++ Ensure that if a joinable thread exits before it has been joined,
+that it waits for a thread to call pthread_join.
diff -u /dev/null rtems/testsuites/psxtests/psx16/psx16.scn:1.1.4.2
--- /dev/null Sun Jul 31 12:11:32 2011
+++ rtems/testsuites/psxtests/psx16/psx16.scn Sun Jul 31 11:17:02 2011
@@ -0,0 +1,6 @@
+*** POSIX TEST PSX16 ***
+Creating TestThread
+Let TestThread run and exit before we attempt to join
+TestThread exiting
+Successfully joined with TestThread
+*** END OF POSIX TEST PSX16 ***
diff -u rtems/testsuites/psxtests/psxrwlock01/test.c:1.4 rtems/testsuites/psxtests/psxrwlock01/test.c:1.4.2.1
--- rtems/testsuites/psxtests/psxrwlock01/test.c:1.4 Fri Aug 15 11:30:01 2008
+++ rtems/testsuites/psxtests/psxrwlock01/test.c Sun Jul 31 11:17:02 2011
@@ -30,6 +30,11 @@
{
int status;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "ReadThread - pthread_rwlock_rdlock(RWLock) blocking -- OK" );
status = pthread_rwlock_rdlock(&RWLock);
assert( !status );
@@ -47,6 +52,11 @@
{
int status;
+ /*
+ * Detach ourselves so we don't wait for a join that won't happen.
+ */
+ pthread_detach( pthread_self() );
+
puts( "WriteThread - pthread_rwlock_wrlock(RWLock) blocking -- OK" );
status = pthread_rwlock_wrlock(&RWLock);
assert( !status );
--
Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20110731/0b4ebca1/attachment-0001.html>
More information about the vc
mailing list