2
* Copyright (c) 2011 Mark Heily <mark@heily.com>
4
* Permission to use, copy, modify, and distribute this software for any
5
* purpose with or without fee is hereby granted, provided that the above
6
* copyright notice and this permission notice appear in all copies.
8
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
extern char *DEBUG_IDENT;
25
#if defined(__linux__)
27
#include <linux/unistd.h>
28
#include <sys/syscall.h>
31
# define THREAD_ID ((pid_t) syscall(__NR_gettid))
33
# define THREAD_ID (pthread_self())
35
# define THREAD_ID (GetCurrentThreadId())
37
# error Unsupported platform
42
#define dbg_puts(str) do { \
44
fprintf(stderr, "%s [%d]: %s(): %s\n", \
45
DEBUG_IDENT, THREAD_ID, __func__, str); \
48
#define dbg_printf(fmt,...) do { \
50
fprintf(stderr, "%s [%d]: %s(): "fmt"\n", \
51
DEBUG_IDENT, THREAD_ID, __func__, __VA_ARGS__); \
54
#define dbg_perror(str) do { \
56
fprintf(stderr, "%s [%d]: %s(): %s: %s (errno=%d)\n", \
57
DEBUG_IDENT, THREAD_ID, __func__, str, \
58
strerror(errno), errno); \
61
# define reset_errno() do { errno = 0; } while (0)
64
# define dbg_lasterror(str) do { \
66
fprintf(stderr, "%s: [%d] %s(): %s: (LastError=%d)\n", \
67
THREAD_ID, __func__, str, GetLastError()); \
70
# define dbg_lasterror(str) ;
74
# define dbg_puts(str) ;
75
# define dbg_printf(fmt,...) ;
76
# define dbg_perror(str) ;
77
# define dbg_lasterror(str) ;
78
# define reset_errno() ;
81
#endif /* ! _DEBUG_H */