projects
/
pintos-anon
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
101845b
)
Clarifications.
author
Ben Pfaff
<blp@cs.stanford.edu>
Tue, 9 Nov 2004 00:33:38 +0000
(
00:33
+0000)
committer
Ben Pfaff
<blp@cs.stanford.edu>
Tue, 9 Nov 2004 00:33:38 +0000
(
00:33
+0000)
doc/userprog.texi
patch
|
blob
|
history
doc/vm.texi
patch
|
blob
|
history
diff --git
a/doc/userprog.texi
b/doc/userprog.texi
index 894c2f3cd99d63dbfe1813f6894793b3ef9c9395..0746b2e68f791af7545793a3458bd5d6ed4851a3 100644
(file)
--- 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.}
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
@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}.
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 e4f463f5109df8e42c887f9b9aa6c587f1f61bfa..72bd6b9470f1c367ca40f302f20ef2a4e28ec20d 100644
(file)
--- 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,
@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.
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
If the virtual address is invalid, that is, if there's nothing
assigned to go there, or if the virtual address is above