diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-08-08 16:28:24 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1996-08-08 16:28:24 +0000 |
commit | 644c0fa6184bafa0ca8cd560ce9b5b4224863ee6 (patch) | |
tree | 41aec637559fa46505bc90895ed29b824769dffb /c/src/tests/psxtests/psx01/task.c | |
parent | _MPCI_Register_packet_processor: changed protoype first parameter type to MP_... (diff) | |
download | rtems-644c0fa6184bafa0ca8cd560ce9b5b4224863ee6.tar.bz2 |
added complete test cases for pthread_once.
Diffstat (limited to '')
-rw-r--r-- | c/src/tests/psxtests/psx01/task.c | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/c/src/tests/psxtests/psx01/task.c b/c/src/tests/psxtests/psx01/task.c index 4ff3d8e450..d9ee2e781a 100644 --- a/c/src/tests/psxtests/psx01/task.c +++ b/c/src/tests/psxtests/psx01/task.c @@ -21,36 +21,63 @@ #include "system.h" +void Test_init_routine( void ) +{ + puts( "Test_init_routine: invoked" ); +} + + void *Task_1_through_3( void *argument ) { int status; + pthread_once_t once = PTHREAD_ONCE_INIT; - /* XXX temporary */ + empty_line(); /* get id of this thread */ Task_id = pthread_self(); - printf( "Task's ID is 0x%08x\n", Task_id ); + printf( "Task_1: ID is 0x%08x\n", Task_id ); + + /* exercise pthread_equal */ status = pthread_equal( Task_id, Task_id ); if ( status ) - puts( "pthread_equal match case passed" ); + puts( "Task_1: pthread_equal match case passed" ); assert( status ); status = pthread_equal( Init_id, Task_id ); if ( !status ) - puts( "pthread_equal different case passed" ); + puts( "Task_1: pthread_equal different case passed" ); assert( !status ); - puts( "pthread_equal first id bad" ); + puts( "Task_1: pthread_equal first id bad" ); status = pthread_equal( -1, Task_id ); - assert( status == 0); + assert( !status ); - puts( "pthread_equal second id bad" ); + puts( "Task_1: pthread_equal second id bad" ); status = pthread_equal( Init_id, -1 ); - assert( status == 0); + assert( !status ); + + /* exercise pthread_once */ + + puts( "Task_1: pthread_once - EINVAL (NULL once_control)" ); + status = pthread_once( NULL, Test_init_routine ); + assert( status == EINVAL ); + + puts( "Task_1: pthread_once - EINVAL (NULL init_routine)" ); + status = pthread_once( &once, NULL ); + assert( status == EINVAL ); + + puts( "Task_1: pthread_once - SUCCESSFUL (init_routine executes)" ); + status = pthread_once( &once, Test_init_routine ); + assert( !status ); + + puts( "Task_1: pthread_once - SUCCESSFUL (init_routine does not execute)" ); + status = pthread_once( &once, Test_init_routine ); + assert( !status ); puts( "*** END OF POSIX TEST 1 ***" ); exit( 0 ); |