From 76de65b3715ff4f953faa0beda6f5e1d66a0ff0c Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 8 Aug 1996 21:46:40 +0000 Subject: added cases to increase coverage of pthread_create. cases added tested error paths as well as inherit scheduling attributes. --- testsuites/psxtests/psx07/init.c | 59 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'testsuites/psxtests/psx07/init.c') diff --git a/testsuites/psxtests/psx07/init.c b/testsuites/psxtests/psx07/init.c index 62dbe76cce..e46331d34f 100644 --- a/testsuites/psxtests/psx07/init.c +++ b/testsuites/psxtests/psx07/init.c @@ -84,10 +84,69 @@ void *POSIX_Init( status = pthread_attr_destroy( &destroyed_attr ); assert( status == EINVAL ); + /* check some errors in pthread_create */ + + puts( "Init: pthread_create - EINVAL (attr not initialized)" ); + status = pthread_create( &Task_id, &destroyed_attr, Task_1, NULL ); + assert( status == EINVAL ); + + /* junk stack address */ + status = pthread_attr_setstackaddr( &attr, (void *)&schedparam ); + assert( !status ); + + /* must go around pthread_attr_setstacksize to set a bad stack size */ + attr.stacksize = 0; + + puts( "Init: pthread_create - EINVAL (stacksize too small)" ); + status = pthread_create( &Task_id, &attr, Task_1, NULL ); + assert( status == EINVAL ); + + status = pthread_attr_init( &attr ); + assert( !status ); + + /* must go around pthread_attr_set routines to set a bad value */ + attr.inheritsched = -1; + + puts( "Init: pthread_create - EINVAL (invalid inherit scheduler)" ); + status = pthread_create( &Task_id, &attr, Task_1, NULL ); + assert( status == EINVAL ); + + /* check out the error case for system scope not supported */ + + status = pthread_attr_init( &attr ); + assert( !status ); + + /* must go around pthread_attr_set routines to set a bad value */ + attr.contentionscope = PTHREAD_SCOPE_SYSTEM; + + puts( "Init: pthread_create - ENOSYS (unsupported system contention scope)" ); + status = pthread_create( &Task_id, &attr, Task_1, NULL ); + assert( status == ENOSYS ); + + status = pthread_attr_init( &attr ); + assert( !status ); + + /* now check out pthread_create for inherit scheduler */ + + status = pthread_attr_setinheritsched( &attr, PTHREAD_INHERIT_SCHED ); + assert( !status ); + + puts( "Init: pthread_create - SUCCESSFUL (inherit scheduler)" ); + status = pthread_create( &Task_id, &attr, Task_1, NULL ); + assert( !status ); + + status = pthread_join( Task_id, NULL ); + assert( !status ); + + /* switch to Task_1 */ + /* exercise get and set scope */ empty_line(); + status = pthread_attr_init( &attr ); + assert( !status ); + puts( "Init: pthread_attr_setscope - EINVAL (NULL attr)" ); status = pthread_attr_setscope( NULL, PTHREAD_SCOPE_PROCESS ); assert( status == EINVAL ); -- cgit v1.2.3