1 #ifndef QEMU_LOG_H 2 #define QEMU_LOG_H 3 4 /* The deprecated global variables: */ 5 extern FILE *logfile; 6 extern 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 #define qemu_log_enabled() (logfile != NULL) 19 20 /* Returns true if a bit is set in the current loglevel mask 21 */ 22 #define qemu_loglevel_mask(b) ((loglevel & (b)) != 0) 23 24 25 /* Logging functions: */ 26 27 /* main logging function 28 */ 29 #define qemu_log(...) do { \ 30 if (logfile) \ 31 fprintf(logfile, ## __VA_ARGS__); \ 32 } while (0) 33 34 /* vfprintf-like logging function 35 */ 36 #define qemu_log_vprintf(fmt, va) do { \ 37 if (logfile) \ 38 vfprintf(logfile, fmt, va); \ 39 } while (0) 40 41 /* log only if a bit is set on the current loglevel mask 42 */ 43 #define qemu_log_mask(b, ...) do { \ 44 if (loglevel & (b)) \ 45 fprintf(logfile, ## __VA_ARGS__); \ 46 } while (0) 47 48 49 50 51 /* Special cases: */ 52 53 /* cpu_dump_state() logging functions: */ 54 #define log_cpu_state(env, f) cpu_dump_state((env), logfile, fprintf, (f)); 55 #define log_cpu_state_mask(b, env, f) do { \ 56 if (loglevel & (b)) log_cpu_state((env), (f)); \ 57 } while (0) 58 59 /* disas() and target_disas() to logfile: */ 60 #define log_target_disas(start, len, flags) \ 61 target_disas(logfile, (start), (len), (flags)) 62 #define log_disas(start, len) \ 63 disas(logfile, (start), (len)) 64 65 /* page_dump() output to the log file: */ 66 #define log_page_dump() page_dump(logfile) 67 68 69 70 /* Maintenance: */ 71 72 /* fflush() the log file */ 73 #define qemu_log_flush() fflush(logfile) 74 75 /* Close the log file */ 76 #define qemu_log_close() do { \ 77 fclose(logfile); \ 78 logfile = NULL; \ 79 } while (0) 80 81 /* Set up a new log file */ 82 #define qemu_log_set_file(f) do { \ 83 logfile = (f); \ 84 } while (0) 85 86 /* Set up a new log file, only if none is set */ 87 #define qemu_log_try_set_file(f) do { \ 88 if (!logfile) \ 89 logfile = (f); \ 90 } while (0) 91 92 93 #endif 94