[PATCH v2 2/2] score: Replace Objects_Name_or_id_lookup_errors
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Apr 6 14:07:24 UTC 2021
Replace Objects_Name_or_id_lookup_errors with new Status_Control codes.
Get rid of the _Status_Object_name_errors_to_status lookup table.
---
cpukit/Makefile.am | 1 -
cpukit/include/rtems/rtems/statusimpl.h | 8 ----
cpukit/include/rtems/score/objectimpl.h | 44 ++++----------------
cpukit/include/rtems/score/objectmp.h | 8 ++--
cpukit/include/rtems/score/status.h | 12 ++++++
cpukit/rtems/src/rtemsnametoid.c | 4 +-
cpukit/rtems/src/rtemsobjectgetclassicname.c | 4 +-
cpukit/rtems/src/status.c | 31 --------------
cpukit/rtems/src/taskconstruct.c | 4 ++
cpukit/score/src/objectidtoname.c | 10 ++---
cpukit/score/src/objectmp.c | 10 ++---
cpukit/score/src/objectnametoid.c | 10 ++---
spec/build/cpukit/librtemscpu.yml | 1 -
13 files changed, 46 insertions(+), 101 deletions(-)
delete mode 100644 cpukit/rtems/src/status.c
diff --git a/cpukit/Makefile.am b/cpukit/Makefile.am
index 5c74ad0e32..d6b636bf2a 100644
--- a/cpukit/Makefile.am
+++ b/cpukit/Makefile.am
@@ -785,7 +785,6 @@ librtemscpu_a_SOURCES += rtems/src/semrelease.c
librtemscpu_a_SOURCES += rtems/src/semsetpriority.c
librtemscpu_a_SOURCES += rtems/src/signalcatch.c
librtemscpu_a_SOURCES += rtems/src/signalsend.c
-librtemscpu_a_SOURCES += rtems/src/status.c
librtemscpu_a_SOURCES += rtems/src/statustext.c
librtemscpu_a_SOURCES += rtems/src/statustoerrno.c
librtemscpu_a_SOURCES += rtems/src/systemeventreceive.c
diff --git a/cpukit/include/rtems/rtems/statusimpl.h b/cpukit/include/rtems/rtems/statusimpl.h
index 070c612202..f1944179e9 100644
--- a/cpukit/include/rtems/rtems/statusimpl.h
+++ b/cpukit/include/rtems/rtems/statusimpl.h
@@ -36,14 +36,6 @@ extern "C" {
* @{
*/
-/**
- * @brief Status Object Name Errors to Status Array
- *
- * This array is used to map SuperCore Object Handler return
- * codes to Classic API status codes.
- */
-extern const rtems_status_code _Status_Object_name_errors_to_status[];
-
RTEMS_INLINE_ROUTINE rtems_status_code _Status_Get(
Status_Control status
)
diff --git a/cpukit/include/rtems/score/objectimpl.h b/cpukit/include/rtems/score/objectimpl.h
index 8ba8189976..54d6f0841b 100644
--- a/cpukit/include/rtems/score/objectimpl.h
+++ b/cpukit/include/rtems/score/objectimpl.h
@@ -189,36 +189,6 @@ unsigned int _Objects_API_maximum_class(
*/
Objects_Control *_Objects_Allocate( Objects_Information *information );
-/**
- * This function implements the common portion of the object
- * identification directives. This directive returns the object
- * id associated with name. If more than one object of this class
- * is named name, then the object to which the id belongs is
- * arbitrary. Node indicates the extent of the search for the
- * id of the object named name. If the object class supports global
- * objects, then the search can be limited to a particular node
- * or allowed to encompass all nodes.
- */
-typedef enum {
- OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL,
- OBJECTS_INVALID_NAME,
- OBJECTS_INVALID_ADDRESS,
- OBJECTS_INVALID_ID,
- OBJECTS_INVALID_NODE
-} Objects_Name_or_id_lookup_errors;
-
-/**
- * This macro defines the first entry in the
- * @ref Objects_Name_or_id_lookup_errors enumerated list.
- */
-#define OBJECTS_NAME_ERRORS_FIRST OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL
-
-/**
- * This macro defines the last entry in the
- * @ref Objects_Name_or_id_lookup_errors enumerated list.
- */
-#define OBJECTS_NAME_ERRORS_LAST OBJECTS_INVALID_NODE
-
/**
* @brief Searches an object of the specified class with the specified name on
* the specified set of nodes.
@@ -233,12 +203,12 @@ typedef enum {
* operation was successful.
* @param information is the pointer to an object class information block.
*
- * @retval OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL The operations was successful.
- * @retval OBJECTS_INVALID_ADDRESS The id parameter was NULL.
- * @retval OBJECTS_INVALID_NAME No object exists with the specified name on the
+ * @retval STATUS_SUCCESSFUL The operations was successful.
+ * @retval STATUS_INVALID_ADDRESS The id parameter was NULL.
+ * @retval STATUS_INVALID_NAME No object exists with the specified name on the
* specified node set.
*/
-Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
+Status_Control _Objects_Name_to_id_u32(
uint32_t name,
uint32_t node,
Objects_Id *id,
@@ -282,13 +252,13 @@ Objects_Control *_Objects_Get_by_name(
* @param id is the Id of the object whose name we are locating.
* @param[out] name will contain the name of the object, if found.
*
- * @retval OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL The operation succeeded. @a name
+ * @retval STATUS_SUCCESSFUL The operation succeeded. @a name
* contains the name of the object.
- * @retval OBJECTS_INVALID_ID The id is invalid, the operation failed.
+ * @retval STATUS_INVALID_ID The id is invalid, the operation failed.
*
* @note This function currently does not support string names.
*/
-Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
+Status_Control _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
);
diff --git a/cpukit/include/rtems/score/objectmp.h b/cpukit/include/rtems/score/objectmp.h
index 4f41fefe40..9107e2b3b6 100644
--- a/cpukit/include/rtems/score/objectmp.h
+++ b/cpukit/include/rtems/score/objectmp.h
@@ -143,12 +143,12 @@ void _Objects_MP_Close (
* @param nodes_to_search Indicates the set of nodes to search.
* @param[out] the_id will contain the Id of the object if found.
*
- * @retval OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL The lookup was successful.
- * @retval OBJECTS_INVALID_NODE The number of nodes is bigger than the
+ * @retval STATUS_SUCCESSFUL The lookup was successful.
+ * @retval STATUS_INVALID_NODE The number of nodes is bigger than the
* objects maximum nodes value.
- * @retval OBJECTS_INVALID_NAME There is no global object with this name.
+ * @retval STATUS_INVALID_NAME There is no global object with this name.
*/
-Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search (
+Status_Control _Objects_MP_Global_name_search (
const Objects_Information *information,
Objects_Name the_name,
uint32_t nodes_to_search,
diff --git a/cpukit/include/rtems/score/status.h b/cpukit/include/rtems/score/status.h
index a1c3c84b4d..ba3910d40d 100644
--- a/cpukit/include/rtems/score/status.h
+++ b/cpukit/include/rtems/score/status.h
@@ -51,6 +51,10 @@ extern "C" {
typedef enum {
STATUS_CLASSIC_INCORRECT_STATE = 14,
STATUS_CLASSIC_INTERNAL_ERROR = 25,
+ STATUS_CLASSIC_INVALID_ADDRESS = 9,
+ STATUS_CLASSIC_INVALID_ID = 4,
+ STATUS_CLASSIC_INVALID_NAME = 3,
+ STATUS_CLASSIC_INVALID_NODE = 21,
STATUS_CLASSIC_INVALID_NUMBER = 10,
STATUS_CLASSIC_INVALID_PRIORITY = 19,
STATUS_CLASSIC_INVALID_SIZE = 8,
@@ -102,6 +106,14 @@ typedef enum {
STATUS_BUILD( STATUS_CLASSIC_INCORRECT_STATE, EINVAL ),
STATUS_INTERRUPTED =
STATUS_BUILD( STATUS_CLASSIC_INTERNAL_ERROR, EINTR ),
+ STATUS_INVALID_ADDRESS =
+ STATUS_BUILD( STATUS_CLASSIC_INVALID_ADDRESS, EFAULT ),
+ STATUS_INVALID_ID =
+ STATUS_BUILD( STATUS_CLASSIC_INVALID_ID, EINVAL ),
+ STATUS_INVALID_NODE =
+ STATUS_BUILD( STATUS_CLASSIC_INVALID_NODE, EINVAL ),
+ STATUS_INVALID_NAME =
+ STATUS_BUILD( STATUS_CLASSIC_INVALID_NAME, EINVAL ),
STATUS_INVALID_NUMBER =
STATUS_BUILD( STATUS_CLASSIC_INVALID_NUMBER, EINVAL ),
STATUS_INVALID_PRIORITY =
diff --git a/cpukit/rtems/src/rtemsnametoid.c b/cpukit/rtems/src/rtemsnametoid.c
index d9b374bc3c..5f04ce5153 100644
--- a/cpukit/rtems/src/rtemsnametoid.c
+++ b/cpukit/rtems/src/rtemsnametoid.c
@@ -48,9 +48,9 @@ rtems_status_code _RTEMS_Name_to_id(
const Objects_Information *information
)
{
- Objects_Name_or_id_lookup_errors status;
+ Status_Control status;
status = _Objects_Name_to_id_u32( name, node, id, information );
- return _Status_Object_name_errors_to_status[ status ];
+ return _Status_Get( status );
}
diff --git a/cpukit/rtems/src/rtemsobjectgetclassicname.c b/cpukit/rtems/src/rtemsobjectgetclassicname.c
index 52d4f8474b..315d4266f2 100644
--- a/cpukit/rtems/src/rtemsobjectgetclassicname.c
+++ b/cpukit/rtems/src/rtemsobjectgetclassicname.c
@@ -29,7 +29,7 @@ rtems_status_code rtems_object_get_classic_name(
rtems_name *name
)
{
- Objects_Name_or_id_lookup_errors status;
+ Status_Control status;
Objects_Name name_u;
if ( !name )
@@ -38,5 +38,5 @@ rtems_status_code rtems_object_get_classic_name(
status = _Objects_Id_to_name( id, &name_u );
*name = name_u.name_u32;
- return _Status_Object_name_errors_to_status[ status ];
+ return _Status_Get( status );
}
diff --git a/cpukit/rtems/src/status.c b/cpukit/rtems/src/status.c
deleted file mode 100644
index a4aebd2c05..0000000000
--- a/cpukit/rtems/src/status.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * @file
- *
- * @ingroup RTEMSImplClassic
- *
- * @brief This source file contains the definition of
- * ::_Status_Object_name_errors_to_status.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#include <rtems/rtems/statusimpl.h>
-
-const rtems_status_code _Status_Object_name_errors_to_status[] = {
- /** This maps OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL to RTEMS_SUCCESSFUL. */
- RTEMS_SUCCESSFUL,
- /** This maps OBJECTS_INVALID_NAME to RTEMS_INVALID_NAME. */
- RTEMS_INVALID_NAME,
- /** This maps OBJECTS_INVALID_ADDRESS to RTEMS_INVALID_ADDRESS. */
- RTEMS_INVALID_ADDRESS,
- /** This maps OBJECTS_INVALID_ID to RTEMS_INVALID_ID. */
- RTEMS_INVALID_ID,
- /** This maps OBJECTS_INVALID_NODE to RTEMS_INVALID_NODE. */
- RTEMS_INVALID_NODE
-};
diff --git a/cpukit/rtems/src/taskconstruct.c b/cpukit/rtems/src/taskconstruct.c
index 2cddb448f6..a39db3a7ae 100644
--- a/cpukit/rtems/src/taskconstruct.c
+++ b/cpukit/rtems/src/taskconstruct.c
@@ -43,6 +43,10 @@
STATUS_ASSERT( INCORRECT_STATE );
STATUS_ASSERT( INTERNAL_ERROR );
+STATUS_ASSERT( INVALID_ADDRESS );
+STATUS_ASSERT( INVALID_ID );
+STATUS_ASSERT( INVALID_NAME );
+STATUS_ASSERT( INVALID_NODE );
STATUS_ASSERT( INVALID_NUMBER );
STATUS_ASSERT( INVALID_PRIORITY );
STATUS_ASSERT( INVALID_SIZE );
diff --git a/cpukit/score/src/objectidtoname.c b/cpukit/score/src/objectidtoname.c
index a959636870..f35f59f8d1 100644
--- a/cpukit/score/src/objectidtoname.c
+++ b/cpukit/score/src/objectidtoname.c
@@ -22,7 +22,7 @@
#include <rtems/score/threadimpl.h>
-Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
+Status_Control _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
@@ -40,10 +40,10 @@ Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
information = _Objects_Get_information_id( tmpId );
if ( !information )
- return OBJECTS_INVALID_ID;
+ return STATUS_INVALID_ID;
if ( _Objects_Has_string_name( information ) )
- return OBJECTS_INVALID_ID;
+ return STATUS_INVALID_ID;
the_object = _Objects_Get(
tmpId,
@@ -51,9 +51,9 @@ Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
information
);
if ( !the_object )
- return OBJECTS_INVALID_ID;
+ return STATUS_INVALID_ID;
*name = the_object->name;
_ISR_lock_ISR_enable( &lock_context );
- return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
+ return STATUS_SUCCESSFUL;
}
diff --git a/cpukit/score/src/objectmp.c b/cpukit/score/src/objectmp.c
index b44ef65e94..f3ecbbf7b2 100644
--- a/cpukit/score/src/objectmp.c
+++ b/cpukit/score/src/objectmp.c
@@ -293,19 +293,19 @@ void _Objects_MP_Close (
}
}
-Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search(
+Status_Control _Objects_MP_Global_name_search(
const Objects_Information *information,
Objects_Name the_name,
uint32_t nodes_to_search,
Objects_Id *the_id
)
{
- Objects_Name_or_id_lookup_errors status;
+ Status_Control status;
Objects_MP_Control *the_global_object;
ISR_lock_Context lock_context;
if ( nodes_to_search > _Objects_Maximum_nodes ) {
- return OBJECTS_INVALID_NODE;
+ return STATUS_INVALID_NODE;
}
_Objects_MP_Global_acquire( &lock_context );
@@ -336,9 +336,9 @@ Objects_Name_or_id_lookup_errors _Objects_MP_Global_name_search(
if ( the_global_object != NULL ) {
*the_id = the_global_object->id;
_Assert( the_global_object->name.name_u32 != 0 );
- status = OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
+ status = STATUS_SUCCESSFUL;
} else {
- status = OBJECTS_INVALID_NAME;
+ status = STATUS_INVALID_NAME;
}
_Objects_MP_Global_release( &lock_context );
diff --git a/cpukit/score/src/objectnametoid.c b/cpukit/score/src/objectnametoid.c
index c70410d955..063cf36398 100644
--- a/cpukit/score/src/objectnametoid.c
+++ b/cpukit/score/src/objectnametoid.c
@@ -27,7 +27,7 @@ static bool _Objects_Is_local_node_search( uint32_t node )
return node == OBJECTS_SEARCH_LOCAL_NODE || _Objects_Is_local_node( node );
}
-Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
+Status_Control _Objects_Name_to_id_u32(
uint32_t name,
uint32_t node,
Objects_Id *id,
@@ -41,7 +41,7 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
_Assert( !_Objects_Has_string_name( information ) );
if ( id == NULL ) {
- return OBJECTS_INVALID_ADDRESS;
+ return STATUS_INVALID_ADDRESS;
}
if (
@@ -61,19 +61,19 @@ Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
if ( the_object != NULL && name == the_object->name.name_u32 ) {
*id = the_object->id;
_Assert( name != 0 );
- return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
+ return STATUS_SUCCESSFUL;
}
}
}
#if defined(RTEMS_MULTIPROCESSING)
if ( _Objects_Is_local_node_search( node ) ) {
- return OBJECTS_INVALID_NAME;
+ return STATUS_INVALID_NAME;
}
name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else
- return OBJECTS_INVALID_NAME;
+ return STATUS_INVALID_NAME;
#endif
}
diff --git a/spec/build/cpukit/librtemscpu.yml b/spec/build/cpukit/librtemscpu.yml
index a08cbb96e1..4ed91562f8 100644
--- a/spec/build/cpukit/librtemscpu.yml
+++ b/spec/build/cpukit/librtemscpu.yml
@@ -1280,7 +1280,6 @@ source:
- cpukit/rtems/src/semsetpriority.c
- cpukit/rtems/src/signalcatch.c
- cpukit/rtems/src/signalsend.c
-- cpukit/rtems/src/status.c
- cpukit/rtems/src/statustext.c
- cpukit/rtems/src/statustoerrno.c
- cpukit/rtems/src/systemeventreceive.c
--
2.26.2
More information about the devel
mailing list