X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=grading%2Fvm%2Fpage-merge-par.c;h=36f7840bdf68b88053726690548e2e08fcaa344f;hb=2cfc156c39840ce7f1cda6b473de1322691a8a0b;hp=dd24576b5dc34c6e9579956e141432f3adfe4537;hpb=32d3a41e00f5877b7d171637c7f5cab7bdd19164;p=pintos-anon diff --git a/grading/vm/page-merge-par.c b/grading/vm/page-merge-par.c index dd24576..36f7840 100644 --- a/grading/vm/page-merge-par.c +++ b/grading/vm/page-merge-par.c @@ -5,9 +5,12 @@ #else #include "posix-compat.h" #endif -#include "arc4.h" +#include "../lib/arc4.h" -#define CHUNK_SIZE (63 * 1024) /* Max file size. */ +/* This is the max file size for an older version of the Pintos + file system that had 126 direct blocks each pointing to a + single disk sector. We could raise it now. */ +#define CHUNK_SIZE (126 * 512) #define CHUNK_CNT 8 /* Number of chunks. */ #define DATA_SIZE (CHUNK_CNT * CHUNK_SIZE) /* Buffer size. */ @@ -32,7 +35,7 @@ init (void) /* Sort each chunk of buf1 using a subprocess. */ static void -sort (void) +sort_chunks (void) { pid_t children[CHUNK_CNT]; size_t i; @@ -46,7 +49,7 @@ sort (void) printf ("(page-merge-par) sort chunk %zu\n", i); /* Write this chunk to a file. */ - snprintf (fn, sizeof fn, "buf%d", i); + snprintf (fn, sizeof fn, "buf%zu", i); create (fn, CHUNK_SIZE); fd = open (fn); if (fd < 0) @@ -72,14 +75,14 @@ sort (void) char fn[128]; int fd; - if (join (children[i]) != 123) + if (wait (children[i]) != 123) { - printf ("(page-merge-par) join(exec()) returned bad value\n"); + printf ("(page-merge-par) wait(exec()) returned bad value\n"); exit (1); } /* Read chunk back from file. */ - snprintf (fn, sizeof fn, "buf%d", i); + snprintf (fn, sizeof fn, "buf%zu", i); fd = open (fn); if (fd < 0) { @@ -159,7 +162,7 @@ main (void) { printf ("(page-merge-par) begin\n"); init (); - sort (); + sort_chunks (); merge (); verify (); printf ("(page-merge-par) end\n");