From: Ben Pfaff Date: Tue, 9 Nov 2004 00:33:38 +0000 (+0000) Subject: Clarifications. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=edc1683ed9dcb006cbdf2d29a970ed1f0a5b843f;p=pintos-anon Clarifications. --- diff --git a/doc/userprog.texi b/doc/userprog.texi index 894c2f3..0746b2e 100644 --- a/doc/userprog.texi +++ b/doc/userprog.texi @@ -466,7 +466,7 @@ the @file{filesys} directory, and release it afterward. Don't forget that @func{process_execute} also accesses files. @strong{For now, we recommend against modifying code in the @file{filesys} directory.} -We have provided you a function for each system call in +We have provided you a user-level function for each system call in @file{lib/user/syscall.c}. These provide a way for user processes to invoke each system call from a C program. Each of them calls an assembly language routine in @file{lib/user/syscall-stub.S}, which in @@ -971,3 +971,9 @@ In this example, the caller's stack pointer would be at The 80@var{x}86 convention for function return values is to place them in the @samp{EAX} register. System calls that return a value can do so by modifying the @samp{eax} member of @struct{intr_frame}. + +You should try to avoid writing large amounts of repetitive code for +implementing system calls. Each system call argument, whether an +integer or a pointer, takes up 4 bytes on the stack. You should be able +to take advantage of this to avoid writing much near-identical code for +retrieving each system call's arguments from the stack. diff --git a/doc/vm.texi b/doc/vm.texi index e4f463f..72bd6b9 100644 --- a/doc/vm.texi +++ b/doc/vm.texi @@ -291,8 +291,9 @@ The page fault handler, @func{page_fault} in @item Locate the page backing the virtual address that faulted. It might be in the file system, in swap, -already be in physical memory and just not set up in the page table, or it might be an invalid virtual address. +If you implement sharing, it might even +already be in physical memory and just not set up in the page table, If the virtual address is invalid, that is, if there's nothing assigned to go there, or if the virtual address is above