X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=solutions%2Fp2.patch;h=0940c141ee2d9b97c4c898cf3e8c2c57d1110041;hb=a4d72a2eec532fd923e507399bc33e75bb1c3fe5;hp=0632ffaeb1ce5856cfc3b81df8db252b1b779472;hpb=226119d857608d2687bcbdd9d401b5d04a1970fb;p=pintos-anon diff --git a/solutions/p2.patch b/solutions/p2.patch index 0632ffa..0940c14 100644 --- a/solutions/p2.patch +++ b/solutions/p2.patch @@ -95,9 +95,9 @@ diff -u src/threads/thread.h~ src/threads/thread.h + struct semaphore dead; /* 1=child alive, 0=child dead. */ + }; + - void thread_init (void); - void thread_start (void); - void thread_tick (void); + /* If false (default), use round-robin scheduler. + If true, use multi-level feedback queue scheduler. + Controlled by kernel command-line options "-o mlfqs". Index: src/userprog/exception.c diff -u src/userprog/exception.c~ src/userprog/exception.c --- src/userprog/exception.c~ @@ -493,7 +493,7 @@ Index: src/userprog/syscall.c diff -u src/userprog/syscall.c~ src/userprog/syscall.c --- src/userprog/syscall.c~ +++ src/userprog/syscall.c -@@ -1,20 +1,483 @@ +@@ -1,20 +1,486 @@ #include "userprog/syscall.h" #include +#include @@ -657,7 +657,10 @@ diff -u src/userprog/syscall.c~ src/userprog/syscall.c + for (length = 0; length < PGSIZE; length++) + { + if (us >= (char *) PHYS_BASE || !get_user (ks + length, us++)) -+ thread_exit (); ++ { ++ palloc_free_page (ks); ++ thread_exit (); ++ } + + if (ks[length] == '\0') + return ks;