diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-10-04 19:41:34 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-10-04 19:41:34 +0000 |
commit | 7d9632183419c75b6606cf5d7da429a1279c6493 (patch) | |
tree | 4b2a053915155d5deb85662bdba6ea4ed970f253 /c/src/tests/psxtests/psx08/task3.c | |
parent | Patch from Ralf Corsepius <corsepiu@faw.uni-ulm.de> to make fix bug (diff) | |
download | rtems-7d9632183419c75b6606cf5d7da429a1279c6493.tar.bz2 |
Modifications necessary to support testing of exitting a pthread from
Charles-Antione Gauthier <charles.gauthier@iit.nrc.ca>.
Diffstat (limited to '')
-rw-r--r-- | c/src/tests/psxtests/psx08/task3.c (renamed from c/src/tests/psxtests/psx08/task.c) | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/c/src/tests/psxtests/psx08/task.c b/c/src/tests/psxtests/psx08/task3.c index 555b0efeb5..ac8385747a 100644 --- a/c/src/tests/psxtests/psx08/task.c +++ b/c/src/tests/psxtests/psx08/task3.c @@ -1,4 +1,4 @@ -/* Task_1 +/* Task_3 * * This routine serves as a test task. It verifies the basic task * switching capabilities of the executive. @@ -22,35 +22,31 @@ #include "system.h" #include <errno.h> -void *Task_1( +void *Task_3( void *argument ) { int status; + void *return_pointer; - puts( "Task_1: sleep 1 second" ); - - sleep( 1 ); - - /* switch to task 2 */ - - puts( "Task_1: join to detached task (Init) -- EINVAL" ); - status = pthread_join( Init_id, NULL ); - if ( status != EINVAL ) - printf( "status = %d\n", status ); - assert( status == EINVAL ); - - puts( "Task_1: join to self task (Init) -- EDEADLK" ); - status = pthread_join( pthread_self(), NULL ); - if ( status != EDEADLK ) + puts( "Task_3: join to Task_2" ); + status = pthread_join( Task2_id, &return_pointer ); + puts( "Task_3: returned from pthread_join" ); + if ( status ) printf( "status = %d\n", status ); - assert( status == EDEADLK ); - - puts( "Task_1: exitting" ); - - pthread_exit( &Task_id ); - - /* switch to init task */ + assert( !status ); + + if ( return_pointer == &Task2_id ) + puts( "Task_3: pthread_join returned correct pointer" ); + else + printf( + "Task_3: pthread_join returned incorrect pointer (%p != %p)\n", + return_pointer, + &Task2_id + ); + + puts( "*** END OF POSIX TEST 8 ***" ); + exit( 0 ); return NULL; /* just so the compiler thinks we returned something */ } |