xref: /haiku/src/add-ons/kernel/network/protocols/unix/UnixDebug.h (revision 4b3b81da9e459443d75329cfd08bc9a57ad02653)
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