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