mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 14:53:54 -06:00
util/log: Pass Error pointer to qemu_set_log
Do not force exit within qemu_set_log; return bool and pass an Error value back up the stack as per usual. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220417183019.755276-5-richard.henderson@linaro.org>
This commit is contained in:
parent
e2c7c6a454
commit
c5955f4ff4
12 changed files with 22 additions and 18 deletions
|
@ -414,7 +414,7 @@ int main(int argc, char **argv)
|
||||||
qemu_print_log_usage(stdout);
|
qemu_print_log_usage(stdout);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
qemu_set_log(mask);
|
qemu_set_log(mask, &error_fatal);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (optind >= argc) {
|
if (optind >= argc) {
|
||||||
|
|
|
@ -147,7 +147,7 @@ typedef struct QEMULogItem {
|
||||||
|
|
||||||
extern const QEMULogItem qemu_log_items[];
|
extern const QEMULogItem qemu_log_items[];
|
||||||
|
|
||||||
void qemu_set_log(int log_flags);
|
bool qemu_set_log(int log_flags, Error **errp);
|
||||||
bool qemu_set_log_filename(const char *filename, Error **errp);
|
bool qemu_set_log_filename(const char *filename, Error **errp);
|
||||||
void qemu_set_dfilter_ranges(const char *ranges, Error **errp);
|
void qemu_set_dfilter_ranges(const char *ranges, Error **errp);
|
||||||
bool qemu_log_in_addr_range(uint64_t addr);
|
bool qemu_log_in_addr_range(uint64_t addr);
|
||||||
|
|
|
@ -679,7 +679,7 @@ int main(int argc, char **argv, char **envp)
|
||||||
|
|
||||||
log_mask = last_log_mask | (enable_strace ? LOG_STRACE : 0);
|
log_mask = last_log_mask | (enable_strace ? LOG_STRACE : 0);
|
||||||
if (log_mask) {
|
if (log_mask) {
|
||||||
qemu_set_log(log_mask);
|
qemu_set_log(log_mask, &error_fatal);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!trace_init_backends()) {
|
if (!trace_init_backends()) {
|
||||||
|
|
|
@ -428,6 +428,7 @@ static void hmp_log(Monitor *mon, const QDict *qdict)
|
||||||
{
|
{
|
||||||
int mask;
|
int mask;
|
||||||
const char *items = qdict_get_str(qdict, "items");
|
const char *items = qdict_get_str(qdict, "items");
|
||||||
|
Error *err = NULL;
|
||||||
|
|
||||||
if (!strcmp(items, "none")) {
|
if (!strcmp(items, "none")) {
|
||||||
mask = 0;
|
mask = 0;
|
||||||
|
@ -438,7 +439,10 @@ static void hmp_log(Monitor *mon, const QDict *qdict)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qemu_set_log(mask);
|
|
||||||
|
if (!qemu_set_log(mask, &err)) {
|
||||||
|
error_report_err(err);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hmp_singlestep(Monitor *mon, const QDict *qdict)
|
static void hmp_singlestep(Monitor *mon, const QDict *qdict)
|
||||||
|
|
|
@ -5443,7 +5443,7 @@ int main(int argc, char **argv)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
trace_init_file();
|
trace_init_file();
|
||||||
qemu_set_log(LOG_TRACE);
|
qemu_set_log(LOG_TRACE, &error_fatal);
|
||||||
|
|
||||||
/* find the command */
|
/* find the command */
|
||||||
for (cmd = img_cmds; cmd->name != NULL; cmd++) {
|
for (cmd = img_cmds; cmd->name != NULL; cmd++) {
|
||||||
|
|
|
@ -634,7 +634,7 @@ int main(int argc, char **argv)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
trace_init_file();
|
trace_init_file();
|
||||||
qemu_set_log(LOG_TRACE);
|
qemu_set_log(LOG_TRACE, &error_fatal);
|
||||||
|
|
||||||
/* initialize commands */
|
/* initialize commands */
|
||||||
qemuio_add_command(&quit_cmd);
|
qemuio_add_command(&quit_cmd);
|
||||||
|
|
|
@ -804,7 +804,7 @@ int main(int argc, char **argv)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
trace_init_file();
|
trace_init_file();
|
||||||
qemu_set_log(LOG_TRACE);
|
qemu_set_log(LOG_TRACE, &error_fatal);
|
||||||
|
|
||||||
socket_activation = check_socket_activation();
|
socket_activation = check_socket_activation();
|
||||||
if (socket_activation == 0) {
|
if (socket_activation == 0) {
|
||||||
|
|
|
@ -1001,7 +1001,7 @@ int main(int argc, char **argv)
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
trace_init_file();
|
trace_init_file();
|
||||||
qemu_set_log(LOG_TRACE);
|
qemu_set_log(LOG_TRACE, &error_fatal);
|
||||||
|
|
||||||
#ifdef CONFIG_MPATH
|
#ifdef CONFIG_MPATH
|
||||||
dm_init();
|
dm_init();
|
||||||
|
|
|
@ -2570,9 +2570,9 @@ static void qemu_process_early_options(void)
|
||||||
qemu_print_log_usage(stdout);
|
qemu_print_log_usage(stdout);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
qemu_set_log(mask);
|
qemu_set_log(mask, &error_fatal);
|
||||||
} else {
|
} else {
|
||||||
qemu_set_log(0);
|
qemu_set_log(0, &error_fatal);
|
||||||
}
|
}
|
||||||
|
|
||||||
qemu_add_default_firmwarepath();
|
qemu_add_default_firmwarepath();
|
||||||
|
|
|
@ -392,7 +392,7 @@ int main(int argc, char *argv[])
|
||||||
if (!trace_init_backends()) {
|
if (!trace_init_backends()) {
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
qemu_set_log(LOG_TRACE);
|
qemu_set_log(LOG_TRACE, &error_fatal);
|
||||||
|
|
||||||
qemu_init_main_loop(&error_fatal);
|
qemu_init_main_loop(&error_fatal);
|
||||||
process_options(argc, argv, false);
|
process_options(argc, argv, false);
|
||||||
|
|
|
@ -122,7 +122,7 @@ static void test_logfile_write(gconstpointer data)
|
||||||
* In cases where a logging backend other than log is used,
|
* In cases where a logging backend other than log is used,
|
||||||
* this is needed.
|
* this is needed.
|
||||||
*/
|
*/
|
||||||
qemu_set_log(CPU_LOG_TB_OUT_ASM);
|
qemu_set_log(CPU_LOG_TB_OUT_ASM, &error_abort);
|
||||||
file_path = g_build_filename(dir, "qemu_test_log_write0.log", NULL);
|
file_path = g_build_filename(dir, "qemu_test_log_write0.log", NULL);
|
||||||
file_path1 = g_build_filename(dir, "qemu_test_log_write1.log", NULL);
|
file_path1 = g_build_filename(dir, "qemu_test_log_write1.log", NULL);
|
||||||
|
|
||||||
|
|
12
util/log.c
12
util/log.c
|
@ -73,7 +73,7 @@ static void qemu_logfile_free(QemuLogFile *logfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* enable or disable low levels log */
|
/* enable or disable low levels log */
|
||||||
void qemu_set_log(int log_flags)
|
bool qemu_set_log(int log_flags, Error **errp)
|
||||||
{
|
{
|
||||||
bool need_to_open_file = false;
|
bool need_to_open_file = false;
|
||||||
QemuLogFile *logfile;
|
QemuLogFile *logfile;
|
||||||
|
@ -103,9 +103,9 @@ void qemu_set_log(int log_flags)
|
||||||
if (logfilename) {
|
if (logfilename) {
|
||||||
logfile->fd = fopen(logfilename, log_append ? "a" : "w");
|
logfile->fd = fopen(logfilename, log_append ? "a" : "w");
|
||||||
if (!logfile->fd) {
|
if (!logfile->fd) {
|
||||||
g_free(logfile);
|
error_setg_errno(errp, errno, "Error opening logfile %s",
|
||||||
perror(logfilename);
|
logfilename);
|
||||||
_exit(1);
|
return false;
|
||||||
}
|
}
|
||||||
/* In case we are a daemon redirect stderr to logfile */
|
/* In case we are a daemon redirect stderr to logfile */
|
||||||
if (is_daemonized()) {
|
if (is_daemonized()) {
|
||||||
|
@ -129,6 +129,7 @@ void qemu_set_log(int log_flags)
|
||||||
log_append = 1;
|
log_append = 1;
|
||||||
qatomic_rcu_set(&qemu_logfile, logfile);
|
qatomic_rcu_set(&qemu_logfile, logfile);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -159,8 +160,7 @@ bool qemu_set_log_filename(const char *filename, Error **errp)
|
||||||
}
|
}
|
||||||
|
|
||||||
qemu_log_close();
|
qemu_log_close();
|
||||||
qemu_set_log(qemu_loglevel);
|
return qemu_set_log(qemu_loglevel, errp);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Returns true if addr is in our debug filter or no filter defined
|
/* Returns true if addr is in our debug filter or no filter defined
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue