Change-Id: I38c9fd56b346ccd2cff713f0cd9c929d5550d9c3
Signed-off-by: Kyle Milka <[email protected]>
---
tests/vmm/vmrunkernel.c | 113 +++++++++++++++++++++++-------------------------
1 file changed, 53 insertions(+), 60 deletions(-)
diff --git a/tests/vmm/vmrunkernel.c b/tests/vmm/vmrunkernel.c
index c32c22b..d27e070 100644
--- a/tests/vmm/vmrunkernel.c
+++ b/tests/vmm/vmrunkernel.c
@@ -365,6 +365,9 @@ int main(int argc, char **argv)
char *cmdlinep;
int cmdlinesz, len, cmdline_fd;
char *disk_image_file = NULL;
+ int c;
+ struct stat stat_result;
+ int num_read;
fprintf(stderr, "%p %p %p %p\n", PGSIZE, PGSHIFT, PML1_SHIFT,
PML1_PTE_REACH);
@@ -400,72 +403,62 @@ int main(int argc, char **argv)
((uint32_t *)a_page)[0x30/4] = 0x01060015;
//((uint32_t *)a_page)[0x30/4] = 0xDEADBEEF;
- argc--, argv++;
- // switches ...
- // Sorry, I don't much like the gnu opt parsing code.
- // TODO(dcross): Convert this to use getopt()
- while (1) {
- if (*argv[0] != '-')
- break;
- switch(argv[0][1]) {
- case 'd':
- debug++;
- break;
- case 'v':
- vmmflags |= VMM_VMCALL_PRINTF;
- break;
- case 'm':
- argc--, argv++;
- maxresume = strtoull(argv[0], 0, 0);
- break;
- case 'c':
- argc--, argv++;
- cmdline_extra = argv[0];
- case 'g': /* greedy */
- parlib_never_yield = TRUE;
- break;
- case 's': /* scp */
- parlib_wants_to_be_mcp = FALSE;
- break;
- case 'f': /* file to pass to blk_init */
- argc--; argv++;
- disk_image_file = *argv;
- break;
- case 'k': /* specify file to get cmdline args from */
- argc--; argv++;
- cmdline_fd = open(*argv, O_RDONLY);
- if (cmdline_fd < 0) {
- fprintf(stderr, "failed to open file: %s\n",
*argv);
- exit(1);
- }
- struct stat stat_result;
- if (stat(*argv, &stat_result) == -1) {
- fprintf(stderr, "stat of %s failed\n", *argv);
- exit(1);
- }
- len = stat_result.st_size;
- if (len > 512) {
- fprintf(stderr, "command line options exceed
512 bytes!");
- exit(1);
- }
- int num_read = read(cmdline_fd, cmdline_default, len);
- if (num_read != len) {
- fprintf(stderr, "read failed len was : %d,"
- "num_read was: %d\n", len, num_read);
- exit(1);
- }
- close(cmdline_fd);
- break;
- default:
- fprintf(stderr, "BMAFR\n");
- break;
+ while ((c = getopt(argc, argv, "dvm:c:gcf:k:")) != -1) {
+ switch (c) {
+ case 'd':
+ debug++;
+ break;
+ case 'v':
+ vmmflags |= VMM_VMCALL_PRINTF;
+ break;
+ case 'm':
+ maxresume = strtoull(optarg, 0, 0);
+ break;
+ case 'c':
+ cmdline_extra = optarg;
+ case 'g': /* greedy */
+ parlib_never_yield = TRUE;
+ break;
+ case 's': /* scp */
+ parlib_wants_to_be_mcp = FALSE;
+ break;
+ case 'f': /* file to pass to blk_init */
+ disk_image_file = optarg;
+ break;
+ case 'k': /* specify file to get cmdline args
from */
+ cmdline_fd = open(optarg, O_RDONLY);
+ if (cmdline_fd < 0) {
+ fprintf(stderr, "failed to open file:
%s\n", optarg);
+ exit(1);
+ }
+ if (stat(optarg, &stat_result) == -1) {
+ fprintf(stderr, "stat of %s failed\n",
optarg);
+ exit(1);
+ }
+ len = stat_result.st_size;
+ if (len > 512) {
+ fprintf(stderr, "command line options
exceed 512 bytes!");
+ exit(1);
+ }
+ num_read = read(cmdline_fd, cmdline_default,
len);
+ if (num_read != len) {
+ fprintf(stderr, "read failed len was :
%d, num_read was: %d\n",
+ len, num_read);
+ exit(1);
+ }
+ close(cmdline_fd);
+ break;
+ default:
+ fprintf(stderr, "BMAFR\n");
+ break;
}
- argc--, argv++;
}
if (strlen(cmdline_default) == 0) {
fprintf(stderr, "No command line parameter file specified.\n");
exit(1);
}
+ argc -= optind;
+ argv += optind;
if (argc < 1) {
fprintf(stderr, "Usage: %s vmimage [-n (no vmcall printf)]
[coreboot_tables [loadaddress [entrypoint]]]\n", argv[0]);
exit(1);
--
2.8.0.rc3.226.g39d4020
--
You received this message because you are subscribed to the Google Groups
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.