/** * @file * * @defgroup ClassicTypes Types * * @ingroup ClassicRTEMS * @brief Types used by Classic API. */ /* COPYRIGHT (c) 1989-2009. * 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_RTEMS_TYPES_H #define _RTEMS_RTEMS_TYPES_H /* * RTEMS basic type definitions */ #include #include #include #include #include #include #include #include #if defined(RTEMS_MULTIPROCESSING) #include #endif #ifdef __cplusplus extern "C" { #endif /** * @addtogroup ClassicRTEMS */ /**@{**/ #ifdef RTEMS_DEPRECATED_TYPES /** * @brief Single precision float type. * * @deprecated Use @c float instead. */ typedef single_precision rtems_single RTEMS_DEPRECATED; /** * @brief Double precision float type. * * @deprecated Use @c double instead. */ typedef double_precision rtems_double RTEMS_DEPRECATED; /** * @brief RTEMS boolean type. * * @deprecated Use @c bool instead */ typedef boolean rtems_boolean RTEMS_DEPRECATED; #endif /** * @brief Classic API @ref ClassicRTEMSSubSecObjectNames "object name" type. * * Contains the name of a Classic API object. It is an unsigned 32-bit integer * which can be treated as a numeric value or initialized using * rtems_build_name() to contain four ASCII characters. */ typedef uint32_t rtems_name; /** * @brief Used to manage and manipulate * @ref ClassicRTEMSSubSecObjectIdentifiers "RTEMS object identifiers". */ typedef Objects_Id rtems_id; /** * @brief Invalid object identifier value. * * No object can have this identifier value. */ #define RTEMS_ID_NONE OBJECTS_ID_NONE /** * @brief Public name for task context area. */ typedef Context_Control rtems_context RTEMS_DEPRECATED; #if (CPU_HARDWARE_FP == TRUE) || (CPU_SOFTWARE_FP == TRUE) /** * @brief Public name for task floating point context area. */ typedef Context_Control_fp rtems_context_fp RTEMS_DEPRECATED; #endif #if (CPU_ISR_PASSES_FRAME_POINTER == TRUE) /** * @brief Defines the format of the interrupt stack frame as it appears to a * user ISR. * * This data structure is only provided if the interrupt stack frame is passed * to the ISR handler. * * @see rtems_interrupt_catch(). */ typedef CPU_Interrupt_frame rtems_interrupt_frame; #endif /** * @brief Information structure returned by the Heap Handler via the Region * Manager. */ typedef Heap_Information_block region_information_block RTEMS_DEPRECATED; /** * @brief Used to manage and manipulate intervals specified by * @ref ClassicRTEMSSecTime "clock ticks". */ typedef Watchdog_Interval rtems_interval; /** * @brief Represents the CPU usage per thread. * * When using nanoseconds granularity timing, RTEMS may internally use a * variety of representations. */ typedef struct timespec rtems_thread_cpu_usage_t RTEMS_DEPRECATED; /** * @brief Data structure to manage and manipulate calendar * @ref ClassicRTEMSSecTime "time". */ typedef struct { /** * @brief Year, A.D. */ uint32_t year; /** * @brief Month, 1 .. 12. */ uint32_t month; /** * @brief Day, 1 .. 31. */ uint32_t day; /** * @brief Hour, 0 .. 23. */ uint32_t hour; /** * @brief Minute, 0 .. 59. */ uint32_t minute; /** * @brief Second, 0 .. 59. */ uint32_t second; /** * @brief Elapsed ticks between seconds. */ uint32_t ticks; } rtems_time_of_day; /* * MPCI related entries */ #if defined(RTEMS_MULTIPROCESSING) /** * @brief Set of MPCI packet classes which are internally dispatched to the * managers. */ typedef MP_packet_Classes rtems_mp_packet_classes; /** * @brief Prefix found at the beginning of each MPCI packet sent between nodes. */ typedef MP_packet_Prefix rtems_packet_prefix; /** * @brief Indirect pointer to the initialization entry point for an MPCI * handler. */ typedef MPCI_initialization_entry rtems_mpci_initialization_entry; /** * @brief Indirect pointer to the get_packet entry point for an MPCI handler. */ typedef MPCI_get_packet_entry rtems_mpci_get_packet_entry; /** * @brief Indirect pointer to the return_packet entry point for an MPCI * handler. */ typedef MPCI_return_packet_entry rtems_mpci_return_packet_entry; /** * @brief Indirect pointer to the send_packet entry point for an MPCI handler. */ typedef MPCI_send_entry rtems_mpci_send_packet_entry; /** * @brief Indirect pointer to the receive entry point for an MPCI handler. */ typedef MPCI_receive_entry rtems_mpci_receive_packet_entry; /** * @brief Return type from every MPCI handler routine. */ typedef MPCI_Entry rtems_mpci_entry; /** * @brief Structure which is used to configure an MPCI handler. */ typedef MPCI_Control rtems_mpci_table; #endif /** @} */ #ifdef __cplusplus } #endif #endif /* end of include file */