提交 a457ff8c 编写于 作者: Z Zihao Yu

monitor: support long option, also change -a to -m

上级 1b866a65
......@@ -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 :=
......
#include "nemu.h"
#include "monitor/monitor.h"
#include <unistd.h>
#include <getopt.h>
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]);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册