[rtems commit] rtems: Change rtems_task_get_affinity() status

Sebastian Huber sebh at rtems.org
Tue Apr 27 17:53:09 UTC 2021


Module:    rtems
Branch:    master
Commit:    4b7c77bce370d2ff88c9fb9036e5f3a3b1da9cb7
Changeset: http://git.rtems.org/rtems/commit/?id=4b7c77bce370d2ff88c9fb9036e5f3a3b1da9cb7

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Mon Apr 26 11:00:24 2021 +0200

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.

---

 cpukit/include/rtems/score/schedulerimpl.h | 2 +-
 cpukit/include/rtems/score/status.h        | 2 ++
 cpukit/score/src/schedulergetaffinity.c    | 2 +-
 testsuites/smptests/smpaffinity01/init.c   | 2 +-
 testsuites/sptests/spscheduler01/init.c    | 3 ++-
 5 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/cpukit/include/rtems/score/schedulerimpl.h b/cpukit/include/rtems/score/schedulerimpl.h
index 3977893..65c600b 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 ba3910d..236ae52 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 09eaa18..84e404e 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 5d79259..9ec687d 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 5ed1705..94ecfe4 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);



More information about the vc mailing list