23#ifndef RTEMS_STATUS_CHECKS_H
24#define RTEMS_STATUS_CHECKS_H
48 #ifndef RTEMS_DEBUG_PRINT
49 #ifdef RTEMS_STATUS_CHECKS_USE_PRINTK
50 #define RTEMS_DEBUG_PRINT( fmt, ...) \
51 printk( "%s: " fmt, __func__, ##__VA_ARGS__)
54 #define RTEMS_DEBUG_PRINT( fmt, ...) \
55 printf( "%s: " fmt, __func__, ##__VA_ARGS__)
59 #ifdef RTEMS_DEBUG_PRINT
60 #warning RTEMS_DEBUG_PRINT was defined, but DEBUG was undefined
61 #undef RTEMS_DEBUG_PRINT
63 #define RTEMS_DEBUG_PRINT( fmt, ...)
69#define RTEMS_DEBUG_OK( msg) \
70 RTEMS_DEBUG_PRINT( "Ok: %s\n", msg)
75#ifndef RTEMS_SYSLOG_PRINT
76 #ifdef RTEMS_STATUS_CHECKS_USE_PRINTK
77 #define RTEMS_SYSLOG_PRINT( fmt, ...) \
78 printk( fmt, ##__VA_ARGS__)
81 #define RTEMS_SYSLOG_PRINT( fmt, ...) \
82 printf( fmt, ##__VA_ARGS__)
89#define RTEMS_SYSLOG( fmt, ...) \
90 RTEMS_SYSLOG_PRINT( "%s: " fmt, __func__, ##__VA_ARGS__)
95#define RTEMS_SYSLOG_WARNING( fmt, ...) \
96 RTEMS_SYSLOG( "Warning: " fmt, ##__VA_ARGS__)
102#define RTEMS_SYSLOG_WARNING_SC( sc, msg) \
103 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
104 RTEMS_SYSLOG_WARNING( "SC = %i: %s\n", (int) sc, msg); \
110#define RTEMS_SYSLOG_ERROR( fmt, ...) \
111 RTEMS_SYSLOG( "Error: " fmt, ##__VA_ARGS__)
116#define RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg) \
117 RTEMS_SYSLOG_ERROR( "SC = %i: %s\n", (int) sc, msg);
122#define RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg) \
123 RTEMS_SYSLOG_ERROR( "RV = %i: %s\n", (int) rv, msg);
129#define RTEMS_SYSLOG_ERROR_SC( sc, msg) \
130 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
131 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
138#define RTEMS_SYSLOG_ERROR_RV( rv, msg) \
139 if ((int) (rv) < 0) { \
140 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
154#define RTEMS_CHECK_SC( sc, msg) \
155 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
156 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
157 return (rtems_status_code) sc; \
159 RTEMS_DEBUG_OK( msg); \
166#define RTEMS_CHECK_SC_RV( sc, msg) \
167 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
168 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
169 return -((int) (sc)); \
171 RTEMS_DEBUG_OK( msg); \
178#define RTEMS_CHECK_SC_VOID( sc, msg) \
179 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
180 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
183 RTEMS_DEBUG_OK( msg); \
190#define RTEMS_CHECK_SC_TASK( sc, msg) \
191 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
192 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
196 RTEMS_DEBUG_OK( msg); \
203#define RTEMS_CHECK_RV( rv, msg) \
204 if ((int) (rv) < 0) { \
205 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
208 RTEMS_DEBUG_OK( msg); \
215#define RTEMS_CHECK_RV_SC( rv, msg) \
216 if ((int) (rv) < 0) { \
217 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
218 return RTEMS_IO_ERROR; \
220 RTEMS_DEBUG_OK( msg); \
227#define RTEMS_CHECK_RV_VOID( rv, msg) \
228 if ((int) (rv) < 0) { \
229 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
232 RTEMS_DEBUG_OK( msg); \
239#define RTEMS_CHECK_RV_TASK( rv, msg) \
240 if ((int) (rv) < 0) { \
241 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
245 RTEMS_DEBUG_OK( msg); \
259#define RTEMS_CLEANUP_SC( sc, label, msg) \
260 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
261 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
264 RTEMS_DEBUG_OK( msg); \
272#define RTEMS_CLEANUP_SC_RV( sc, rv, label, msg) \
273 if ((rtems_status_code) (sc) != RTEMS_SUCCESSFUL) { \
274 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
275 rv = -((int) (sc)); \
278 RTEMS_DEBUG_OK( msg); \
285#define RTEMS_CLEANUP_RV( rv, label, msg) \
286 if ((int) (rv) < 0) { \
287 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
290 RTEMS_DEBUG_OK( msg); \
298#define RTEMS_CLEANUP_RV_SC( rv, sc, label, msg) \
299 if ((int) (rv) < 0) { \
300 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
301 sc = RTEMS_IO_ERROR; \
304 RTEMS_DEBUG_OK( msg); \
310#define RTEMS_DO_CLEANUP( label, msg) \
312 RTEMS_SYSLOG_ERROR( msg); \
320#define RTEMS_DO_CLEANUP_SC( val, sc, label, msg) \
322 sc = (rtems_status_code) val; \
323 RTEMS_SYSLOG_ERROR_WITH_SC( sc, msg); \
331#define RTEMS_DO_CLEANUP_RV( val, rv, label, msg) \
334 RTEMS_SYSLOG_ERROR_WITH_RV( rv, msg); \
Interface to Kernel Print Methods.