20 #ifndef _RTEMS_BASEDEFS_H 21 #define _RTEMS_BASEDEFS_H 30 #include <rtems/score/cpuopts.h> 67 #error "TRUE equals FALSE" 81 #define SCORE_EXTERN extern 95 #define SAPI_EXTERN extern 104 #ifdef RTEMS_API_INIT 109 #define RTEMS_EXTERN extern 118 #ifdef POSIX_API_INIT 123 #define POSIX_EXTERN extern 133 #define RTEMS_INLINE_ROUTINE static __inline__ 135 #define RTEMS_INLINE_ROUTINE static inline 144 #define RTEMS_COMPILER_MEMORY_BARRIER() __asm__ volatile("" ::: "memory") 146 #define RTEMS_COMPILER_MEMORY_BARRIER() 156 #if defined(RTEMS_SCHEDSIM) 157 #define RTEMS_COMPILER_NO_RETURN_ATTRIBUTE 158 #elif defined(__GNUC__) 159 #define RTEMS_COMPILER_NO_RETURN_ATTRIBUTE \ 160 __attribute__ ((noreturn)) 162 #define RTEMS_COMPILER_NO_RETURN_ATTRIBUTE 172 #define RTEMS_COMPILER_PURE_ATTRIBUTE \ 173 __attribute__ ((pure)) 175 #define RTEMS_COMPILER_PURE_ATTRIBUTE 183 #define RTEMS_COMPILER_DEPRECATED_ATTRIBUTE \ 184 __attribute__ ((deprecated)) 186 #define RTEMS_COMPILER_DEPRECATED_ATTRIBUTE 194 #if defined(__GNUC__) 195 #define RTEMS_COMPILER_UNUSED_ATTRIBUTE __attribute__((unused)) 197 #define RTEMS_COMPILER_UNUSED_ATTRIBUTE 204 #if defined(__GNUC__) 205 #define RTEMS_COMPILER_PACKED_ATTRIBUTE __attribute__((packed)) 207 #define RTEMS_COMPILER_PACKED_ATTRIBUTE 210 #if __cplusplus >= 201103L 211 #define RTEMS_STATIC_ASSERT(cond, msg) \ 212 static_assert(cond, # msg) 213 #elif __STDC_VERSION__ >= 201112L 214 #define RTEMS_STATIC_ASSERT(cond, msg) \ 215 _Static_assert(cond, # msg) 217 #define RTEMS_STATIC_ASSERT(cond, msg) \ 218 typedef int rtems_static_assert_ ## msg [(cond) ? 1 : -1] 221 #define RTEMS_ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0])) 228 #define RTEMS_ZERO_LENGTH_ARRAY 0 237 #define RTEMS_CONTAINER_OF( _m, _type, _member_name ) \ 238 ( (_type *) ( (uintptr_t) ( _m ) - offsetof( _type, _member_name ) ) ) 241 #define RTEMS_DEQUALIFY_DEPTHX( _ptr_level, _type, _var ) \ 242 (const_cast<_type>( _var )) 246 #define RTEMS_TYPEOF_REFX(_ptr_level, _ptr_type) \ 247 typeof(_ptr_level(union { int z; typeof(_ptr_type) x; }){0}.x) 249 #if defined(__GNUC__) && !defined(ASM) 250 #if ((__GNUC__ * 1000 + __GNUC_MINOR__) >= 4004) 251 extern void* RTEMS_DEQUALIFY_types_not_compatible(
void)
252 __attribute__((error (
"RTEMS_DEQUALIFY types differ not only by volatile and const")));
254 extern void RTEMS_DEQUALIFY_types_not_compatible(
void);
256 #define RTEMS_DEQUALIFY_DEPTHX( _ptr_level, _type, _var ) ( \ 257 __builtin_choose_expr( __builtin_types_compatible_p ( \ 258 RTEMS_TYPEOF_REFX( _ptr_level, _var ), \ 259 RTEMS_TYPEOF_REFX( _ptr_level, _type ) \ 260 ) || __builtin_types_compatible_p ( _type, void * ), \ 262 RTEMS_DEQUALIFY_types_not_compatible() \ 268 #ifndef RTEMS_DECONST 269 #ifdef RTEMS_DEQUALIFY_DEPTHX 270 #define RTEMS_DECONST( _type, _var ) \ 271 RTEMS_DEQUALIFY_DEPTHX( *, _type, _var ) 279 #define RTEMS_DECONST( _type, _var ) \ 280 ((_type)(uintptr_t)(const void *) ( _var )) 285 #ifndef RTEMS_DEVOLATILE 286 #ifdef RTEMS_DEQUALIFY_DEPTHX 287 #define RTEMS_DEVOLATILE( _type, _var ) \ 288 RTEMS_DEQUALIFY_DEPTHX( *, _type, _var ) 296 #define RTEMS_DEVOLATILE( _type, _var ) \ 297 ((_type)(uintptr_t)(volatile void *) ( _var )) 302 #ifndef RTEMS_DEQUALIFY 303 #ifdef RTEMS_DEQUALIFY_DEPTHX 304 #define RTEMS_DEQUALIFY( _type, _var ) \ 305 RTEMS_DEQUALIFY_DEPTHX( *, _type, _var ) 313 #define RTEMS_DEQUALIFY( _type, _var ) \ 314 ((_type)(uintptr_t)(const volatile void *) ( _var )) 320 #ifdef RTEMS_DEPRECATED_TYPES 321 typedef bool boolean;
322 typedef float single_precision;
323 typedef double double_precision;
void * proc_ptr
XXX: Eventually proc_ptr needs to disappear!!!
Definition: basedefs.h:329