diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-10-04 15:53:45 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2010-10-04 15:53:45 +0000 |
commit | 6baf5a5bc318a8eac731dc538393f1093aca45ef (patch) | |
tree | 440439886f2dbf6284564e1226b088115f2723ca /testsuites/psxtests/psx07 | |
parent | *** empty log message *** (diff) | |
download | rtems-6baf5a5bc318a8eac731dc538393f1093aca45ef.tar.bz2 |
2010-10-04 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac, psx07/init.c, psx07/psx07.scn,
psxhdrs/Makefile.am, psxstack01/init.c: Add pthread_attr_getstack,
pthread_attr_setstack, pthread_attr_getguardsize, and
pthread_attr_setguardsize.
* psxstack02/.cvsignore, psxstack02/Makefile.am, psxstack02/init.c,
psxstack02/psxstack02.doc, psxstack02/psxstack02.scn: New files.
Diffstat (limited to 'testsuites/psxtests/psx07')
-rw-r--r-- | testsuites/psxtests/psx07/init.c | 89 | ||||
-rw-r--r-- | testsuites/psxtests/psx07/psx07.scn | 31 |
2 files changed, 111 insertions, 9 deletions
diff --git a/testsuites/psxtests/psx07/init.c b/testsuites/psxtests/psx07/init.c index 73719ddbba..6533f208ba 100644 --- a/testsuites/psxtests/psx07/init.c +++ b/testsuites/psxtests/psx07/init.c @@ -63,6 +63,7 @@ void *POSIX_Init( int inheritsched; int schedpolicy; size_t stacksize; + size_t guardsize; void *stackaddr; int detachstate; struct sched_param schedparam; @@ -127,10 +128,12 @@ void *POSIX_Init( status = pthread_attr_init( &attr ); posix_service_failed( status, "pthread_attr_init"); +#if HAVE_DECL_PTHREAD_ATTR_SETSTACKADDR attr.stacksize = rtems_configuration_get_work_space_size() * 10; puts( "Init - pthread_create - EAGAIN (stacksize too large)" ); status = pthread_create( &Task_id, &attr, Task_1, NULL ); fatal_directive_check_status_only( status, EAGAIN, "stacksize too large" ); +#endif status = pthread_attr_init( &attr ); posix_service_failed( status, "pthread_attr_init"); @@ -373,7 +376,6 @@ void *POSIX_Init( printf( "Init - current stack size attribute is OK\n" ); /* exercise get and set stack address */ - empty_line(); puts( "Init - pthread_attr_setstackaddr - EINVAL (NULL attr)" ); @@ -381,14 +383,14 @@ void *POSIX_Init( fatal_directive_check_status_only( status, EINVAL, "NULL attr" ); puts( "Init - pthread_attr_setstackaddr - EINVAL (not initialized attr)" ); - status = - pthread_attr_setstackaddr( &destroyed_attr, NULL ); + status = pthread_attr_setstackaddr( &destroyed_attr, NULL ); fatal_directive_check_status_only( status, EINVAL, "not initialized attr" ); puts( "Init - pthread_attr_setstackaddr - SUCCESSFUL" ); status = pthread_attr_setstackaddr( &attr, 0 ); posix_service_failed( status, ""); + /* get stack addr */ puts( "Init - pthread_attr_getstackaddr - EINVAL (NULL attr)" ); status = pthread_attr_getstackaddr( NULL, &stackaddr ); fatal_directive_check_status_only( status, EINVAL, "NULL attr" ); @@ -406,8 +408,89 @@ void *POSIX_Init( posix_service_failed( status, "pthread_attr_getstackaddr"); printf( "Init - current stack address attribute = %p\n", stackaddr ); + /* exercise get and set stack (as pair) */ + empty_line(); + +#if HAVE_DECL_PTHREAD_ATTR_SETSTACK + puts( "Init - pthread_attr_setstack- EINVAL (NULL attr)" ); + status = pthread_attr_setstack( NULL, &stackaddr, 1024 ); + fatal_directive_check_status_only( status, EINVAL, "NULL attr" ); + + puts( "Init - pthread_attr_setstack- EINVAL (destroyed attr)" ); + status = pthread_attr_setstack( &destroyed_attr, &stackaddr, 1024 ); + fatal_directive_check_status_only( status, EINVAL, "NULL attr" ); + + puts( "Init - pthread_attr_setstack- SUCCESSFUL (< min stack)" ); + status = pthread_attr_setstack( &attr, stackaddr, 0 ); + posix_service_failed( status, "OK"); + + puts( "Init - pthread_attr_setstack- SUCCESSFUL (big stack)" ); + status = pthread_attr_setstack( &attr, stackaddr, STACK_MINIMUM_SIZE * 2 ); + posix_service_failed( status, "OK"); +#endif + +#if HAVE_DECL_PTHREAD_ATTR_GETSTACK + puts( "Init - pthread_attr_getstack- EINVAL (NULL attr)" ); + status = pthread_attr_getstack( NULL, &stackaddr, &stacksize ); + fatal_directive_check_status_only( status, EINVAL, "NULL attr" ); + + puts( "Init - pthread_attr_getstack- EINVAL (destroyed attr)" ); + status = pthread_attr_getstack( &destroyed_attr, &stackaddr, &stacksize ); + fatal_directive_check_status_only( status, EINVAL, "&destroyed attr" ); + + puts( "Init - pthread_attr_getstack- EINVAL (NULL stack)" ); + status = pthread_attr_getstack( &attr, NULL, &stacksize ); + fatal_directive_check_status_only( status, EINVAL, "&NULL stack" ); + + puts( "Init - pthread_attr_getstack- EINVAL (NULL stacksize)" ); + status = pthread_attr_getstack( &attr, &stackaddr, NULL ); + fatal_directive_check_status_only( status, EINVAL, "&NULL size" ); + + puts( "Init - pthread_attr_getstack- SUCCESSFUL" ); + status = pthread_attr_getstack( &attr, &stackaddr, &stacksize ); + posix_service_failed( status, "pthread_attr_getstack"); +#endif + /* exercise get and set detach state */ + empty_line(); + +#if HAVE_DECL_PTHREAD_ATTR_SETGUARDSIZE + puts( "Init - pthread_attr_setguardsize - EINVAL (NULL attr)" ); + status = pthread_attr_setguardsize( NULL, 0 ); + fatal_directive_check_status_only( status, EINVAL, "NULL attr" ); + + puts( "Init - pthread_attr_setguardsize - EINVAL (not initialized attr)" ); + status = pthread_attr_setguardsize( &destroyed_attr, 0 ); + fatal_directive_check_status_only( status, EINVAL, "not initialized attr" ); + + puts( "Init - pthread_attr_setguardsize - SUCCESSFUL (low guardsize)" ); + status = pthread_attr_setguardsize( &attr, 0 ); + posix_service_failed( status, "pthread_attr_setguardsize"); + + puts( "Init - pthread_attr_setguardsize - SUCCESSFUL (high guardsize)" ); + status = pthread_attr_setguardsize( &attr, STACK_MINIMUM_SIZE * 2 ); + posix_service_failed( status, ""); +#endif + +#if HAVE_DECL_PTHREAD_ATTR_GETGUARDSIZE + puts( "Init - pthread_attr_getguardsize - EINVAL (NULL attr)" ); + status = pthread_attr_getguardsize( NULL, &guardsize ); + fatal_directive_check_status_only( status, EINVAL, "NULL attr" ); + puts( "Init - pthread_attr_getguardsize - EINVAL (NULL guardsize)" ); + status = pthread_attr_getguardsize( &attr, NULL ); + fatal_directive_check_status_only( status, EINVAL, "NULL guardsize" ); + + puts( "Init - pthread_attr_getguardsize - EINVAL (not initialized attr)" ); + status = pthread_attr_getguardsize( &destroyed_attr, &guardsize ); + fatal_directive_check_status_only( status, EINVAL, "not initialized attr" ); + + puts( "Init - pthread_attr_getguardsize - SUCCESSFUL" ); + status = pthread_attr_getguardsize( &attr, &guardsize ); + posix_service_failed( status, "pthread_attr_getguardsize"); +#endif + + /* exercise get and set detach state */ empty_line(); puts( "Init - pthread_attr_setdetachstate - EINVAL (NULL attr)" ); diff --git a/testsuites/psxtests/psx07/psx07.scn b/testsuites/psxtests/psx07/psx07.scn index b66a2fb612..9a21fc3204 100644 --- a/testsuites/psxtests/psx07/psx07.scn +++ b/testsuites/psxtests/psx07/psx07.scn @@ -71,6 +71,25 @@ Init - pthread_attr_getstackaddr - EINVAL (not initialized attr) Init - pthread_attr_getstackaddr - SUCCESSFUL Init - current stack address attribute = 0x0 +Init - pthread_attr_setstack- EINVAL (NULL attr) +Init - pthread_attr_setstack- EINVAL (destroyed attr) +Init - pthread_attr_setstack- SUCCESSFUL (< min stack) +Init - pthread_attr_setstack- SUCCESSFUL (big stack) +Init - pthread_attr_getstack- EINVAL (NULL attr) +Init - pthread_attr_getstack- EINVAL (destroyed attr) +Init - pthread_attr_getstack- EINVAL (NULL stack) +Init - pthread_attr_getstack- EINVAL (NULL stacksize) +Init - pthread_attr_getstack- SUCCESSFUL + +Init - pthread_attr_setguardsize - EINVAL (NULL attr) +Init - pthread_attr_setguardsize - EINVAL (not initialized attr) +Init - pthread_attr_setguardsize - SUCCESSFUL (low guardsize) +Init - pthread_attr_setguardsize - SUCCESSFUL (high guardsize) +Init - pthread_attr_getguardsize - EINVAL (NULL attr) +Init - pthread_attr_getguardsize - EINVAL (NULL guardsize) +Init - pthread_attr_getguardsize - EINVAL (not initialized attr) +Init - pthread_attr_getguardsize - SUCCESSFUL + Init - pthread_attr_setdetachstate - EINVAL (NULL attr) Init - pthread_attr_setdetachstate - EINVAL (not initialized attr) Init - pthread_attr_setdetachstate - EINVAL (invalid detachstate) @@ -83,9 +102,9 @@ Init - current detach state attribute = 1 Init - pthread_attr_getschedparam - SUCCESSFUL Init - sched priority = 2 -Init - ss_low_priority = 0 -Init - ss_replenish_period = (0, 0) -Init - ss_initial_budget = (0, 0) +Init - sched_ss_low_priority = 0 +Init - sched_ss_replenish_period = (0, 0) +Init - sched_sched_ss_initial_budget = (0, 0) Init - pthread_attr_setschedparam - EINVAL (NULL attr) Init - pthread_attr_setschedparam - EINVAL (not initialized attr) Init - pthread_attr_setschedparam - EINVAL (NULL schedparam) @@ -100,9 +119,9 @@ Init - pthread_getschedparam - ESRCH (bad thread) Init - pthread_getschedparam - SUCCESSFUL Init - policy = 1 Init - sched priority = 2 -Init - ss_low_priority = 0 -Init - ss_replenish_period = (0, 0) -Init - ss_initial_budget = (0, 0) +Init - sched_ss_low_priority = 0 +Init - sched_ss_replenish_period = (0, 0) +Init - sched_sched_ss_initial_budget = (0, 0) Init - pthread_setschedparam - EINVAL (NULL schedparam) Init - pthread_setschedparam - EINVAL (invalid priority) |