5 typedef struct QemuErrorSink QemuErrorSink
;
15 QemuErrorSink
*previous
;
18 static QemuErrorSink
*qemu_error_sink
;
20 void qemu_errors_to_file(FILE *fp
)
24 sink
= qemu_mallocz(sizeof(*sink
));
25 sink
->dest
= ERR_SINK_FILE
;
27 sink
->previous
= qemu_error_sink
;
28 qemu_error_sink
= sink
;
31 void qemu_errors_to_mon(Monitor
*mon
)
35 sink
= qemu_mallocz(sizeof(*sink
));
36 sink
->dest
= ERR_SINK_MONITOR
;
38 sink
->previous
= qemu_error_sink
;
39 qemu_error_sink
= sink
;
42 void qemu_errors_to_previous(void)
46 assert(qemu_error_sink
!= NULL
);
47 sink
= qemu_error_sink
;
48 qemu_error_sink
= sink
->previous
;
52 void qemu_error(const char *fmt
, ...)
56 assert(qemu_error_sink
!= NULL
);
57 switch (qemu_error_sink
->dest
) {
60 vfprintf(qemu_error_sink
->fp
, fmt
, args
);
63 case ERR_SINK_MONITOR
:
65 monitor_vprintf(qemu_error_sink
->mon
, fmt
, args
);
71 void qemu_error_internal(const char *file
, int linenr
, const char *func
,
77 assert(qemu_error_sink
!= NULL
);
80 qerror
= qerror_from_info(file
, linenr
, func
, fmt
, &va
);
83 switch (qemu_error_sink
->dest
) {
88 case ERR_SINK_MONITOR
:
89 monitor_set_error(qemu_error_sink
->mon
, qerror
);