summaryrefslogblamecommitdiffstats
path: root/cpukit/include/rtems/rtems/object.h
blob: e80303da283adb9d5b5a8fb6b5bf4fc4bf2728fe (plain) (tree)
1
2
3
4
5
6
7
8
9

                                           
   
        
  
                                                            
   
 
  
                                                                                





























                                                                              
                                  
  




                                                                          
  
                         

   

                                                 

                             
 

                    
                   

                               
                               
 



                  

                                                
   
                                                  
  
                           
  



                                                                             
   

                                                                

   



                                                                               

                




























                                                                                 

                                     

                                                   
   
                                 
  







                                                                       
  

                                                                               
   


                                                          

   



                                                                          
  
                                                            
  
                                                                
  
                                                                   
  

                                                                             
  







                                                                   
   



                                                           
 
   
                                 
  








                                                                              
  

                                                                          
   


                                                            

   
                                 
  








                                                                          
  








                                                                              
  

                                                                             
   


                                                   

   



                                                                          
  
                                                           
  
                                                                   
  
                                                                  
  
                                                               


                                                                              
  









                                                                               
   







                                                         



                                                       

   



                                                                 
                                                
  
                                                 
  
                                                
  
                                                 
  
                                                                              
                                                                             

                                   
                                                                   
  









                                                                               
   


                                                                  



                                                           

   


                                                                     
  
                                                      
  
                                                                       
                                                                             
                                              
  
                                                                     
  









                                                                               
  







                                                                   
   





                                                   

   
                                 
  

                                                                         
  





                                                                       





                                                                              
  
                                               
  
                                                
  

                                                                        
  
                                                                          
  

                                                                           
  







                                                                   
   


                                                                      

   
                                 
  

                                                                       
  



                                                                    

                                                                      











                                                                               


             











                                                                               












                                                                               
   


                                                                         

   



                                                          
                                                                    



                                                              


                                                                             
            
                                                     
  


                                                                               
  
                                                                   
               
   


                                                           


                                                              

   



                                                            
                                                                      



                                                                


                                                                             
            
                                                     
  


                                                                               
  
                                                                   
               
   


                                                             


                                                                  
 
   



                                                                
                                                                          



                                                                    


                                                                             
            
                                                     
  


                                                                               
  
                                                                   
               
   


                                                            


                                                                

   



                                                            
                                                                      



                                                                


                                                                             
            
                                                     
  


                                                                               
  
                                                                   
               
   


                                                             


                                                                  

   
                                 
  

                                                                        
  


                                                                            
                   
            




                                                                               
  
                                                                   
               
   


                                                               


                                                          
 
   




                                                                         


                                                                             
                   
            
                                                     
  




                                                                               
               
   


                                                               
                                                       
 
                                                            

   



                                                              




                                                                    
  







                                                                   
   
                                              
 
                                                            

   



                                                               




                                                                     
  







                                                                   
   


                                                       

   



                                                    




                                                                       

             


                                                                         
            
                                                     
  


                                                                   
               
   
                                                 
 
                                                             

   



                                                                        









                                                                              

             


                                                                         
            
                                                     
  


                                                                   
               
   
                                                                          
 
                                                                

   




                                                                             




                                                                          


                                                                           





                                                                              
  







                                                                   
   






                                                         

   



                                          
                                              
  







                                                                   
   



                                                          
 



                  
                                  
/* SPDX-License-Identifier: BSD-2-Clause */

/**
 * @file
 *
 * @brief This header file provides the Object Services API.
 */

/*
 * Copyright (C) 2020, 2021 embedded brains GmbH (http://www.embedded-brains.de)
 * Copyright (C) 1988, 2009 On-Line Applications Research Corporation (OAR)
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * This file is part of the RTEMS quality process and was automatically
 * generated.  If you find something that needs to be fixed or
 * worded better please post a report or patch to an RTEMS mailing list
 * or raise a bug report:
 *
 * https://www.rtems.org/bugs.html
 *
 * For information on updating and regenerating please refer to the How-To
 * section in the Software Requirements Engineering chapter of the
 * RTEMS Software Engineering manual.  The manual is provided as a part of
 * a release.  For development sources please refer to the online
 * documentation at:
 *
 * https://docs.rtems.org
 */

/* Generated from spec:/rtems/object/if/header */

#ifndef _RTEMS_RTEMS_OBJECT_H
#define _RTEMS_RTEMS_OBJECT_H

#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <rtems/rtems/status.h>
#include <rtems/rtems/types.h>
#include <rtems/score/object.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Generated from spec:/rtems/object/if/group */

/**
 * @defgroup RTEMSAPIClassicObject Object Services
 *
 * @ingroup RTEMSAPIClassic
 *
 * @brief RTEMS provides a collection of services to assist in the management
 *   and usage of the objects created and utilized via other managers.  These
 *   services assist in the manipulation of RTEMS objects independent of the
 *   API used to create them.
 */

/* Generated from spec:/rtems/object/if/api-class-information */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This structure is used to return information to the application about
 *   the objects configured for a specific API/Class combination.
 */
typedef struct {
  /**
   * @brief This member contains the minimum valid object identifier for this
   *   class.
   */
  rtems_id minimum_id;

  /**
   * @brief This member contains the maximum valid object identifier for this
   *   class.
   */
  rtems_id maximum_id;

  /**
   * @brief This member contains the maximum number of active objects configured
   *   for this class.
   */
  uint32_t maximum;

  /**
   * @brief This member is true, if this class is configured for automatic object
   *   extension, otherwise it is false.
   */
  bool auto_extend;

  /**
   * @brief This member contains the number of currently inactive objects of this
   *   class.
   */
  uint32_t unallocated;
} rtems_object_api_class_information;

/* Generated from spec:/rtems/object/if/id-final */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This constant represents the highest object identifier value.
 */
#define RTEMS_OBJECT_ID_FINAL OBJECTS_ID_FINAL

/* Generated from spec:/rtems/object/if/id-final-index */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This constant represents the highest value for the index component of
 *   an object identifier.
 */
#define RTEMS_OBJECT_ID_FINAL_INDEX OBJECTS_ID_FINAL_INDEX

/* Generated from spec:/rtems/object/if/id-initial */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Builds the object identifier with the lowest index from the API,
 *   class, and MPCI node components.
 *
 * @param _api is the API of the object identifier to build.
 *
 * @param _class is the class of the object identifier to build.
 *
 * @param _node is the MPCI node of the object identifier to build.
 *
 * @return Returns the object identifier with the lowest index built from the
 *   API, class, and MPCI node components.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
#define RTEMS_OBJECT_ID_INITIAL( _api, _class, _node ) \
  OBJECTS_ID_INITIAL( _api, _class, _node )

/* Generated from spec:/rtems/object/if/id-initial-index */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This constant represents the lowest value for the index component of
 *   an object identifier.
 */
#define RTEMS_OBJECT_ID_INITIAL_INDEX OBJECTS_ID_INITIAL_INDEX

/* Generated from spec:/rtems/object/if/search-all-nodes */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This constant indicates that an object name to identifier search
 *   should search through all MPCI nodes of the system.
 */
#define RTEMS_SEARCH_ALL_NODES OBJECTS_SEARCH_ALL_NODES

/* Generated from spec:/rtems/object/if/search-local-node */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This constant indicates that an object name to identifier search
 *   should search only the local MPCI node of the system.
 */
#define RTEMS_SEARCH_LOCAL_NODE OBJECTS_SEARCH_LOCAL_NODE

/* Generated from spec:/rtems/object/if/search-other-nodes */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This constant indicates that an object name to identifier search
 *   should search through all MPCI nodes of the system except the local node.
 */
#define RTEMS_SEARCH_OTHER_NODES OBJECTS_SEARCH_OTHER_NODES

/* Generated from spec:/rtems/object/if/who-am-i */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief This constant indicates that an object name to identifier search is
 *   being asked for the identifier of the currently executing task.
 */
#define RTEMS_WHO_AM_I OBJECTS_WHO_AM_I

/* Generated from spec:/rtems/object/if/build-id */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Builds the object identifier from the API, class, MPCI node, and
 *   index components.
 *
 * @param api is the API of the object identifier to build.
 *
 * @param the_class is the class of the object identifier to build.
 *
 * @param node is the MPCI node of the object identifier to build.
 *
 * @param index is the index of the object identifier to build.
 *
 * @return Returns the object identifier built from the API, class, MPCI node,
 *   and index components.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
rtems_id rtems_build_id(
  uint32_t api,
  uint32_t the_class,
  uint32_t node,
  uint32_t index
);

/* Generated from spec:/rtems/object/if/build-id-macro */
#define rtems_build_id( _api, _class, _node, _index ) \
  _Objects_Build_id( _api, _class, _node, _index )

/* Generated from spec:/rtems/object/if/build-name */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Builds the object name composed of the four characters.
 *
 * @param c1 is the first character of the name.
 *
 * @param c2 is the second character of the name.
 *
 * @param c3 is the third character of the name.
 *
 * @param c4 is the fourth character of the name.
 *
 * This directive takes the four characters provided as arguments and composes
 * a 32-bit object name with ``c1`` in the most significant 8-bits and ``c4``
 * in the least significant 8-bits.
 *
 * @return Returns the object name composed of the four characters.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
rtems_name rtems_build_name( char c1, char c2, char c3, char c4 );

/* Generated from spec:/rtems/object/if/build-name-macro */
#define rtems_build_name( _c1, _c2, _c3, _c4 ) \
  _Objects_Build_name( _c1, _c2, _c3, _c4 )

/* Generated from spec:/rtems/object/if/get-classic-name */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the object name associated with the object identifier.
 *
 * @param id is the object identifier to get the name.
 *
 * @param[out] name is the pointer to an ::rtems_name object.  When the
 *   directive call is successful, the object name associated with the object
 *   identifier will be stored in this object.
 *
 * @retval ::RTEMS_SUCCESSFUL The requested operation was successful.
 *
 * @retval ::RTEMS_INVALID_ADDRESS The ``name`` parameter was NULL.
 *
 * @retval ::RTEMS_INVALID_ID There was no object information available for the
 *   object identifier.
 *
 * @retval ::RTEMS_INVALID_ID The object name associated with the object
 *   identifier was a string.
 *
 * @retval ::RTEMS_INVALID_ID There was no object associated with the object
 *   identifier.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
rtems_status_code rtems_object_get_classic_name(
  rtems_id    id,
  rtems_name *name
);

/* Generated from spec:/rtems/object/if/get-name */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the object name associated with the object identifier as a
 *   string.
 *
 * @param id is the object identifier to get the name.
 *
 * @param length is the buffer length in bytes.
 *
 * @param[out] name is the pointer to a buffer of the specified length.
 *
 * The object name is stored in the name buffer.  If the name buffer length is
 * greater than zero, then the stored object name will be ``NUL`` terminated.
 * The stored object name may be truncated to fit the length.  There is no
 * indication if a truncation occurred.  Every attempt is made to return name
 * as a printable string even if the object has the Classic API 32-bit integer
 * style name.
 *
 * @retval NULL The ``length`` parameter was 0.
 *
 * @retval NULL The ``name`` parameter was NULL.
 *
 * @retval NULL There was no object information available for the object
 *   identifier.
 *
 * @retval NULL There was no object associated with the object identifier.
 *
 * @return Returns the ``name`` parameter value, if there is an object name
 *   associated with the object identifier.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
char *rtems_object_get_name( rtems_id id, size_t length, char *name );

/* Generated from spec:/rtems/object/if/set-name */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Sets the object name of the object associated with the object
 *   identifier.
 *
 * @param id is the object identifier of the object to set the name.
 *
 * @param name is the object name to set.
 *
 * This directive will set the object name based upon the user string.
 *
 * @retval ::RTEMS_SUCCESSFUL The requested operation was successful.
 *
 * @retval ::RTEMS_INVALID_ADDRESS The ``name`` parameter was NULL.
 *
 * @retval ::RTEMS_INVALID_ID There was no object information available for the
 *   object identifier.
 *
 * @retval ::RTEMS_INVALID_ID There was no object associated with the object
 *   identifier.
 *
 * @retval ::RTEMS_NO_MEMORY There was no memory available to duplicate the
 *   name.
 *
 * @par Notes
 * @parblock
 * This directive can be used to set the name of objects which do not have a
 * naming scheme per their API.
 *
 * If the object specified by ``id`` is of a class that has a string name, this
 * directive will free the existing name to the RTEMS Workspace and allocate
 * enough memory from the RTEMS Workspace to make a copy of the string located
 * at ``name``.
 *
 * If the object specified by ``id`` is of a class that has a 32-bit integer
 * style name, then the first four characters in ``name`` will be used to
 * construct the name.
 * @endparblock
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within device driver initialization
 *   context.
 *
 * * The directive may be called from within task context.
 *
 * * The directive may obtain and release the object allocator mutex.  This may
 *   cause the calling task to be preempted.
 * @endparblock
 */
rtems_status_code rtems_object_set_name( rtems_id id, const char *name );

/* Generated from spec:/rtems/object/if/id-get-api */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the API component of the object identifier.
 *
 * @param id is the object identifier with the API component to get.
 *
 * @return Returns the API component of the object identifier.
 *
 * @par Notes
 * This directive does not validate the object identifier provided in ``id``.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_id_get_api( rtems_id id );

/* Generated from spec:/rtems/object/if/id-get-api-macro */
#define rtems_object_id_get_api( _id ) _Objects_Get_API( _id )

/* Generated from spec:/rtems/object/if/id-get-class */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the class component of the object identifier.
 *
 * @param id is the object identifier with the class component to get.
 *
 * @return Returns the class component of the object identifier.
 *
 * @par Notes
 * This directive does not validate the object identifier provided in ``id``.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_id_get_class( rtems_id id );

/* Generated from spec:/rtems/object/if/id-get-class-macro */
#define rtems_object_id_get_class( _id ) _Objects_Get_class( _id )

/* Generated from spec:/rtems/object/if/id-get-node */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the MPCI node component of the object identifier.
 *
 * @param id is the object identifier with the MPCI node component to get.
 *
 * @return Returns the MPCI node component of the object identifier.
 *
 * @par Notes
 * This directive does not validate the object identifier provided in ``id``.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_id_get_node( rtems_id id );

/* Generated from spec:/rtems/object/if/id-get-node-macro */
#define rtems_object_id_get_node( _id ) _Objects_Get_node( _id )

/* Generated from spec:/rtems/object/if/id-get-index */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the index component of the object identifier.
 *
 * @param id is the object identifier with the index component to get.
 *
 * @return Returns the index component of the object identifier.
 *
 * @par Notes
 * This directive does not validate the object identifier provided in ``id``.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_id_get_index( rtems_id id );

/* Generated from spec:/rtems/object/if/id-get-index-macro */
#define rtems_object_id_get_index( _id ) _Objects_Get_index( _id )

/* Generated from spec:/rtems/object/if/id-api-minimum */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the lowest valid value for the API component of an object
 *   identifier.
 *
 * @return Returns the lowest valid value for the API component of an object
 *   identifier.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_id_api_minimum( void );

/* Generated from spec:/rtems/object/if/id-api-minimum-macro */
#define rtems_object_id_api_minimum() OBJECTS_INTERNAL_API

/* Generated from spec:/rtems/object/if/id-api-maximum */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the highest valid value for the API component of an object
 *   identifier.
 *
 * @return Returns the highest valid value for the API component of an object
 *   identifier.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive is implemented by a macro and may be called from within
 *   C/C++ constant expressions.  In addition, a function implementation of the
 *   directive exists for bindings to other programming languages.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_id_api_maximum( void );

/* Generated from spec:/rtems/object/if/id-api-maximum-macro */
#define rtems_object_id_api_maximum() OBJECTS_APIS_LAST

/* Generated from spec:/rtems/object/if/api-minimum-class */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the lowest valid class value of the object API.
 *
 * @param api is the object API to get the lowest valid class value.
 *
 * @retval -1 The object API was invalid.
 *
 * @return Returns the lowest valid class value of the object API.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_api_minimum_class( int api );

/* Generated from spec:/rtems/object/if/api-maximum-class */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the highest valid class value of the object API.
 *
 * @param api is the object API to get the highest valid class value.
 *
 * @retval 0 The object API was invalid.
 *
 * @return Returns the highest valid class value of the object API.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
int rtems_object_api_maximum_class( int api );

/* Generated from spec:/rtems/object/if/get-api-name */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets a descriptive name of the object API.
 *
 * @param api is the object API to get the name.
 *
 * @retval "BAD API" The API was invalid.
 *
 * @return Returns a descriptive name of the API, if the API was valid.
 *
 * @par Notes
 * The string returned is from constant space.  Do not modify or free it.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
const char *rtems_object_get_api_name( int api );

/* Generated from spec:/rtems/object/if/get-api-class-name */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets a descriptive name of the object class of the object API.
 *
 * @param the_api is the object API of the object class.
 *
 * @param the_class is the object class of the object API to get the name.
 *
 * @retval "BAD API" The API was invalid.
 *
 * @retval "BAD CLASS" The class of the API was invalid.
 *
 * @return Returns a descriptive name of the class of the API, if the class of
 *   the API and the API were valid.
 *
 * @par Notes
 * The string returned is from constant space.  Do not modify or free it.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
const char *rtems_object_get_api_class_name( int the_api, int the_class );

/* Generated from spec:/rtems/object/if/get-class-information */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the object class information of the object class of the object
 *   API.
 *
 * @param the_api is the object API of the object class.
 *
 * @param the_class is the object class of the object API to get the class
 *   information.
 *
 * @param[out] info is the pointer to an rtems_object_api_class_information
 *   object.  When the directive call is successful, the object class
 *   information of the class of the API will be stored in this object.
 *
 * @retval ::RTEMS_SUCCESSFUL The requested operation was successful.
 *
 * @retval ::RTEMS_INVALID_ADDRESS The ``info`` parameter was NULL.
 *
 * @retval ::RTEMS_INVALID_NUMBER The class of the API or the API was invalid.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
rtems_status_code rtems_object_get_class_information(
  int                                 the_api,
  int                                 the_class,
  rtems_object_api_class_information *info
);

/* Generated from spec:/rtems/object/if/get-local-node */

/**
 * @ingroup RTEMSAPIClassicObject
 *
 * @brief Gets the local MPCI node number.
 *
 * @return Returns the local MPCI node number.
 *
 * @par Constraints
 * @parblock
 * The following constraints apply to this directive:
 *
 * * The directive may be called from within any runtime context.
 *
 * * The directive will not cause the calling task to be preempted.
 * @endparblock
 */
static inline uint16_t rtems_object_get_local_node( void )
{
  return _Objects_Local_node;
}

#ifdef __cplusplus
}
#endif

#endif /* _RTEMS_RTEMS_OBJECT_H */