huzayn@huzayn-VMware-Virtual-Platform:~/xv6/xv6-labs-2025$ ./grade-lab-util sleep make: “kernel/kernel”已是最新。 == Test sleep, no arguments == sleep, no arguments: OK (2.9s) == Test sleep, returns == sleep, returns: OK (2.4s) == Test sleep, makes syscall == sleep, makes syscall: OK (2.0s)
for (int k = 1; k < argc; k++) { int fd = open(argv[k], O_RDONLY); if (fd < 0) { fprintf(2, "sixfive: cannot open %s\n", argv[k]); exit(1); } process(fd); // 处理这个文件 close(fd); // 处理完关闭,准备下一个 }
exit(0); }
输入./grade-lab-util sixfive测试程序
1 2 3 4 5
huzayn@huzayn-VMware-Virtual-Platform:~/xv6/xv6-labs-2025$ ./grade-lab-util sixfive make: “kernel/kernel”已是最新。 == Test sixfive_test == sixfive_test: OK (1.2s) == Test sixfive_readme == sixfive_readme: OK (1.7s) == Test sixfive_all == sixfive_all: OK (1.3s)
struct sss { char *ptr; int num1; short num2; char byte; char bytes[8]; } example; example.ptr = "hello"; example.num1 = 1819438967; example.num2 = 100; example.byte = 'z'; strcpy(example.bytes, "xyzzy"); printf("Example 4:\n"); memdump("pihcS", (char*) &example); printf("Example 5:\n"); memdump("sccccc", (char*) &example); } else if(argc == 2){ // format in argv[1], up to 512 bytes of data from standard input. char data[512]; int n = 0; memset(data, '\0', sizeof(data)); while(n < sizeof(data)){ int nn = read(0, data + n, sizeof(data) - n); if(nn <= 0) break; n += nn; } memdump(argv[1], data); } else { printf("Usage: memdump [format]\n"); exit(1); } exit(0); }
void memdump(char *fmt, char *data) { for(int i=0;fmt[i];i++){ char f = fmt[i]; switch(f){ case 'i': { printf("%d\n", *(int*)data); data += 4; break; }; case 'p': { printf("%x\n", *(uint*)data); data += 8; break; }; case 'h': { printf("%d\n", *(short*)data); data += 2; break; }; case 'c': { printf("%c\n", *(char*)data); data += 1; break; }; case 's': { printf("%s\n", *(char**)data); data += 8; break; }; case 'S': { printf("%s", (char*)data); data += strlen(data) + 1; break; }; } } }
测试如下:
1 2 3 4 5
huzayn@huzayn-VMware-Virtual-Platform:~/xv6/xv6-labs-2025$ ./grade-lab-util memdump make: “kernel/kernel”已是最新。 == Test memdump, examples == memdump, examples: OK (1.6s) (Old xv6.out.memdump_examples failure log removed) == Test memdump, format ii, S, p == memdump, format ii, S, p: OK (0.9s)