From a457ff8cb9af3def72f3af98e2ce06d77c576716 Mon Sep 17 00:00:00 2001 From: Zihao Yu Date: Mon, 14 Oct 2019 16:51:48 +0800 Subject: [PATCH] monitor: support long option, also change -a to -m --- Makefile | 4 ++-- src/monitor/monitor.c | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 72f9fa90..aba9548b 100644 --- a/Makefile +++ b/Makefile @@ -58,8 +58,8 @@ $(OBJ_DIR)/%.o: src/%.c .PHONY: app run gdb clean run-env $(QEMU_SO) app: $(BINARY) -override ARGS ?= -l $(BUILD_DIR)/nemu-log.txt -override ARGS += -d $(QEMU_SO) +override ARGS ?= --log=$(BUILD_DIR)/nemu-log.txt +override ARGS += --diff=$(QEMU_SO) # Command to execute NEMU IMG := diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index 3bf47e8a..b60060c6 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -1,6 +1,7 @@ #include "nemu.h" #include "monitor/monitor.h" #include +#include void init_log(const char *log_file); void init_isa(); @@ -64,18 +65,26 @@ static inline long load_img() { } static inline void parse_args(int argc, char *argv[]) { + const struct option table[] = { + {"batch" , no_argument , NULL, 'b'}, + {"log" , required_argument, NULL, 'l'}, + {"diff" , required_argument, NULL, 'd'}, + {"mainargs" , required_argument, NULL, 'm'}, + {"port" , required_argument, NULL, 'p'}, + {0 , 0 , NULL, 0 }, + }; int o; - while ( (o = getopt(argc, argv, "-bl:d:a:p:")) != -1) { + while ( (o = getopt_long(argc, argv, "-bl:d:m:p:", table, NULL)) != -1) { switch (o) { case 'b': is_batch_mode = true; break; - case 'a': mainargs = optarg; break; + case 'm': mainargs = optarg; break; case 'p': sscanf(optarg, "%d", &difftest_port); break; case 'l': log_file = optarg; break; case 'd': diff_so_file = optarg; break; case 1: - if (img_file != NULL) Log("too much argument '%s', ignored", optarg); - else img_file = optarg; - break; + if (img_file != NULL) Log("too much argument '%s', ignored", optarg); + else img_file = optarg; + break; default: panic("Usage: %s [-b] [-l log_file] [img_file]", argv[0]); } -- GitLab