[PATCH v2 2/2] score: Replace Objects_Name_or_id_lookup_errors
Gedare Bloom
gedare at rtems.org
Tue Apr 6 17:27:29 UTC 2021
I'm fine with both of these v2 patches.
On Tue, Apr 6, 2021 at 8:07 AM Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
>
> 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
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list