1 /* 2 * Copyright 2008, Ingo Weinhold, ingo_weinhold@gmx.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef UNIX_DEBUG_H 6 #define UNIX_DEBUG_H 7 8 9 #include <Drivers.h> 10 11 12 #if UNIX_DEBUG_LEVEL 13 # define TRACE(args...) dprintf(args) 14 # define PRINT_ERROR(error) \ 15 do { \ 16 dprintf("[%ld] l. %d: %s: %s\n", find_thread(NULL), \ 17 __LINE__, __PRETTY_FUNCTION__, strerror(error)); \ 18 } while (false) 19 # if UNIX_DEBUG_LEVEL >= 2 20 # define REPORT_ERROR(error) PRINT_ERROR(error) 21 # define RETURN_ERROR(error) \ 22 do { \ 23 __typeof(error) error_RETURN_ERROR = (error); \ 24 PRINT_ERROR(error_RETURN_ERROR); \ 25 return error_RETURN_ERROR; \ 26 } while (false) 27 # else 28 # define REPORT_ERROR(error) \ 29 do { \ 30 __typeof(error) error_REPORT_ERROR = (error); \ 31 if (error_REPORT_ERROR < 0) \ 32 PRINT_ERROR(error_REPORT_ERROR); \ 33 } while (false) 34 # define RETURN_ERROR(error) \ 35 do { \ 36 __typeof(error) error_RETURN_ERROR = (error); \ 37 if (error_RETURN_ERROR < 0) \ 38 PRINT_ERROR(error_RETURN_ERROR); \ 39 return error_RETURN_ERROR; \ 40 } while (false) 41 # endif 42 #else 43 # define TRACE(args...) do {} while (false) 44 # define REPORT_ERROR(error) 45 # define RETURN_ERROR(error) 46 #endif 47 48 49 #endif // UNIX_DEBUG_H 50