File indexing completed on 2025-05-11 08:24:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 #ifndef RTEMS_STATUS_CHECKS_H
0037 #define RTEMS_STATUS_CHECKS_H
0038
0039 #include <rtems/bspIo.h>
0040
0041 #ifdef __cplusplus
0042 extern "C" {
0043 #endif
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060 #ifdef DEBUG
0061 #ifndef RTEMS_DEBUG_PRINT
0062 #ifdef RTEMS_STATUS_CHECKS_USE_PRINTK
0063 #define RTEMS_DEBUG_PRINT( fmt, ...) \
0064 printk( "%s: " fmt, __func__, ##__VA_ARGS__)
0065 #else
0066 #include <stdio.h>
0067 #define RTEMS_DEBUG_PRINT( fmt, ...) \
0068 printf( "%s: " fmt, __func__, ##__VA_ARGS__)
0069 #endif
0070 #endif
0071 #else
0072 #ifdef RTEMS_DEBUG_PRINT
0073 #warning RTEMS_DEBUG_PRINT was defined, but DEBUG was undefined
0074 #undef RTEMS_DEBUG_PRINT
0075 #endif
0076 #define RTEMS_DEBUG_PRINT( fmt, ...)
0077 #endif
0078
0079
0080
0081
0082 #define RTEMS_DEBUG_OK( msg) \
0083 RTEMS_DEBUG_PRINT( "Ok: %s\n", msg)
0084
0085
0086
0087
0088 #ifndef RTEMS_SYSLOG_PRINT
0089 #ifdef RTEMS_STATUS_CHECKS_USE_PRINTK
0090 #define RTEMS_SYSLOG_PRINT( fmt, ...) \
0091 printk( fmt, ##__VA_ARGS__)
0092 #else
0093 #include <stdio.h>
0094 #define RTEMS_SYSLOG_PRINT( fmt, ...) \
0095 printf( fmt, ##__VA_ARGS__)
0096 #endif
0097 #endif
0098
0099
0100
0101
0102 #define RTEMS_SYSLOG( fmt, ...) \
0103 RTEMS_SYSLOG_PRINT( "%s: " fmt, __func__, ##__VA_ARGS__)
0104
0105
0106
0107
0108 #define RTEMS_SYSLOG_WARNING( fmt, ...) \
0109 RTEMS_SYSLOG( "Warning: " fmt, ##__VA_ARGS__)
0110
0111
0112
0113
0114
0115 #define RTEMS_SYSLOG_WARNING_SC( sc, msg) \
0116 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0117 RTEMS_SYSLOG_WARNING( "SC = %i: %s\n", (int) sc, msg); \
0118 }
0119
0120
0121
0122
0123 #define RTEMS_SYSLOG_ERROR( fmt, ...) \
0124 RTEMS_SYSLOG( "Error: " fmt, ##__VA_ARGS__)
0125
0126
0127
0128
0129 #define RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg) \
0130 RTEMS_SYSLOG_ERROR( "SC = %i: %s\n", (int) sc, msg);
0131
0132
0133
0134
0135 #define RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg) \
0136 RTEMS_SYSLOG_ERROR( "RV = %i: %s\n", (int) rv, msg);
0137
0138
0139
0140
0141
0142 #define RTEMS_SYSLOG_ERROR_SC( sc, msg) \
0143 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0144 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0145 }
0146
0147
0148
0149
0150
0151 #define RTEMS_SYSLOG_ERROR_RV( rv, msg) \
0152 if ((int) (rv) < 0) { \
0153 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0154 }
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166
0167 #define RTEMS_CHECK_SC( sc, msg) \
0168 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0169 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0170 return (rtems_status_code) sc; \
0171 } else { \
0172 RTEMS_DEBUG_OK( msg); \
0173 }
0174
0175
0176
0177
0178
0179 #define RTEMS_CHECK_SC_RV( sc, msg) \
0180 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0181 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0182 return -((int) (sc)); \
0183 } else { \
0184 RTEMS_DEBUG_OK( msg); \
0185 }
0186
0187
0188
0189
0190
0191 #define RTEMS_CHECK_SC_VOID( sc, msg) \
0192 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0193 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0194 return; \
0195 } else { \
0196 RTEMS_DEBUG_OK( msg); \
0197 }
0198
0199
0200
0201
0202
0203 #define RTEMS_CHECK_SC_TASK( sc, msg) \
0204 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0205 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0206 rtems_task_exit(); \
0207 return; \
0208 } else { \
0209 RTEMS_DEBUG_OK( msg); \
0210 }
0211
0212
0213
0214
0215
0216 #define RTEMS_CHECK_RV( rv, msg) \
0217 if ((int) (rv) < 0) { \
0218 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0219 return (int) rv; \
0220 } else { \
0221 RTEMS_DEBUG_OK( msg); \
0222 }
0223
0224
0225
0226
0227
0228 #define RTEMS_CHECK_RV_SC( rv, msg) \
0229 if ((int) (rv) < 0) { \
0230 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0231 return RTEMS_IO_ERROR; \
0232 } else { \
0233 RTEMS_DEBUG_OK( msg); \
0234 }
0235
0236
0237
0238
0239
0240 #define RTEMS_CHECK_RV_VOID( rv, msg) \
0241 if ((int) (rv) < 0) { \
0242 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0243 return; \
0244 } else { \
0245 RTEMS_DEBUG_OK( msg); \
0246 }
0247
0248
0249
0250
0251
0252 #define RTEMS_CHECK_RV_TASK( rv, msg) \
0253 if ((int) (rv) < 0) { \
0254 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0255 rtems_task_exit(); \
0256 return; \
0257 } else { \
0258 RTEMS_DEBUG_OK( msg); \
0259 }
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272 #define RTEMS_CLEANUP_SC( sc, label, msg) \
0273 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0274 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0275 goto label; \
0276 } else { \
0277 RTEMS_DEBUG_OK( msg); \
0278 }
0279
0280
0281
0282
0283
0284
0285 #define RTEMS_CLEANUP_SC_RV( sc, rv, label, msg) \
0286 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
0287 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0288 rv = -((int) (sc)); \
0289 goto label; \
0290 } else { \
0291 RTEMS_DEBUG_OK( msg); \
0292 }
0293
0294
0295
0296
0297
0298 #define RTEMS_CLEANUP_RV( rv, label, msg) \
0299 if ((int) (rv) < 0) { \
0300 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0301 goto label; \
0302 } else { \
0303 RTEMS_DEBUG_OK( msg); \
0304 }
0305
0306
0307
0308
0309
0310
0311 #define RTEMS_CLEANUP_RV_SC( rv, sc, label, msg) \
0312 if ((int) (rv) < 0) { \
0313 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0314 sc = RTEMS_IO_ERROR; \
0315 goto label; \
0316 } else { \
0317 RTEMS_DEBUG_OK( msg); \
0318 }
0319
0320
0321
0322
0323 #define RTEMS_DO_CLEANUP( label, msg) \
0324 do { \
0325 RTEMS_SYSLOG_ERROR( msg); \
0326 goto label; \
0327 } while (0)
0328
0329
0330
0331
0332
0333 #define RTEMS_DO_CLEANUP_SC( val, sc, label, msg) \
0334 do { \
0335 sc = (rtems_status_code) val; \
0336 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
0337 goto label; \
0338 } while (0)
0339
0340
0341
0342
0343
0344 #define RTEMS_DO_CLEANUP_RV( val, rv, label, msg) \
0345 do { \
0346 rv = (int) val; \
0347 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
0348 goto label; \
0349 } while (0)
0350
0351
0352
0353
0354
0355 #ifdef __cplusplus
0356 }
0357 #endif
0358
0359 #endif