summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-04-26 11:00:24 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-04-27 19:40:12 +0200
commit4b7c77bce370d2ff88c9fb9036e5f3a3b1da9cb7 (patch)
tree64814323130a90a2ae790a5a787d8bd8989648e9
parentSimplify get affinitiy directives (diff)
downloadrtems-4b7c77bce370d2ff88c9fb9036e5f3a3b1da9cb7.tar.bz2
rtems: Change rtems_task_get_affinity() status
In case the processor set is not large enough to contain the processor affinity set of the task return RTEMS_INVALID_SIZE instead of RTEMS_INVALID_NUMBER. This is more in line with other directives since the issue is related to the size of an object. Close #4393.
-rw-r--r--cpukit/include/rtems/score/schedulerimpl.h2
-rw-r--r--cpukit/include/rtems/score/status.h2
-rw-r--r--cpukit/score/src/schedulergetaffinity.c2
-rw-r--r--testsuites/smptests/smpaffinity01/init.c2
-rw-r--r--testsuites/sptests/spscheduler01/init.c3
5 files changed, 7 insertions, 4 deletions
diff --git a/cpukit/include/rtems/score/schedulerimpl.h b/cpukit/include/rtems/score/schedulerimpl.h
index 397789372c..65c600b583 100644
--- a/cpukit/include/rtems/score/schedulerimpl.h
+++ b/cpukit/include/rtems/score/schedulerimpl.h
@@ -695,7 +695,7 @@ RTEMS_INLINE_ROUTINE const Processor_mask *_Scheduler_Get_processors(
*
* @retval STATUS_SUCCESSFUL The operation succeeded.
*
- * @retval STATUS_INVALID_NUMBER The processor set was too small.
+ * @retval STATUS_INVALID_SIZE The processor set was too small.
*/
Status_Control _Scheduler_Get_affinity(
Thread_Control *the_thread,
diff --git a/cpukit/include/rtems/score/status.h b/cpukit/include/rtems/score/status.h
index ba3910d40d..236ae52d7b 100644
--- a/cpukit/include/rtems/score/status.h
+++ b/cpukit/include/rtems/score/status.h
@@ -118,6 +118,8 @@ typedef enum {
STATUS_BUILD( STATUS_CLASSIC_INVALID_NUMBER, EINVAL ),
STATUS_INVALID_PRIORITY =
STATUS_BUILD( STATUS_CLASSIC_INVALID_PRIORITY, EINVAL ),
+ STATUS_INVALID_SIZE =
+ STATUS_BUILD( STATUS_CLASSIC_INVALID_SIZE, EINVAL ),
STATUS_MAXIMUM_COUNT_EXCEEDED =
STATUS_BUILD( STATUS_CLASSIC_UNSATISFIED, EOVERFLOW ),
STATUS_MESSAGE_INVALID_SIZE =
diff --git a/cpukit/score/src/schedulergetaffinity.c b/cpukit/score/src/schedulergetaffinity.c
index 09eaa187dd..84e404e8df 100644
--- a/cpukit/score/src/schedulergetaffinity.c
+++ b/cpukit/score/src/schedulergetaffinity.c
@@ -51,7 +51,7 @@ Status_Control _Scheduler_Get_affinity(
_Scheduler_Release_critical( scheduler, &lock_context );
if ( status != PROCESSOR_MASK_COPY_LOSSLESS ) {
- return STATUS_INVALID_NUMBER;
+ return STATUS_INVALID_SIZE;
}
return STATUS_SUCCESSFUL;
diff --git a/testsuites/smptests/smpaffinity01/init.c b/testsuites/smptests/smpaffinity01/init.c
index 5d79259e9f..9ec687d816 100644
--- a/testsuites/smptests/smpaffinity01/init.c
+++ b/testsuites/smptests/smpaffinity01/init.c
@@ -85,7 +85,7 @@ void Validate_getaffinity_errors(void)
"Init - rtems_task_get_affinity - Invalid cpusetsize - RTEMS_INVALID_NUMBER"
);
sc = rtems_task_get_affinity( Init_id, 1, &cpuset );
- rtems_test_assert( sc == RTEMS_INVALID_NUMBER );
+ rtems_test_assert( sc == RTEMS_INVALID_SIZE );
/* Verify rtems_task_get_affinity validates cpuset */
puts("Init - rtems_task_get_affinity - Invalid cpuset - RTEMS_INVALID_ADDRESS");
diff --git a/testsuites/sptests/spscheduler01/init.c b/testsuites/sptests/spscheduler01/init.c
index 5ed17057d3..94ecfe4ef5 100644
--- a/testsuites/sptests/spscheduler01/init.c
+++ b/testsuites/sptests/spscheduler01/init.c
@@ -49,6 +49,7 @@ static void assert_eno(rtems_status_code sc, int eno)
rtems_test_assert(eno == ESRCH);
break;
case RTEMS_INVALID_NUMBER:
+ case RTEMS_INVALID_SIZE:
rtems_test_assert(eno == EINVAL);
break;
default:
@@ -139,7 +140,7 @@ static void test_task_get_set_affinity(void)
rtems_test_assert(sc == RTEMS_INVALID_ADDRESS);
sc = task_get_affinity(RTEMS_SELF, 0, &cpuset);
- rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
+ rtems_test_assert(sc == RTEMS_INVALID_SIZE);
sc = task_set_affinity(RTEMS_SELF, 0, &cpuset);
rtems_test_assert(sc == RTEMS_INVALID_NUMBER);