[4b487363] | 1 | /** |
---|
[e4f2fe1] | 2 | * @file |
---|
[067a96a] | 3 | * |
---|
[61b8e9f] | 4 | * @defgroup ClassicTypes Types |
---|
[e4f2fe1] | 5 | * |
---|
[61b8e9f] | 6 | * @ingroup ClassicRTEMS |
---|
| 7 | * @brief Types used by Classic API. |
---|
[4b487363] | 8 | */ |
---|
| 9 | |
---|
[61b8e9f] | 10 | /* COPYRIGHT (c) 1989-2009. |
---|
| 11 | * On-Line Applications Research Corporation (OAR). |
---|
[3235ad9] | 12 | * |
---|
[61b8e9f] | 13 | * The license and distribution terms for this file may be |
---|
| 14 | * found in the file LICENSE in this distribution or at |
---|
[c499856] | 15 | * http://www.rtems.org/license/LICENSE. |
---|
[3235ad9] | 16 | */ |
---|
| 17 | |
---|
[092f142a] | 18 | #ifndef _RTEMS_RTEMS_TYPES_H |
---|
| 19 | #define _RTEMS_RTEMS_TYPES_H |
---|
[3235ad9] | 20 | |
---|
[58823ff] | 21 | /* |
---|
| 22 | * RTEMS basic type definitions |
---|
| 23 | */ |
---|
| 24 | |
---|
[1cb54d1f] | 25 | #include <stdint.h> |
---|
[b541e1f] | 26 | #include <rtems/score/heap.h> |
---|
[5e9b32b] | 27 | #include <rtems/score/object.h> |
---|
| 28 | #include <rtems/score/priority.h> |
---|
[97e2729d] | 29 | #include <rtems/score/watchdog.h> |
---|
[3a4ae6c] | 30 | #include <rtems/rtems/modes.h> |
---|
[97e2729d] | 31 | #if defined(RTEMS_MULTIPROCESSING) |
---|
[5e9b32b] | 32 | #include <rtems/score/mpci.h> |
---|
[97e2729d] | 33 | #endif |
---|
[3235ad9] | 34 | |
---|
[a9cb0b0] | 35 | #ifdef __cplusplus |
---|
| 36 | extern "C" { |
---|
| 37 | #endif |
---|
| 38 | |
---|
[e4f2fe1] | 39 | /** |
---|
| 40 | * @addtogroup ClassicRTEMS |
---|
| 41 | */ |
---|
[b697bc6] | 42 | /**@{**/ |
---|
[e4f2fe1] | 43 | |
---|
[a9cb0b0] | 44 | #ifdef RTEMS_DEPRECATED_TYPES |
---|
[e4f2fe1] | 45 | /** |
---|
| 46 | * @brief Single precision float type. |
---|
| 47 | * |
---|
| 48 | * @deprecated Use @c float instead. |
---|
| 49 | */ |
---|
[a9767a07] | 50 | typedef single_precision rtems_single RTEMS_DEPRECATED; |
---|
[3235ad9] | 51 | |
---|
[e4f2fe1] | 52 | /** |
---|
| 53 | * @brief Double precision float type. |
---|
| 54 | * |
---|
| 55 | * @deprecated Use @c double instead. |
---|
| 56 | */ |
---|
[a9767a07] | 57 | typedef double_precision rtems_double RTEMS_DEPRECATED; |
---|
[8c8fd64] | 58 | |
---|
[e4f2fe1] | 59 | /** |
---|
| 60 | * @brief RTEMS boolean type. |
---|
| 61 | * |
---|
| 62 | * @deprecated Use @c bool instead |
---|
| 63 | */ |
---|
[a9767a07] | 64 | typedef boolean rtems_boolean RTEMS_DEPRECATED; |
---|
[a9cb0b0] | 65 | #endif |
---|
[3235ad9] | 66 | |
---|
[e4f2fe1] | 67 | /** |
---|
[e5a2eb4d] | 68 | * @brief Classic API @ref ClassicRTEMSSubSecObjectNames "object name" type. |
---|
[e4f2fe1] | 69 | * |
---|
[e5a2eb4d] | 70 | * Contains the name of a Classic API object. It is an unsigned 32-bit integer |
---|
[e4f2fe1] | 71 | * which can be treated as a numeric value or initialized using |
---|
| 72 | * rtems_build_name() to contain four ASCII characters. |
---|
| 73 | */ |
---|
[f065e42] | 74 | typedef uint32_t rtems_name; |
---|
[0868844e] | 75 | |
---|
[8c8fd64] | 76 | /** |
---|
[e5a2eb4d] | 77 | * @brief Used to manage and manipulate |
---|
| 78 | * @ref ClassicRTEMSSubSecObjectIdentifiers "RTEMS object identifiers". |
---|
[8c8fd64] | 79 | */ |
---|
[3235ad9] | 80 | typedef Objects_Id rtems_id; |
---|
| 81 | |
---|
[8c8fd64] | 82 | /** |
---|
[e4f2fe1] | 83 | * @brief Invalid object identifier value. |
---|
| 84 | * |
---|
| 85 | * No object can have this identifier value. |
---|
[8c8fd64] | 86 | */ |
---|
[0868844e] | 87 | #define RTEMS_ID_NONE OBJECTS_ID_NONE |
---|
| 88 | |
---|
[8c8fd64] | 89 | /** |
---|
[e4f2fe1] | 90 | * @brief Public name for task context area. |
---|
[8c8fd64] | 91 | */ |
---|
[0ac4a77] | 92 | typedef Context_Control rtems_context RTEMS_DEPRECATED; |
---|
[8c8fd64] | 93 | |
---|
[2cc1b43] | 94 | #if (CPU_HARDWARE_FP == TRUE) || (CPU_SOFTWARE_FP == TRUE) |
---|
[8c8fd64] | 95 | /** |
---|
[e4f2fe1] | 96 | * @brief Public name for task floating point context area. |
---|
[8c8fd64] | 97 | */ |
---|
[7e86e00] | 98 | typedef Context_Control_fp rtems_context_fp RTEMS_DEPRECATED; |
---|
[2cc1b43] | 99 | #endif |
---|
[8c8fd64] | 100 | |
---|
[141e16d] | 101 | #if (CPU_ISR_PASSES_FRAME_POINTER == TRUE) |
---|
[8c8fd64] | 102 | /** |
---|
[e4f2fe1] | 103 | * @brief Defines the format of the interrupt stack frame as it appears to a |
---|
| 104 | * user ISR. |
---|
| 105 | * |
---|
[141e16d] | 106 | * This data structure is only provided if the interrupt stack frame is passed |
---|
| 107 | * to the ISR handler. |
---|
| 108 | * |
---|
| 109 | * @see rtems_interrupt_catch(). |
---|
[8c8fd64] | 110 | */ |
---|
[3235ad9] | 111 | typedef CPU_Interrupt_frame rtems_interrupt_frame; |
---|
[141e16d] | 112 | #endif |
---|
[3235ad9] | 113 | |
---|
[067a96a] | 114 | /** |
---|
[e4f2fe1] | 115 | * @brief Information structure returned by the Heap Handler via the Region |
---|
| 116 | * Manager. |
---|
[b541e1f] | 117 | */ |
---|
| 118 | typedef Heap_Information_block region_information_block; |
---|
| 119 | |
---|
[067a96a] | 120 | /** |
---|
[e5a2eb4d] | 121 | * @brief Used to manage and manipulate intervals specified by |
---|
| 122 | * @ref ClassicRTEMSSecTime "clock ticks". |
---|
[7f6a24ab] | 123 | */ |
---|
[3a4ae6c] | 124 | typedef Watchdog_Interval rtems_interval; |
---|
[812da54] | 125 | |
---|
[9dc2c8d] | 126 | /** |
---|
[e4f2fe1] | 127 | * @brief Represents the CPU usage per thread. |
---|
[9dc2c8d] | 128 | * |
---|
[d8cd045c] | 129 | * When using nanoseconds granularity timing, RTEMS may internally use a |
---|
[c6f7e060] | 130 | * variety of representations. |
---|
[9dc2c8d] | 131 | */ |
---|
[e6b31b27] | 132 | typedef struct timespec rtems_thread_cpu_usage_t; |
---|
[9dc2c8d] | 133 | |
---|
[812da54] | 134 | /** |
---|
[e5a2eb4d] | 135 | * @brief Data structure to manage and manipulate calendar |
---|
| 136 | * @ref ClassicRTEMSSecTime "time". |
---|
[812da54] | 137 | */ |
---|
| 138 | typedef struct { |
---|
[e4f2fe1] | 139 | /** |
---|
| 140 | * @brief Year, A.D. |
---|
| 141 | */ |
---|
[812da54] | 142 | uint32_t year; |
---|
[e4f2fe1] | 143 | /** |
---|
| 144 | * @brief Month, 1 .. 12. |
---|
| 145 | */ |
---|
[812da54] | 146 | uint32_t month; |
---|
[e4f2fe1] | 147 | /** |
---|
| 148 | * @brief Day, 1 .. 31. |
---|
| 149 | */ |
---|
[812da54] | 150 | uint32_t day; |
---|
[e4f2fe1] | 151 | /** |
---|
| 152 | * @brief Hour, 0 .. 23. |
---|
| 153 | */ |
---|
[812da54] | 154 | uint32_t hour; |
---|
[e4f2fe1] | 155 | /** |
---|
| 156 | * @brief Minute, 0 .. 59. |
---|
| 157 | */ |
---|
[812da54] | 158 | uint32_t minute; |
---|
[e4f2fe1] | 159 | /** |
---|
| 160 | * @brief Second, 0 .. 59. |
---|
| 161 | */ |
---|
[812da54] | 162 | uint32_t second; |
---|
[e4f2fe1] | 163 | /** |
---|
| 164 | * @brief Elapsed ticks between seconds. |
---|
| 165 | */ |
---|
[812da54] | 166 | uint32_t ticks; |
---|
| 167 | } rtems_time_of_day; |
---|
[7f6a24ab] | 168 | |
---|
[067a96a] | 169 | /** |
---|
[e4f2fe1] | 170 | * @brief Task mode type. |
---|
[7f6a24ab] | 171 | */ |
---|
| 172 | typedef Modes_Control rtems_mode; |
---|
| 173 | |
---|
[3a4ae6c] | 174 | /* |
---|
| 175 | * MPCI related entries |
---|
| 176 | */ |
---|
[97e2729d] | 177 | #if defined(RTEMS_MULTIPROCESSING) |
---|
[8c8fd64] | 178 | /** |
---|
[e4f2fe1] | 179 | * @brief Set of MPCI packet classes which are internally dispatched to the |
---|
| 180 | * managers. |
---|
[8c8fd64] | 181 | */ |
---|
[3a4ae6c] | 182 | typedef MP_packet_Classes rtems_mp_packet_classes; |
---|
[8c8fd64] | 183 | |
---|
| 184 | /** |
---|
[e4f2fe1] | 185 | * @brief Prefix found at the beginning of each MPCI packet sent between nodes. |
---|
[8c8fd64] | 186 | */ |
---|
[3a4ae6c] | 187 | typedef MP_packet_Prefix rtems_packet_prefix; |
---|
| 188 | |
---|
[8c8fd64] | 189 | /** |
---|
[e4f2fe1] | 190 | * @brief Indirect pointer to the initialization entry point for an MPCI |
---|
| 191 | * handler. |
---|
[8c8fd64] | 192 | */ |
---|
[3a4ae6c] | 193 | typedef MPCI_initialization_entry rtems_mpci_initialization_entry; |
---|
[8c8fd64] | 194 | |
---|
| 195 | /** |
---|
[e4f2fe1] | 196 | * @brief Indirect pointer to the get_packet entry point for an MPCI handler. |
---|
[8c8fd64] | 197 | */ |
---|
[3a4ae6c] | 198 | typedef MPCI_get_packet_entry rtems_mpci_get_packet_entry; |
---|
[8c8fd64] | 199 | |
---|
| 200 | /** |
---|
[e4f2fe1] | 201 | * @brief Indirect pointer to the return_packet entry point for an MPCI |
---|
| 202 | * handler. |
---|
[8c8fd64] | 203 | */ |
---|
[3a4ae6c] | 204 | typedef MPCI_return_packet_entry rtems_mpci_return_packet_entry; |
---|
[8c8fd64] | 205 | |
---|
| 206 | /** |
---|
[e4f2fe1] | 207 | * @brief Indirect pointer to the send_packet entry point for an MPCI handler. |
---|
[8c8fd64] | 208 | */ |
---|
[3a4ae6c] | 209 | typedef MPCI_send_entry rtems_mpci_send_packet_entry; |
---|
[8c8fd64] | 210 | |
---|
| 211 | /** |
---|
[e4f2fe1] | 212 | * @brief Indirect pointer to the receive entry point for an MPCI handler. |
---|
[8c8fd64] | 213 | */ |
---|
[3a4ae6c] | 214 | typedef MPCI_receive_entry rtems_mpci_receive_packet_entry; |
---|
| 215 | |
---|
[8c8fd64] | 216 | /** |
---|
[e4f2fe1] | 217 | * @brief Return type from every MPCI handler routine. |
---|
[8c8fd64] | 218 | */ |
---|
| 219 | typedef MPCI_Entry rtems_mpci_entry; |
---|
| 220 | |
---|
| 221 | /** |
---|
[e4f2fe1] | 222 | * @brief Structure which is used to configure an MPCI handler. |
---|
[8c8fd64] | 223 | */ |
---|
| 224 | typedef MPCI_Control rtems_mpci_table; |
---|
[3a4ae6c] | 225 | |
---|
[97e2729d] | 226 | #endif |
---|
[3a4ae6c] | 227 | |
---|
[e4f2fe1] | 228 | /** @} */ |
---|
| 229 | |
---|
[3235ad9] | 230 | #ifdef __cplusplus |
---|
| 231 | } |
---|
| 232 | #endif |
---|
| 233 | |
---|
| 234 | #endif |
---|
| 235 | /* end of include file */ |
---|