VirtualBox

source: vbox/trunk/src/recompiler/qemu-log.h@ 37675

Last change on this file since 37675 was 37675, checked in by vboxsync, 14 years ago

rem: Synced with v0.12.5.

  • Property svn:eol-style set to native
File size: 3.0 KB
Line 
1#ifndef QEMU_LOG_H
2#define QEMU_LOG_H
3
4/* The deprecated global variables: */
5extern FILE *logfile;
6extern int loglevel;
7
8
9/*
10 * The new API:
11 *
12 */
13
14/* Log settings checking macros: */
15
16/* Returns true if qemu_log() will really write somewhere
17 */
18#ifndef VBOX
19#define qemu_log_enabled() (logfile != NULL)
20#else
21# define qemu_log_enabled() LogIsEnabled()
22#endif
23
24/* Returns true if a bit is set in the current loglevel mask
25 */
26#define qemu_loglevel_mask(b) ((loglevel & (b)) != 0)
27
28
29
30/* Logging functions: */
31
32/* main logging function
33 */
34#ifndef VBOX
35#define qemu_log(...) do { \
36 if (logfile) \
37 fprintf(logfile, ## __VA_ARGS__); \
38 } while (0)
39#else
40# define qemu_log(...) Log((__VA_ARGS__))
41#endif
42
43/* vfprintf-like logging function
44 */
45#ifndef VBOX
46#define qemu_log_vprintf(fmt, va) do { \
47 if (logfile) \
48 vfprintf(logfile, fmt, va); \
49 } while (0)
50#else
51# define qemu_log_vprintf(fmt, va) do { \
52 if (LogIsEnabled()) \
53 RTLogLoggerExV(LOG_INSTANCE, RTLOGGRPFLAGS_LEVEL_1, LOG_GROUP, fmt, va); \
54 } while (0)
55#endif
56
57/* log only if a bit is set on the current loglevel mask
58 */
59#ifndef VBOX
60#define qemu_log_mask(b, ...) do { \
61 if (loglevel & (b)) \
62 fprintf(logfile, ## __VA_ARGS__); \
63 } while (0)
64#else
65# define qemu_log_mask(b, ...) do { \
66 if (loglevel & (b)) \
67 Log((__VA_ARGS__)); \
68 } while (0)
69#endif
70
71
72
73
74/* Special cases: */
75
76/* cpu_dump_state() logging functions: */
77#ifndef VBOX
78#define log_cpu_state(env, f) cpu_dump_state((env), logfile, fprintf, (f));
79#else
80#define log_cpu_state(env, f) cpu_dump_state((env), NULL, NULL, (f));
81#endif
82#define log_cpu_state_mask(b, env, f) do { \
83 if (loglevel & (b)) log_cpu_state((env), (f)); \
84 } while (0)
85
86/* disas() and target_disas() to logfile: */
87#define log_target_disas(start, len, flags) \
88 target_disas(logfile, (start), (len), (flags))
89#define log_disas(start, len) \
90 disas(logfile, (start), (len))
91
92/* page_dump() output to the log file: */
93#define log_page_dump() page_dump(logfile)
94
95
96
97/* Maintenance: */
98
99/* fflush() the log file */
100#ifndef VBOX
101#define qemu_log_flush() fflush(logfile)
102#else
103# define qemu_log_flush() RTLogFlush(LOG_INSTANCE)
104#endif
105
106/* Close the log file */
107#ifndef VBOX
108#define qemu_log_close() do { \
109 fclose(logfile); \
110 logfile = NULL; \
111 } while (0)
112#else
113# define qemu_log_close() do { } while (0)
114#endif
115
116/* Set up a new log file */
117#ifndef VBOX
118#define qemu_log_set_file(f) do { \
119 logfile = (f); \
120 } while (0)
121#else
122# define qemu_log_set_file(f) do { } while (0)
123#endif
124
125/* Set up a new log file, only if none is set */
126#ifndef VBOX
127#define qemu_log_try_set_file(f) do { \
128 if (!logfile) \
129 logfile = (f); \
130 } while (0)
131#else
132#define qemu_log_try_set_file(f) do { } while (0)
133#endif
134
135
136#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette