diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-06-16 07:28:58 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-06-18 07:09:34 +0200 |
commit | 46c23871813618e7a16050068041b3d33551cd0d (patch) | |
tree | c26f000d0857387806330031de7d9e91fe1d4aee /cpukit | |
parent | bc73a08598d43d93cfa5607fd1807bf2b3c564ce (diff) |
rtems: Remove RTEMS_MP_NOT_CONFIGURED error
Some objects can be created with a local or global scope in a
multiprocessing network. In non-multiprocessing configurations setting
the scope to local or global had no effect since such a system can be
viewed as a multiprocessing network with just one node. One and all
nodes is the same in such a network. However, if multiprocessing was
configured, creation of a global object in a single node network
resulted in an RTEMS_MP_NOT_CONFIGURED error. Remove this error
condition for symmetry to the non-multiprocessing setup. This is in line
with the task affinity behaviour in SMP systems.
Update #4005.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/rtems/src/msgqcreate.c | 8 | ||||
-rw-r--r-- | cpukit/rtems/src/partcreate.c | 6 | ||||
-rw-r--r-- | cpukit/rtems/src/semcreate.c | 7 | ||||
-rw-r--r-- | cpukit/rtems/src/taskcreate.c | 12 |
4 files changed, 14 insertions, 19 deletions
diff --git a/cpukit/rtems/src/msgqcreate.c b/cpukit/rtems/src/msgqcreate.c index 9d4e8cdfd6..3741347cc9 100644 --- a/cpukit/rtems/src/msgqcreate.c +++ b/cpukit/rtems/src/msgqcreate.c @@ -52,9 +52,11 @@ rtems_status_code rtems_message_queue_create( return RTEMS_INVALID_ADDRESS; #if defined(RTEMS_MULTIPROCESSING) - if ( (is_global = _Attributes_Is_global( attribute_set ) ) && - !_System_state_Is_multiprocessing ) - return RTEMS_MP_NOT_CONFIGURED; + if ( !_System_state_Is_multiprocessing ) { + attribute_set = _Attributes_Clear( attribute_set, RTEMS_GLOBAL ); + } + + is_global = _Attributes_Is_global( attribute_set ); #endif if ( count == 0 ) diff --git a/cpukit/rtems/src/partcreate.c b/cpukit/rtems/src/partcreate.c index 2aefce8067..9aa5e80bf1 100644 --- a/cpukit/rtems/src/partcreate.c +++ b/cpukit/rtems/src/partcreate.c @@ -66,9 +66,9 @@ rtems_status_code rtems_partition_create( return RTEMS_INVALID_ADDRESS; #if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( attribute_set ) && - !_System_state_Is_multiprocessing ) - return RTEMS_MP_NOT_CONFIGURED; + if ( !_System_state_Is_multiprocessing ) { + attribute_set = _Attributes_Clear( attribute_set, RTEMS_GLOBAL ); + } #endif the_partition = _Partition_Allocate(); diff --git a/cpukit/rtems/src/semcreate.c b/cpukit/rtems/src/semcreate.c index 6cdd877cce..b57b635d85 100644 --- a/cpukit/rtems/src/semcreate.c +++ b/cpukit/rtems/src/semcreate.c @@ -57,11 +57,8 @@ rtems_status_code rtems_semaphore_create( return RTEMS_INVALID_ADDRESS; #if defined(RTEMS_MULTIPROCESSING) - if ( - _Attributes_Is_global( attribute_set ) - && !_System_state_Is_multiprocessing - ) { - return RTEMS_MP_NOT_CONFIGURED; + if ( !_System_state_Is_multiprocessing ) { + attribute_set = _Attributes_Clear( attribute_set, RTEMS_GLOBAL ); } #endif diff --git a/cpukit/rtems/src/taskcreate.c b/cpukit/rtems/src/taskcreate.c index 288eafa5c7..b430d3c705 100644 --- a/cpukit/rtems/src/taskcreate.c +++ b/cpukit/rtems/src/taskcreate.c @@ -111,15 +111,11 @@ rtems_status_code rtems_task_create( } #if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( the_attribute_set ) ) { - - is_global = true; - - if ( !_System_state_Is_multiprocessing ) - return RTEMS_MP_NOT_CONFIGURED; + if ( !_System_state_Is_multiprocessing ) { + the_attribute_set = _Attributes_Clear( the_attribute_set, RTEMS_GLOBAL ); + } - } else - is_global = false; + is_global = _Attributes_Is_global( the_attribute_set ); #endif /* |