/** * @file * * @ingroup RTEMSAPIClassic * * the Public Interface to the RTEMS Classic API */ /* COPYRIGHT (c) 1989-2008. * 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. */ #ifndef _RTEMS_H #define _RTEMS_H /** * @defgroup RTEMSAPIClassic Classic * * @ingroup RTEMSAPI * * @brief RTEMS Classic API definitions and modules. */ /** @{ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if defined(RTEMS_MULTIPROCESSING) #include #endif #include #include #ifdef __cplusplus extern "C" { #endif /** * @brief Returns the pointer to the RTEMS version string. */ const char *rtems_get_version_string(void); /** * @brief Indicates whether this processor variant has hardware floating point * support. */ #define RTEMS_HAS_HARDWARE_FP CPU_HARDWARE_FP /********************************************************************** * CONSTANTS WHICH MAY BE USED IN OBJECT NAME TO ID SEARCHES **********************************************************************/ /** * @brief Indicates that a search is across all nodes. */ #define RTEMS_SEARCH_ALL_NODES OBJECTS_SEARCH_ALL_NODES /** * @brief Indicates that a search is across all nodes except the one the call * is made from. */ #define RTEMS_SEARCH_OTHER_NODES OBJECTS_SEARCH_OTHER_NODES /** * @brief Indicates that the search is to be restricted to the local node. */ #define RTEMS_SEARCH_LOCAL_NODE OBJECTS_SEARCH_LOCAL_NODE /** * @brief Indicates that the caller wants to obtain the name of the currently * executing thread. * * This constant is only meaningful when obtaining the name of a task. */ #define RTEMS_WHO_AM_I OBJECTS_WHO_AM_I /********************************************************************** * Parameters and return Id's for _Objects_Get_next **********************************************************************/ /** * @brief Lowest valid index value for the index portion of an object * identifier. */ #define RTEMS_OBJECT_ID_INITIAL_INDEX OBJECTS_ID_INITIAL_INDEX /** * @brief Maximum valid index value for the index portion of an object * identifier. */ #define RTEMS_OBJECT_ID_FINAL_INDEX OBJECTS_ID_FINAL_INDEX /** * @brief Returns the identifier of the object with the lowest valid index * value. * * The object is specified by the API @a _api, the object class @a _class and * the node @a _node where the object resides. */ #define RTEMS_OBJECT_ID_INITIAL(_api, _class, _node) \ OBJECTS_ID_INITIAL(_api, _class, _node) /** * @brief Maximum valid object identifier. */ #define RTEMS_OBJECT_ID_FINAL OBJECTS_ID_FINAL /** * @brief Minimum stack size which every thread must exceed. * * It is the minimum stack size recommended for use on this processor. This * value is selected by the RTEMS developers conservatively to minimize the * risk of blown stacks for most user applications. Using this constant when * specifying the task stack size, indicates that the stack size will be at * least RTEMS_MINIMUM_STACK_SIZE bytes in size. If the user configured minimum * stack size is larger than the recommended minimum, then it will be used. */ #define RTEMS_MINIMUM_STACK_SIZE STACK_MINIMUM_SIZE /** * @brief Specifies that the task should be created with the configured minimum * stack size. * * Using this constant when specifying the task stack size indicates that this * task is to be created with a stack size of the minimum stack size that was * configured by the application. If not explicitly configured by the * application, the default configured minimum stack size is the processor * dependent value RTEMS_MINIMUM_STACK_SIZE. Since this uses the configured * minimum stack size value, you may get a stack size that is smaller or larger * than the recommended minimum. This can be used to provide large stacks for * all tasks on complex applications or small stacks on applications that are * trying to conserve memory. */ #define RTEMS_CONFIGURED_MINIMUM_STACK_SIZE 0 /** * @brief Constant for indefinite wait. * * This is actually an illegal interval value. */ #define RTEMS_NO_TIMEOUT ((rtems_interval) WATCHDOG_NO_TIMEOUT) /** * @brief An MPCI must support packets of at least this size. */ #define RTEMS_MINIMUM_PACKET_SIZE MP_PACKET_MINIMUM_PACKET_SIZE /** * @brief Defines the count of @c uint32_t numbers in a packet which must be * converted to native format in a heterogeneous system. * * In packets longer than this value, some of the extra data may be a user * message buffer which is not automatically endian swapped. */ #define RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION #ifdef __cplusplus } #endif /** @} */ #endif /* end of include file */