]>
Commit | Line | Data |
---|---|---|
d2e6a577 FG |
1 | #include "common/debug.h" |
2 | #include "common/errno.h" | |
3 | #include "debug.h" | |
4 | ||
5 | #define dout_context g_ceph_context | |
6 | #define dout_subsys ceph_subsys_rbd | |
7 | #undef dout_prefix | |
8 | #define dout_prefix *_dout << "rbd::ggate: " | |
9 | ||
10 | extern "C" void debugv(int level, const char *fmt, va_list ap) { | |
11 | char *msg; | |
12 | int saved_errno = errno; | |
13 | ||
14 | if (g_ceph_context == nullptr) { | |
15 | return; | |
16 | } | |
17 | ||
18 | vasprintf(&msg, fmt, ap); | |
19 | ||
20 | dout(level) << msg << dendl; | |
21 | ||
22 | free(msg); | |
23 | errno = saved_errno; | |
24 | } | |
25 | ||
26 | extern "C" void debug(int level, const char *fmt, ...) { | |
27 | va_list ap; | |
28 | ||
29 | va_start(ap, fmt); | |
30 | debugv(level, fmt, ap); | |
31 | va_end(ap); | |
32 | } | |
33 | ||
34 | extern "C" void errx(const char *fmt, ...) { | |
35 | va_list ap; | |
36 | ||
37 | va_start(ap, fmt); | |
38 | debugv(-1, fmt, ap); | |
39 | va_end(ap); | |
40 | } | |
41 | ||
42 | extern "C" void err(const char *fmt, ...) { | |
43 | va_list ap; | |
44 | char *msg; | |
45 | int saved_errno = errno; | |
46 | ||
47 | va_start(ap, fmt); | |
48 | vasprintf(&msg, fmt, ap); | |
49 | va_end(ap); | |
50 | errno = saved_errno; | |
51 | ||
52 | errx("%s: %s", msg, cpp_strerror(errno).c_str()); | |
53 | ||
54 | free(msg); | |
55 | } |