From af9115f35cfb3d0adeb3e105fd608883596f2637 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 6 Oct 2017 10:07:38 +0200 Subject: posix: Simplify POSIX_API_Control Return stack area via pthread_getattr_np(). Simplify * pthread_attr_setaffinity_np(), and * pthread_attr_getaffinity_np() and let the scheduler do the more sophisticated error checks. Make * pthread_setaffinity_np(), * pthread_getaffinity_np(), * pthread_attr_setaffinity_np(), and * pthread_attr_getaffinity_np() available in all configurations. Update #2514. Close #3145. Close #3168. --- cpukit/posix/Makefile.am | 12 ++--- cpukit/posix/include/rtems/posix/pthreadimpl.h | 4 +- cpukit/posix/include/rtems/posix/threadsup.h | 10 +++- cpukit/posix/preinstall.am | 2 - cpukit/posix/src/pthread.c | 13 +++--- cpukit/posix/src/pthreadattrcompare.c | 5 +- cpukit/posix/src/pthreadattrgetaffinitynp.c | 14 ++---- cpukit/posix/src/pthreadattrsetaffinitynp.c | 16 ++----- cpukit/posix/src/pthreadcreate.c | 5 +- cpukit/posix/src/pthreadgetaffinitynp.c | 2 - cpukit/posix/src/pthreadgetattrnp.c | 31 ++++++++++++- cpukit/posix/src/pthreadgetschedparam.c | 4 +- cpukit/posix/src/pthreadsetaffinitynp.c | 9 ---- cpukit/posix/src/pthreadsetschedparam.c | 4 +- testsuites/psxtests/psxgetattrnp01/init.c | 33 ++++++++++++++ .../psxtests/psxgetattrnp01/psxgetattrnp01.scn | 9 +++- testsuites/smptests/smppsxaffinity01/init.c | 53 ++++++++++++---------- .../smptests/smppsxaffinity01/smppsxaffinity01.scn | 16 +++---- 18 files changed, 151 insertions(+), 91 deletions(-) diff --git a/cpukit/posix/Makefile.am b/cpukit/posix/Makefile.am index a4ce099752..627030bcb4 100644 --- a/cpukit/posix/Makefile.am +++ b/cpukit/posix/Makefile.am @@ -89,6 +89,11 @@ libposix_a_SOURCES += src/mutexattrdestroy.c src/mutexattrgetprioceiling.c \ src/mutexlocksupp.c src/mutexsetprioceiling.c src/mutextimedlock.c \ src/mutextrylock.c src/mutexunlock.c +## PTHREAD_AFFINITY_C_FILES +libposix_a_SOURCES += src/pthreadattrsetaffinitynp.c \ + src/pthreadattrgetaffinitynp.c src/pthreadgetaffinitynp.c \ + src/pthreadsetaffinitynp.c + if HAS_PTHREADS libposix_a_SOURCES += src/pthreadatfork.c @@ -148,13 +153,6 @@ libposix_a_SOURCES += src/pthreadsetschedprio.c ## RTEMS specific support methods libposix_a_SOURCES += src/pthreadattrcompare.c -if HAS_SMP -## PTHREAD_AFFINITY_C_FILES -libposix_a_SOURCES += src/pthreadattrsetaffinitynp.c \ - src/pthreadattrgetaffinitynp.c src/pthreadgetaffinitynp.c \ - src/pthreadsetaffinitynp.c -endif - ## PSIGNAL_C_FILES libposix_a_SOURCES += src/psignal.c src/alarm.c src/kill.c src/killinfo.c \ src/kill_r.c src/pause.c src/psignalclearprocesssignals.c \ diff --git a/cpukit/posix/include/rtems/posix/pthreadimpl.h b/cpukit/posix/include/rtems/posix/pthreadimpl.h index 90a60b6c4d..290fbad02e 100644 --- a/cpukit/posix/include/rtems/posix/pthreadimpl.h +++ b/cpukit/posix/include/rtems/posix/pthreadimpl.h @@ -59,12 +59,12 @@ RTEMS_INLINE_ROUTINE void _POSIX_Threads_Sporadic_timer_insert( ) { the_thread->cpu_time_budget = - _Timespec_To_ticks( &api->Attributes.schedparam.sched_ss_init_budget ); + _Timespec_To_ticks( &api->schedparam.sched_ss_init_budget ); _Watchdog_Per_CPU_insert_relative( &api->Sporadic.Timer, _Per_CPU_Get(), - _Timespec_To_ticks( &api->Attributes.schedparam.sched_ss_repl_period ) + _Timespec_To_ticks( &api->schedparam.sched_ss_repl_period ) ); } diff --git a/cpukit/posix/include/rtems/posix/threadsup.h b/cpukit/posix/include/rtems/posix/threadsup.h index 3bb2210d97..cc250f7464 100644 --- a/cpukit/posix/include/rtems/posix/threadsup.h +++ b/cpukit/posix/include/rtems/posix/threadsup.h @@ -43,8 +43,14 @@ typedef struct { /** Back pointer to thread of this POSIX API control. */ Thread_Control *thread; - /** This is the POSIX threads attribute set. */ - pthread_attr_t Attributes; + /** Created with explicit or inherited scheduler. */ + bool created_with_explicit_scheduler; + + /** The scheduler policy. */ + int schedpolicy; + + /** The scheduler parameters */ + struct sched_param schedparam; /** * @brief Control block for the sporadic server scheduling policy. diff --git a/cpukit/posix/preinstall.am b/cpukit/posix/preinstall.am index c3ce5e5aa9..157be567c2 100644 --- a/cpukit/posix/preinstall.am +++ b/cpukit/posix/preinstall.am @@ -140,5 +140,3 @@ $(PROJECT_INCLUDE)/rtems/posix/timerimpl.h: include/rtems/posix/timerimpl.h $(PR $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/posix/timerimpl.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/posix/timerimpl.h endif -if HAS_PTHREADS -endif diff --git a/cpukit/posix/src/pthread.c b/cpukit/posix/src/pthread.c index edbfa13121..1d791df7eb 100644 --- a/cpukit/posix/src/pthread.c +++ b/cpukit/posix/src/pthread.c @@ -75,9 +75,11 @@ pthread_attr_t _POSIX_Threads_Default_attributes = { .cputime_clock_allowed = 1, /* cputime_clock_allowed */ #endif .detachstate = PTHREAD_CREATE_JOINABLE, /* detachstate */ - .affinitysetsize = 0, - .affinityset = NULL, - .affinitysetpreallocated = {{0x0}} + .affinitysetsize = + sizeof( _POSIX_Threads_Default_attributes.affinitysetpreallocated ), + .affinityset = + &_POSIX_Threads_Default_attributes.affinitysetpreallocated, + .affinitysetpreallocated = {{0x1}} }; void _POSIX_Threads_Sporadic_timer( Watchdog_Control *watchdog ) @@ -166,8 +168,7 @@ static bool _POSIX_Threads_Create_extension( /* XXX check all fields are touched */ api->thread = created; - _POSIX_Threads_Initialize_attributes( &api->Attributes ); - api->Attributes.schedparam.sched_priority = _POSIX_Priority_From_core( + api->schedparam.sched_priority = _POSIX_Priority_From_core( _Thread_Scheduler_get_home( created ), _Thread_Get_priority( created ) ); @@ -203,7 +204,7 @@ static void _POSIX_Threads_Terminate_extension( Thread_Control *executing ) _Thread_State_acquire( executing, &lock_context ); - if ( api->Attributes.schedpolicy == SCHED_SPORADIC ) { + if ( api->schedpolicy == SCHED_SPORADIC ) { _Watchdog_Per_CPU_remove_relative( &api->Sporadic.Timer ); } diff --git a/cpukit/posix/src/pthreadattrcompare.c b/cpukit/posix/src/pthreadattrcompare.c index 6a3b625be1..26ab28db33 100644 --- a/cpukit/posix/src/pthreadattrcompare.c +++ b/cpukit/posix/src/pthreadattrcompare.c @@ -32,7 +32,10 @@ int rtems_pthread_attribute_compare( if ( attr1->is_initialized != attr2->is_initialized ) return 1; - if ( attr1->stackaddr != attr2->stackaddr ) + if ( + attr1->stackaddr != NULL && + attr2->stackaddr != NULL && + attr1->stackaddr != attr2->stackaddr ) return 1; if ( attr1->stacksize != attr2->stacksize ) diff --git a/cpukit/posix/src/pthreadattrgetaffinitynp.c b/cpukit/posix/src/pthreadattrgetaffinitynp.c index 6ed50507be..b281b11e5f 100644 --- a/cpukit/posix/src/pthreadattrgetaffinitynp.c +++ b/cpukit/posix/src/pthreadattrgetaffinitynp.c @@ -24,23 +24,19 @@ #include #include -#include -#include -#include - int pthread_attr_getaffinity_np( const pthread_attr_t *attr, size_t cpusetsize, cpu_set_t *cpuset ) { - if ( !cpuset ) - return EFAULT; - if ( !attr ) - return EFAULT; + if ( attr == NULL || !attr->is_initialized ) { + return EINVAL; + } - if ( cpusetsize != attr->affinitysetsize) + if ( cpuset == NULL || cpusetsize != attr->affinitysetsize ) { return EINVAL; + } CPU_COPY( attr->affinityset, cpuset ); return 0; diff --git a/cpukit/posix/src/pthreadattrsetaffinitynp.c b/cpukit/posix/src/pthreadattrsetaffinitynp.c index e5462ec5c4..0e3c828c38 100644 --- a/cpukit/posix/src/pthreadattrsetaffinitynp.c +++ b/cpukit/posix/src/pthreadattrsetaffinitynp.c @@ -24,27 +24,21 @@ #include #include -#include -#include -#include -#include - int pthread_attr_setaffinity_np( pthread_attr_t *attr, size_t cpusetsize, const cpu_set_t *cpuset ) { - if ( !cpuset ) - return EFAULT; - if ( !attr ) - return EFAULT; + if ( attr == NULL || !attr->is_initialized ) { + return EINVAL; + } - if (! _CPU_set_Is_valid( cpuset, cpusetsize ) ) + if ( cpuset == NULL || cpusetsize != attr->affinitysetsize ) { return EINVAL; + } CPU_COPY( cpuset, attr->affinityset ); - return 0; } diff --git a/cpukit/posix/src/pthreadcreate.c b/cpukit/posix/src/pthreadcreate.c index 5c5ea5f4de..ebb96bf8a4 100644 --- a/cpukit/posix/src/pthreadcreate.c +++ b/cpukit/posix/src/pthreadcreate.c @@ -242,7 +242,10 @@ int pthread_create( */ api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - _POSIX_Threads_Copy_attributes( &api->Attributes, the_attr ); + api->created_with_explicit_scheduler = + ( the_attr->inheritsched == PTHREAD_EXPLICIT_SCHED ); + api->schedpolicy = the_attr->schedpolicy; + api->schedparam = the_attr->schedparam; _Priority_Node_initialize( &api->Sporadic.Low_priority, core_low_prio ); _Priority_Node_set_inactive( &api->Sporadic.Low_priority ); diff --git a/cpukit/posix/src/pthreadgetaffinitynp.c b/cpukit/posix/src/pthreadgetaffinitynp.c index b843f931d4..dab6b63aa0 100644 --- a/cpukit/posix/src/pthreadgetaffinitynp.c +++ b/cpukit/posix/src/pthreadgetaffinitynp.c @@ -25,8 +25,6 @@ #include #include -#include -#include #include #include diff --git a/cpukit/posix/src/pthreadgetattrnp.c b/cpukit/posix/src/pthreadgetattrnp.c index 63de97be4b..d815fc8c53 100644 --- a/cpukit/posix/src/pthreadgetattrnp.c +++ b/cpukit/posix/src/pthreadgetattrnp.c @@ -21,8 +21,10 @@ #define _GNU_SOURCE #include #include +#include #include +#include #include int pthread_getattr_np( @@ -33,11 +35,14 @@ int pthread_getattr_np( Thread_Control *the_thread; ISR_lock_Context lock_context; POSIX_API_Control *api; + bool ok; if ( attr == NULL ) { return EINVAL; } + attr = memset( attr, 0, sizeof( *attr ) ); + the_thread = _Thread_Get( thread, &lock_context ); if ( the_thread == NULL ) { @@ -47,7 +52,21 @@ int pthread_getattr_np( _Thread_State_acquire_critical( the_thread, &lock_context ); api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - _POSIX_Threads_Copy_attributes( attr, &api->Attributes); + + attr->is_initialized = true; + attr->stackaddr = the_thread->Start.Initial_stack.area; + attr->stacksize = the_thread->Start.Initial_stack.size; + attr->contentionscope = PTHREAD_SCOPE_PROCESS; + + if ( api->created_with_explicit_scheduler ) { + attr->inheritsched = PTHREAD_EXPLICIT_SCHED; + } else { + attr->inheritsched = PTHREAD_INHERIT_SCHED; + } + + attr->schedpolicy = api->schedpolicy; + attr->schedparam = api->schedparam; + attr->cputime_clock_allowed = 1; if ( _Thread_Is_joinable( the_thread ) ) { attr->detachstate = PTHREAD_CREATE_JOINABLE; @@ -55,6 +74,14 @@ int pthread_getattr_np( attr->detachstate = PTHREAD_CREATE_DETACHED; } + attr->affinityset = &attr->affinitysetpreallocated; + attr->affinitysetsize = sizeof( attr->affinitysetpreallocated ); + ok = _Scheduler_Get_affinity( + the_thread, + attr->affinitysetsize, + attr->affinityset + ); + _Thread_State_release( the_thread, &lock_context ); - return 0; + return ok ? 0 : EINVAL; } diff --git a/cpukit/posix/src/pthreadgetschedparam.c b/cpukit/posix/src/pthreadgetschedparam.c index b809db95dc..f172caecd4 100644 --- a/cpukit/posix/src/pthreadgetschedparam.c +++ b/cpukit/posix/src/pthreadgetschedparam.c @@ -56,8 +56,8 @@ int pthread_getschedparam( _Thread_Wait_acquire_critical( the_thread, &queue_context ); - *policy = api->Attributes.schedpolicy; - *param = api->Attributes.schedparam; + *policy = api->schedpolicy; + *param = api->schedparam; scheduler = _Thread_Scheduler_get_home( the_thread ); priority = the_thread->Real_priority.priority; diff --git a/cpukit/posix/src/pthreadsetaffinitynp.c b/cpukit/posix/src/pthreadsetaffinitynp.c index 4ce51ec9ea..c504de5cd7 100644 --- a/cpukit/posix/src/pthreadsetaffinitynp.c +++ b/cpukit/posix/src/pthreadsetaffinitynp.c @@ -24,8 +24,6 @@ #include #include -#include -#include #include #include #include @@ -60,13 +58,6 @@ int pthread_setaffinity_np( cpuset ); - if ( ok ) { - POSIX_API_Control *api; - - api = the_thread->API_Extensions[ THREAD_API_POSIX ]; - CPU_COPY( cpuset, api->Attributes.affinityset ); - } - _Thread_State_release( the_thread, &lock_context ); _Thread_Dispatch_enable( cpu_self ); return ok ? 0 : EINVAL; diff --git a/cpukit/posix/src/pthreadsetschedparam.c b/cpukit/posix/src/pthreadsetschedparam.c index 4da2ebf2a8..5d33f1d095 100644 --- a/cpukit/posix/src/pthreadsetschedparam.c +++ b/cpukit/posix/src/pthreadsetschedparam.c @@ -94,8 +94,8 @@ static int _POSIX_Set_sched_param( ); } - api->Attributes.schedpolicy = policy; - api->Attributes.schedparam = *param; + api->schedpolicy = policy; + api->schedparam = *param; the_thread->budget_algorithm = budget_algorithm; the_thread->budget_callout = budget_callout; diff --git a/testsuites/psxtests/psxgetattrnp01/init.c b/testsuites/psxtests/psxgetattrnp01/init.c index df3e33541d..190e4f498e 100644 --- a/testsuites/psxtests/psxgetattrnp01/init.c +++ b/testsuites/psxtests/psxgetattrnp01/init.c @@ -41,6 +41,9 @@ void *Thread_1( struct sched_param param; int sc; int value; + void *stackaddr; + size_t stacksize; + cpu_set_t set; puts("Thread - pthread_getattr_np - Verify value"); sc = pthread_getattr_np( Thread_id, &attr ); @@ -61,6 +64,24 @@ void *Thread_1( sc = pthread_getattr_np( Thread_id, &attr ); rtems_test_assert( !sc ); + puts("Thread - Verify get stack"); + stackaddr = NULL; + stacksize = 0; + sc = pthread_attr_getstack( &attr, &stackaddr, &stacksize ); + rtems_test_assert( sc == 0 ); + rtems_test_assert( stackaddr != NULL ); + rtems_test_assert( stacksize != 0 ); + + puts("Thread - Verify contention scope"); + sc = pthread_attr_getscope( &attr, &value ); + rtems_test_assert( sc == 0 ); + rtems_test_assert( value == PTHREAD_SCOPE_PROCESS ); + + puts("Thread - Verify explicit scheduler"); + sc = pthread_attr_getinheritsched( &attr, &value ); + rtems_test_assert( sc == 0 ); + rtems_test_assert( value == PTHREAD_EXPLICIT_SCHED ); + puts("Thread - Verify SCHED_FIFO policy"); sc = pthread_attr_getschedpolicy( &attr, &value ); rtems_test_assert( !sc ); @@ -73,8 +94,20 @@ void *Thread_1( puts("Thread - Verify detached"); sc = pthread_attr_getdetachstate( &attr, &value ); + rtems_test_assert( sc == 0 ); rtems_test_assert( value == PTHREAD_CREATE_DETACHED ); + puts("Thread - Verify affinity"); + CPU_ZERO( &set ); + sc = pthread_attr_getaffinity_np( &attr, sizeof( set ), &set ); + rtems_test_assert( sc == 0 ); + rtems_test_assert( CPU_ISSET( 0, &set ) ); + rtems_test_assert( !CPU_ISSET( 1, &set ) ); + + puts("Thread - Destroy"); + sc = pthread_attr_destroy( &attr ); + rtems_test_assert( sc == 0 ); + return NULL; /* just so the compiler thinks we returned something */ } diff --git a/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn b/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn index a3572e048c..ab09630f75 100644 --- a/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn +++ b/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn @@ -1,4 +1,4 @@ -*** POSIX ATTRIBUTE TEST 1 *** +*** BEGIN OF TEST PSXGETATTRNP 1 *** Init - pthread_getattr_np - attr NULL - EINVAL Init - pthread_getattr_np - invalid id - ESRCH Init - pthread_attr_init @@ -16,7 +16,12 @@ Thread - pthread_getattr_np - Verify value Thread - pthread_setschedparam: Setting highest priority SCHED_FIFO Thread - Detach Thread - pthread_getattr_np +Thread - Verify get stack +Thread - Verify contention scope +Thread - Verify explicit scheduler Thread - Verify SCHED_FIFO policy Thread - Verify max priority Thread - Verify detached -*** END OF POSIX ATTRIBUTE TEST 1 *** +Thread - Verify affinity +Thread - Destroy +*** END OF TEST PSXGETATTRNP 1 *** diff --git a/testsuites/smptests/smppsxaffinity01/init.c b/testsuites/smptests/smppsxaffinity01/init.c index c4c4f4f7c3..58e1db5435 100644 --- a/testsuites/smptests/smppsxaffinity01/init.c +++ b/testsuites/smptests/smppsxaffinity01/init.c @@ -38,21 +38,30 @@ void Validate_attrgetaffinity_errors(void) cpu_set_t cpuset; pthread_attr_t attr; + sc = pthread_attr_init( &attr ); + rtems_test_assert( sc == 0 ); + /* Verify pthread_attr_getaffinity_np validates attr */ - puts( "Init - pthread_attr_getaffinity_np - Invalid attr - EFAULT" ); - sc = pthread_attr_getaffinity_np( NULL, sizeof(cpu_set_t), &cpuset ); - rtems_test_assert( sc == EFAULT ); + puts( "Init - pthread_attr_getaffinity_np - Invalid attr - EINVAL" ); + sc = pthread_attr_getaffinity_np( NULL, sizeof( cpuset ), &cpuset ); + rtems_test_assert( sc == EINVAL ); /* Verify pthread_attr_getaffinity_np validates cpuset */ - puts( "Init - pthread_attr_getaffinity_np - Invalid attr - EFAULT" ); - sc = pthread_attr_getaffinity_np( &attr, sizeof(cpu_set_t), NULL ); - rtems_test_assert( sc == EFAULT ); + puts( "Init - pthread_attr_getaffinity_np - Invalid attr - EINVAL" ); + sc = pthread_attr_getaffinity_np( &attr, sizeof( cpuset ), NULL ); + rtems_test_assert( sc == EINVAL ); /* Verify pthread_attr_getaffinity_np validates cpusetsize */ puts( "Init - pthread_attr_getaffinity_np - Invalid cpusetsize - EINVAL" ); - sc = pthread_attr_getaffinity_np( &attr, sizeof(cpu_set_t) * 2 , &cpuset ); + sc = pthread_attr_getaffinity_np( &attr, sizeof( cpuset ) * 2 , &cpuset ); rtems_test_assert( sc == EINVAL ); + sc = pthread_attr_destroy( &attr ); + rtems_test_assert( sc == 0 ); + + puts( "Init - pthread_attr_getaffinity_np - Not initialized attr - EINVAL" ); + sc = pthread_attr_getaffinity_np( &attr, sizeof( cpuset ), &cpuset ); + rtems_test_assert( sc == EINVAL ); } void Validate_attrsetaffinity_errors(void) @@ -61,31 +70,29 @@ void Validate_attrsetaffinity_errors(void) cpu_set_t cpuset; pthread_attr_t attr; + sc = pthread_attr_init( &attr ); + rtems_test_assert( sc == 0 ); + /* Verify pthread_attr_setaffinity_np validates attr. */ - puts( "Init - pthread_attr_setaffinity_np - Invalid attr - EFAULT" ); - sc = pthread_attr_setaffinity_np( NULL, sizeof(cpu_set_t), &cpuset ); - rtems_test_assert( sc == EFAULT ); + puts( "Init - pthread_attr_setaffinity_np - Invalid attr - EINVAL" ); + sc = pthread_attr_setaffinity_np( NULL, sizeof( cpuset ), &cpuset ); + rtems_test_assert( sc == EINVAL ); /* Verify pthread_attr_setaffinity_np validates cpuset */ - puts( "Init - pthread_attr_setaffinity_np - Invalid attr - EFAULT" ); - sc = pthread_attr_setaffinity_np( &attr, sizeof(cpu_set_t), NULL ); - rtems_test_assert( sc == EFAULT ); + puts( "Init - pthread_attr_setaffinity_np - Invalid attr - EINVAL" ); + sc = pthread_attr_setaffinity_np( &attr, sizeof( cpuset ), NULL ); + rtems_test_assert( sc == EINVAL ); /* Verify pthread_attr_setaffinity_np validates cpusetsize */ puts( "Init - pthread_attr_setaffinity_np - Invalid cpusetsize - EINVAL" ); - sc = pthread_attr_setaffinity_np( &attr, sizeof(cpu_set_t) * 2 , &cpuset ); + sc = pthread_attr_setaffinity_np( &attr, sizeof( cpuset ) * 2 , &cpuset ); rtems_test_assert( sc == EINVAL ); - /* Verify pthread_attr_setaffinity_np validates cpuset greater than 0 */ - CPU_ZERO(&cpuset); - puts( "Init - pthread_attr_setaffinity_np - No cpus in cpuset - EINVAL" ); - sc = pthread_attr_setaffinity_np( &attr, sizeof(cpu_set_t) , &cpuset ); - rtems_test_assert( sc == EINVAL ); + sc = pthread_attr_destroy( &attr ); + rtems_test_assert( sc == 0 ); - /* Verify pthread_attr_setaffinity_np validates invalid cpu in cpuset */ - CPU_FILL(&cpuset); - puts( "Init - pthread_attr_setaffinity_np - Too many cpus in cpuset - EINVAL" ); - sc = pthread_attr_setaffinity_np( &attr, sizeof(cpu_set_t) , &cpuset ); + puts( "Init - pthread_attr_setaffinity_np - Not initialized attr - EINVAL" ); + sc = pthread_attr_setaffinity_np( &attr, sizeof( cpuset ), &cpuset ); rtems_test_assert( sc == EINVAL ); } diff --git a/testsuites/smptests/smppsxaffinity01/smppsxaffinity01.scn b/testsuites/smptests/smppsxaffinity01/smppsxaffinity01.scn index 70bd6d31c8..15459e0c2c 100644 --- a/testsuites/smptests/smppsxaffinity01/smppsxaffinity01.scn +++ b/testsuites/smptests/smppsxaffinity01/smppsxaffinity01.scn @@ -1,11 +1,11 @@ -*** SMP POSIX AFFINITY ATTRIBUTE TEST 1 *** -Init - pthread_attr_setaffinity_np - Invalid attr - EFAULT -Init - pthread_attr_setaffinity_np - Invalid attr - EFAULT +*** BEGIN OF TEST SMPPSXAFFINITY 1 *** +Init - pthread_attr_setaffinity_np - Invalid attr - EINVAL +Init - pthread_attr_setaffinity_np - Invalid attr - EINVAL Init - pthread_attr_setaffinity_np - Invalid cpusetsize - EINVAL -Init - pthread_attr_setaffinity_np - No cpus in cpuset - EINVAL -Init - pthread_attr_setaffinity_np - Too many cpus in cpuset - EINVAL -Init - pthread_attr_getaffinity_np - Invalid attr - EFAULT -Init - pthread_attr_getaffinity_np - Invalid attr - EFAULT +Init - pthread_attr_setaffinity_np - Not initialized attr - EINVAL +Init - pthread_attr_getaffinity_np - Invalid attr - EINVAL +Init - pthread_attr_getaffinity_np - Invalid attr - EINVAL Init - pthread_attr_getaffinity_np - Invalid cpusetsize - EINVAL +Init - pthread_attr_getaffinity_np - Not initialized attr - EINVAL Init - Validate pthread_attr_setaffinity_np and pthread_attr_getaffinity_np -*** END OF SMP POSIX AFFINITY ATTRIBUTE TEST 1 *** +*** END OF TEST SMPPSXAFFINITY 1 *** -- cgit v1.2.3