diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-10 07:13:37 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-10 07:17:51 +0200 |
commit | 4f9ed26655c2659fcf697a281cb401aa919849bf (patch) | |
tree | b73d6b1fae44a8101e0c46f88a8729c074d6d5f4 | |
parent | posix: Simplify pthread_attr_setstack() (diff) | |
download | rtems-4f9ed26655c2659fcf697a281cb401aa919849bf.tar.bz2 |
posix: Constify default thread processor affinity
Set default thread processor affinity to all processors of the
pre-allocated set. This allows to constify the
_POSIX_Threads_Default_attributes.
Update #2514.
-rw-r--r-- | cpukit/posix/include/rtems/posix/pthreadimpl.h | 2 | ||||
-rw-r--r-- | cpukit/posix/src/pthread.c | 19 | ||||
-rw-r--r-- | testsuites/psxtests/psxgetattrnp01/init.c | 7 | ||||
-rw-r--r-- | testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn | 1 |
4 files changed, 11 insertions, 18 deletions
diff --git a/cpukit/posix/include/rtems/posix/pthreadimpl.h b/cpukit/posix/include/rtems/posix/pthreadimpl.h index 9e5314b2c2..6b338f9d5c 100644 --- a/cpukit/posix/include/rtems/posix/pthreadimpl.h +++ b/cpukit/posix/include/rtems/posix/pthreadimpl.h @@ -51,7 +51,7 @@ extern Thread_Information _POSIX_Threads_Information; /** * This variable contains the default POSIX Thread attributes. */ -extern pthread_attr_t _POSIX_Threads_Default_attributes; +extern const pthread_attr_t _POSIX_Threads_Default_attributes; RTEMS_INLINE_ROUTINE void _POSIX_Threads_Sporadic_timer_insert( Thread_Control *the_thread, diff --git a/cpukit/posix/src/pthread.c b/cpukit/posix/src/pthread.c index 1d791df7eb..171d0366df 100644 --- a/cpukit/posix/src/pthread.c +++ b/cpukit/posix/src/pthread.c @@ -49,7 +49,7 @@ Thread_Information _POSIX_Threads_Information; * NOTE: Be careful .. if the default attribute set changes, * _POSIX_Threads_Initialize_user_threads will need to be examined. */ -pthread_attr_t _POSIX_Threads_Default_attributes = { +const pthread_attr_t _POSIX_Threads_Default_attributes = { .is_initialized = true, /* is_initialized */ .stackaddr = NULL, /* stackaddr */ .stacksize = 0, /* stacksize -- will be adjusted to minimum */ @@ -79,7 +79,7 @@ pthread_attr_t _POSIX_Threads_Default_attributes = { sizeof( _POSIX_Threads_Default_attributes.affinitysetpreallocated ), .affinityset = &_POSIX_Threads_Default_attributes.affinitysetpreallocated, - .affinitysetpreallocated = {{0x1}} + .affinitysetpreallocated = { { -1L } } }; void _POSIX_Threads_Sporadic_timer( Watchdog_Control *watchdog ) @@ -243,21 +243,6 @@ User_extensions_Control _POSIX_Threads_User_extensions = { */ static void _POSIX_Threads_Manager_initialization(void) { - #if defined(RTEMS_SMP) - const CPU_set_Control *affinity; - pthread_attr_t *attr; - - /* Initialize default attribute. */ - attr = &_POSIX_Threads_Default_attributes; - - /* Initialize the affinity to be the default cpu set for the system */ - affinity = _CPU_set_Default(); - _Assert( affinity->setsize == sizeof( attr->affinitysetpreallocated ) ); - attr->affinityset = &attr->affinitysetpreallocated; - attr->affinitysetsize = affinity->setsize; - CPU_COPY( affinity->set, attr->affinityset ); - #endif - _Thread_Initialize_information( &_POSIX_Threads_Information, /* object information table */ OBJECTS_POSIX_API, /* object API */ diff --git a/testsuites/psxtests/psxgetattrnp01/init.c b/testsuites/psxtests/psxgetattrnp01/init.c index 2b7d699abd..afde4a210e 100644 --- a/testsuites/psxtests/psxgetattrnp01/init.c +++ b/testsuites/psxtests/psxgetattrnp01/init.c @@ -190,6 +190,7 @@ void *POSIX_Init( size_t stacksize; size_t guardsize; struct sched_param param; + cpu_set_t set; TEST_BEGIN(); @@ -211,6 +212,12 @@ void *POSIX_Init( sc = pthread_attr_init(&Thread_attr); rtems_test_assert(!sc); + puts("Init - pthread_attr_setaffinity_np"); + CPU_ZERO( &set ); + CPU_SET( 0, &set ); + sc = pthread_attr_setaffinity_np( &Thread_attr, sizeof( set ), &set ); + rtems_test_assert(!sc); + puts("Init - pthread_attr_setinheritsched - PTHREAD_EXPLICIT_SCHED"); sc = pthread_attr_setinheritsched( &Thread_attr, PTHREAD_EXPLICIT_SCHED ); rtems_test_assert(!sc); diff --git a/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn b/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn index ab09630f75..0ca49a5e81 100644 --- a/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn +++ b/testsuites/psxtests/psxgetattrnp01/psxgetattrnp01.scn @@ -2,6 +2,7 @@ Init - pthread_getattr_np - attr NULL - EINVAL Init - pthread_getattr_np - invalid id - ESRCH Init - pthread_attr_init +Init - pthread_attr_setaffinity_np Init - pthread_attr_setinheritsched - PTHREAD_EXPLICIT_SCHED Init - pthread_attr_setschedpolicy to SCHED_RR Init - pthread_attr_setschedparam to minimum priority + 2 |