Command line support for altering the log file location

Add command line support for logging to a location other than /tmp/qemu.log.

With logging enabled (command line option -d), the log is written to
the hard-coded path /tmp/qemu.log. This patch adds support for writing
the log to a different location by passing the -D option.

Signed-off-by: Matthew Fernandez <matthew.fernandez@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
Matthew Fernandez 2011-06-07 16:32:40 +00:00 committed by Blue Swirl
parent 71f34ad053
commit c235d7387c
7 changed files with 114 additions and 54 deletions

View file

@ -738,6 +738,8 @@ TaskState *first_task_state;
int main(int argc, char **argv)
{
const char *filename;
const char *log_file = DEBUG_LOGFILE;
const char *log_mask = NULL;
struct target_pt_regs regs1, *regs = &regs1;
TaskState ts1, *ts = &ts1;
CPUState *env;
@ -749,9 +751,6 @@ int main(int argc, char **argv)
if (argc <= 1)
usage();
/* init debug */
cpu_set_log_filename(DEBUG_LOGFILE);
optind = 1;
for(;;) {
if (optind >= argc)
@ -764,22 +763,15 @@ int main(int argc, char **argv)
if (!strcmp(r, "-")) {
break;
} else if (!strcmp(r, "d")) {
int mask;
CPULogItem *item;
if (optind >= argc)
break;
r = argv[optind++];
mask = cpu_str_to_log_mask(r);
if (!mask) {
printf("Log items (comma separated):\n");
for(item = cpu_log_items; item->mask != 0; item++) {
printf("%-10s %s\n", item->name, item->help);
}
exit(1);
if (optind >= argc) {
break;
}
cpu_set_log(mask);
log_mask = argv[optind++];
} else if (!strcmp(r, "D")) {
if (optind >= argc) {
break;
}
log_file = argv[optind++];
} else if (!strcmp(r, "s")) {
r = argv[optind++];
stack_size = strtol(r, (char **)&r, 0);
@ -821,6 +813,23 @@ int main(int argc, char **argv)
usage();
filename = argv[optind];
/* init debug */
cpu_set_log_filename(log_file);
if (log_mask) {
int mask;
CPULogItem *item;
mask = cpu_str_to_log_mask(r);
if (!mask) {
printf("Log items (comma separated):\n");
for (item = cpu_log_items; item->mask != 0; item++) {
printf("%-10s %s\n", item->name, item->help);
}
exit(1);
}
cpu_set_log(mask);
}
/* Zero out regs */
memset(regs, 0, sizeof(struct target_pt_regs));