Add explanatory comments to userprog tests.
authorBen Pfaff <blp@cs.stanford.edu>
Sun, 8 Jan 2006 01:08:06 +0000 (01:08 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 8 Jan 2006 01:08:06 +0000 (01:08 +0000)
57 files changed:
src/tests/userprog/args.c
src/tests/userprog/boundary.c
src/tests/userprog/child-bad.c
src/tests/userprog/child-close.c
src/tests/userprog/child-rox.c
src/tests/userprog/child-simple.c
src/tests/userprog/close-bad-fd.c
src/tests/userprog/close-normal.c
src/tests/userprog/close-stdin.c
src/tests/userprog/close-stdout.c
src/tests/userprog/close-twice.c
src/tests/userprog/create-bad-ptr.c
src/tests/userprog/create-bound.c
src/tests/userprog/create-empty.c
src/tests/userprog/create-exists.c
src/tests/userprog/create-long.c
src/tests/userprog/create-normal.c
src/tests/userprog/create-null.c
src/tests/userprog/exec-arg.c
src/tests/userprog/exec-bad-ptr.c
src/tests/userprog/exec-missing.c
src/tests/userprog/exec-multiple.c
src/tests/userprog/exec-once.c
src/tests/userprog/exit.c
src/tests/userprog/halt.c
src/tests/userprog/multi-child-fd.c
src/tests/userprog/multi-recurse.c
src/tests/userprog/open-bad-ptr.c
src/tests/userprog/open-boundary.c
src/tests/userprog/open-empty.c
src/tests/userprog/open-missing.c
src/tests/userprog/open-normal.c
src/tests/userprog/open-null.c
src/tests/userprog/open-twice.c
src/tests/userprog/read-bad-fd.c
src/tests/userprog/read-bad-ptr.c
src/tests/userprog/read-boundary.c
src/tests/userprog/read-normal.c
src/tests/userprog/read-stdout.c
src/tests/userprog/read-zero.c
src/tests/userprog/rox-child.c
src/tests/userprog/rox-multichild.c
src/tests/userprog/rox-simple.c
src/tests/userprog/sc-bad-arg.c
src/tests/userprog/sc-bad-sp.c
src/tests/userprog/sc-boundary-2.c
src/tests/userprog/sc-boundary.c
src/tests/userprog/wait-bad-pid.c
src/tests/userprog/wait-killed.c
src/tests/userprog/wait-simple.c
src/tests/userprog/wait-twice.c
src/tests/userprog/write-bad-fd.c
src/tests/userprog/write-bad-ptr.c
src/tests/userprog/write-boundary.c
src/tests/userprog/write-normal.c
src/tests/userprog/write-stdin.c
src/tests/userprog/write-zero.c

index 504b1c276ed0e8f203cd1653ea2226872920b5cc..20eda447c4998883f693b011f930cc05ca8950e0 100644 (file)
@@ -1,3 +1,8 @@
+/* Prints the command-line arguments.
+   This program is used for all of the args-* tests.  Grading is
+   done differently for each of the args-* tests based on the
+   output. */
+
 #include "tests/lib.h"
 
 int
index 50f2618d3db62852a7368630e267eba22afeb27d..59907ec935d36d8e498766730138741f0143e89d 100644 (file)
@@ -1,3 +1,7 @@
+/* Utility function for tests that try to break system calls by
+   passing them data that crosses from one virtual page to
+   another. */
+
 #include <inttypes.h>
 #include <round.h>
 #include <string.h>
index 185617c2dfe45e6060fe0594aa3943875d1654a5..77d7a69d25013ffdd51aaa3290bfd228c9cb74af 100644 (file)
@@ -1,3 +1,8 @@
+/* Child process run by wait-killed test.
+   Sets the stack pointer (%esp) to an invalid value and invokes
+   a system call, which should then terminate the process with a
+   -1 exit code. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index 83e3d06966cc8efabed1696a8ed5fc33f9511036..ac948c8efe6978e98960fceda85218b84a3c3415 100644 (file)
@@ -1,3 +1,12 @@
+/* Child process run by multi-child-fd test.
+
+   Attempts to close the file descriptor passed as the first
+   command-line argument.  This is invalid, because file
+   descriptors are not inherited in Pintos.  Two results are
+   allowed: either the system call should return without taking
+   any action, or the kernel should terminate the process with a
+   -1 exit code. */
+
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
index fdff97b2410021a1ea30b1b59992901a2769e032..aba808bde2b52dde3b559d31fd3e9e75771140da 100644 (file)
@@ -1,3 +1,9 @@
+/* Child process run by rox-child and rox-multichild tests.
+   Opens and tries to write to its own executable, verifying that
+   that is disallowed.
+   Then recursively executes itself to the depth indicated by the
+   first command-line argument. */
+
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
index eb4cb639a093e92a5d487bcb0038c9875e16d0ec..0d2dacf704f253d352c55288f48156370528c510 100644 (file)
@@ -1,3 +1,7 @@
+/* Child process run by exec-multiple, exec-one, wait-simple, and
+   wait-twice tests.
+   Just prints a single message and terminates. */
+
 #include <stdio.h>
 #include "tests/lib.h"
 
index a69cdfdc0c9e9eb6913150afcffe610f781c4ada..f63bb9abe870769582db3c501dd4c721752221fe 100644 (file)
@@ -1,3 +1,6 @@
+/* Tries to close an invalid fd, which must either fail silently
+   or terminate with exit code -1. */
+
 #include <syscall.h>
 #include "tests/main.h"
 
index 0fb2006476c1bd4b2135c03180160a98d221a7c3..8ce04e39ff6b6067a601cc8af888d14276d9f39a 100644 (file)
@@ -1,3 +1,5 @@
+/* Opens a file and then closes it. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 0b64ef9a774ad95621efb893717aa750b7840632..9bbf9f2fd282d207973f68c0d2ffe2b4c87757df 100644 (file)
@@ -1,3 +1,6 @@
+/* Tries to close the keyboard input stream, which must either
+   fail silently or terminate with exit code -1. */
+
 #include <syscall.h>
 #include "tests/main.h"
 
index 72f30d723564e23d1ecf00d6a0f050e0a212019f..886523fc45808168d5020572763b6bbc7adc4a1f 100644 (file)
@@ -1,3 +1,6 @@
+/* Tries to close the console output stream, which must either
+   fail silently or terminate with exit code -1. */
+
 #include <syscall.h>
 #include "tests/main.h"
 
index d3f1e57bc5a81f4fc004b2fd3a0261114f18ea53..830bccf38be9ddf4df11d4014ac43cc527831206 100644 (file)
@@ -1,3 +1,7 @@
+/* Opens a file and then tries to close it twice.  The second
+   close must either fail silently or terminate with exit code
+   -1. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index f5df1f01d1fd6f37250b0e954d325c17a145c64e..4a07bb3b7f807c10e42254d155990f325cb8e108 100644 (file)
@@ -1,3 +1,7 @@
+/* Passes a bad pointer to the create system call,
+   which must cause the process to be terminated with exit code
+   -1. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index 7ce0ae3c5866c3a0edf2ca5dcb2c601cf152bc06..0a829f3cb7c67cfe1e7fd9e854ef615c211361fe 100644 (file)
@@ -1,3 +1,6 @@
+/* Opens a file whose name spans the boundary between two pages.
+   This is valid, so it must succeed. */
+
 #include <syscall.h>
 #include "tests/userprog/boundary.h"
 #include "tests/lib.h"
index 4cb74d84624fe0314e5429d087582b38255b3260..fa26b43e37bf791b81d92ca789d293fe8c8109e1 100644 (file)
@@ -1,3 +1,5 @@
+/* Tries to create a file with the empty string as its name. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index a947ab7c78ae1e220acf009739543e888fdd631f..d395008138b3700aab17eb3efdbf769e3c3e72b4 100644 (file)
@@ -1,3 +1,6 @@
+/* Verifies that trying to create a file under a name that
+   already exists will fail. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 005a8b86292386e1824eb7c382ac91f16e43e852..16b31bd5e227e0d314d569888c926d665b840cba 100644 (file)
@@ -1,3 +1,6 @@
+/* Tries to create a file with a name that is much too long,
+   which must fail. */
+
 #include <string.h>
 #include <syscall.h>
 #include "tests/lib.h"
index 10eba339f26a30cc73260829fcdd8d27c18a2c08..3cbc4636b821647dccc895de56c48cb018594883 100644 (file)
@@ -1,3 +1,5 @@
+/* Creates an ordinary empty file. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index 98b2bed062bd5174113e0ae7d65b83ff6108ab8e..287cb23fe338c899eca63e2d7231d89469e02c99 100644 (file)
@@ -1,3 +1,6 @@
+/* Tries to create a file with the null pointer as its name.
+   The process must be terminated with exit code -1. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index b49304eb1aab8aefcbaa1eb9e8bf845d4fd2c24d..82d074457bce0a259b88970510ae6569d402ca29 100644 (file)
@@ -1,3 +1,5 @@
+/* Tests argument passing to child processes. */
+
 #include <syscall.h>
 #include "tests/main.h"
 
index a70c504cfcfb0770de77fb44114fb767a48c9eab..0abadd30f141913977806fc6892cb34810d7359b 100644 (file)
@@ -1,3 +1,6 @@
+/* Passes an invalid pointer to the exec system call.
+   The process must be terminated with -1 exit code. */
+
 #include <syscall.h>
 #include "tests/main.h"
 
index 53617e0c3167defa7a3a30bccdd6e3321d7b9857..bf08cad14678c17fbcc611578f8e56c5f7948235 100644 (file)
@@ -1,3 +1,6 @@
+/* Tries to execute a nonexistent process.
+   The exec system call must return -1. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 02345faea516ac36ebc8c338f41e9a5422d99190..ba4c26ecbd862a46ce39cd8f24ac281fa1c20b3c 100644 (file)
@@ -1,3 +1,5 @@
+/* Executes and waits for multiple child processes. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index aa043fa27bd7c4089d837a54022ea76f6646b5e9..7bae5a159d61053839dd7788fe546665ed50164d 100644 (file)
@@ -1,3 +1,5 @@
+/* Executes and waits for a single child process. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index ca5996975e61691ba21a1553a6655aad3ac1f99a..cb4eb8fc2769ae240ebd089e76a2a4b87c7841e6 100644 (file)
@@ -1,3 +1,5 @@
+/* Tests the exit system call. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index b4fd9e1068b14f14d16e5d7fe50857ab8f451286..4a99bce04600aca879d1c46bc8380d799c80d100 100644 (file)
@@ -1,3 +1,5 @@
+/* Tests the halt system call. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index 019708ec989fe55295b9f6a397bd59fa84f19c82..48de4b4afae62427a63e3d56d08ac02f9718693b 100644 (file)
@@ -1,3 +1,8 @@
+/* Opens a file and then runs a subprocess that tries to close
+   the file.  (Pintos does not have inheritance of file handles,
+   so this must fail.)  The parent process then attempts to use
+   the file handle, which must succeed. */
+
 #include <stdio.h>
 #include <syscall.h>
 #include "tests/userprog/sample.inc"
index 7786831da87dda144af819ff68111296eb704ee3..7172ec3cb6ce83c7df082c483cbaa9545f57e8f9 100644 (file)
@@ -1,3 +1,6 @@
+/* Executes itself recursively to the depth indicated by the
+   first command-line argument. */
+
 #include <debug.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -10,8 +13,6 @@ int
 main (int argc UNUSED, char *argv[]) 
 {
   int n = atoi (argv[1]);
-  if (n == 0)
-    n = atoi (argv[0]);
 
   msg ("begin %d", n);
   if (n != 0) 
index 8176aa2f0f3c38abcc82a8b1b9dce3930bc6f409..9cd4edf5c66d3d429a5874937ee73270cb065238 100644 (file)
@@ -1,3 +1,6 @@
+/* Passes an invalid pointer to the open system call.
+   The process must be terminated with -1 exit code. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index adf04d8cd26d8c7957f0d79d2719cae8c3d35a82..cc8ff8b4b37e0f594eb21bbd6980cdd130b84b47 100644 (file)
@@ -1,3 +1,6 @@
+/* Creates a file whose name spans the boundary between two pages.
+   This is valid, so it must succeed. */
+
 #include <syscall.h>
 #include "tests/userprog/boundary.h"
 #include "tests/lib.h"
index 28e7b80d8a8bcf6e0011753c5f28a9d6ebe75b2a..3ea99074acf473d512e344844574d354ff35c4c1 100644 (file)
@@ -1,3 +1,5 @@
+/* Tries to open a file with the empty string as its name. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 58661afe50190e673c6585031d06923ac5b24e7d..13ecbda488fc3b7fbebe1be19716f7381e9561c4 100644 (file)
@@ -1,3 +1,5 @@
+/* Tries to open a nonexistent file. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 4040fc20f34478eb9c474f6444cf8bafff51365c..5132465335d17f1302689910aff9bffe7bef1c0a 100644 (file)
@@ -1,3 +1,5 @@
+/* Open a file. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index ba30807189d7b5f6b120416a866826e2c74f45c6..bb418b88b33c20109ec74f4501ffa48c41daa45f 100644 (file)
@@ -1,3 +1,6 @@
+/* Tries to open a file with the null pointer as its name.
+   The process must be terminated with exit code -1. */
+
 #include <stddef.h>
 #include <syscall.h>
 #include "tests/main.h"
index c8841917456cb39e35a9c547aa11a9873757e027..dd333af1c1ad3ec91757736d75d3948d5366896a 100644 (file)
@@ -1,3 +1,7 @@
+/* Tries to open the same file twice,
+   which must succeed and must return a different file descriptor
+   in each case. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 029f647f0b2534d6c50daf9566e303457d0fa194..a8b190d0d4b6092609ba0826eb2a49c4b4936f36 100644 (file)
@@ -1,3 +1,7 @@
+/* Tries to read from an invalid fd,
+   which must either fail silently or terminate the process with
+   exit code -1. */
+
 #include <limits.h>
 #include <syscall.h>
 #include "tests/lib.h"
index 950642769e4d40a205c54940033f5dc4a9e9f71e..8fe756ec6e640c3e50f6cf301a99c89253a1abb5 100644 (file)
@@ -1,3 +1,6 @@
+/* Passes an invalid pointer to the read system call.
+   The process must be terminated with -1 exit code. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index b5843a84544784a4a5f5df43f4ff829193e7801e..9c19966fa5cde0e997a005cfe3d97c9e6e170f5c 100644 (file)
@@ -1,3 +1,6 @@
+/* Reads data spanning two pages in virtual address space,
+   which must succeed. */
+
 #include <string.h>
 #include <syscall.h>
 #include "tests/userprog/boundary.h"
index a68881897b65f0a2fb6e7084ea89bf03826df084..16d15cc20f71e088587ef07a92dcf726789dbe20 100644 (file)
@@ -1,3 +1,5 @@
+/* Try reading a file in the most normal way. */
+
 #include "tests/userprog/sample.inc"
 #include "tests/lib.h"
 #include "tests/main.h"
index 0018e4f64d13612e704d611a0bb44a2a008d9ca7..d0630b961d17130f7117e669d43b62b2a59dac71 100644 (file)
@@ -1,3 +1,7 @@
+/* Try reading from fd 1 (stdout), 
+   which may just fail or terminate the process with -1 exit
+   code. */
+
 #include <stdio.h>
 #include <syscall.h>
 #include "tests/main.h"
index db9d206d3dcee050b078757d26538e5feaab28fb..e441817d13f8b0c4f969d49489de95bb748b050d 100644 (file)
@@ -1,3 +1,6 @@
+/* Try a 0-byte read, which should return 0 without reading
+   anything. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 257c4d9c1404779c5a443d737d4733019418c048..30afba25933d403c51de14af0be2311a78bd5b3d 100644 (file)
@@ -1,2 +1,5 @@
+/* Ensure that the executable of a running process cannot be
+   modified, even by a child process. */
+
 #define CHILD_CNT "1"
 #include "tests/userprog/rox-child.inc"
index 602d767c3a3a02434c019bcec4411db3a5db90e4..8e74dab244d4405a320b4266ad6a1902a71f187d 100644 (file)
@@ -1,2 +1,5 @@
+/* Ensure that the executable of a running process cannot be
+   modified, even in the presence of multiple children. */
+
 #define CHILD_CNT "5"
 #include "tests/userprog/rox-child.inc"
index d02439458193998cb0548e37102974c9db4931e9..e84a064cb9d602d740fd14de8635f794dd031932 100644 (file)
@@ -1,3 +1,6 @@
+/* Ensure that the executable of a running process cannot be
+   modified. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index b990468db3eb031fcbdd0674dc0202d18c3fdb61..e0cad1581c6620983b15485ba59f316bdcc20f4c 100644 (file)
@@ -1,3 +1,9 @@
+/* Sticks a system call number (SYS_exit) at the very top of the
+   stack, then invokes a system call with the stack pointer
+   (%esp) set to its address.  The process must be terminated
+   with -1 exit code because the argument to the system call
+   would be above the top of the user address space. */
+
 #include <syscall-nr.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 2ae20e96d01cd63b2f421feb1786af2fcb40f9db..56a5b8d4b8ee09a00a26875cfae44848215755d7 100644 (file)
@@ -1,3 +1,7 @@
+/* Invokes a system call with the stack pointer (%esp) set to a
+   bad address.  The process must be terminated with -1 exit
+   code. */
+
 #include "tests/lib.h"
 #include "tests/main.h"
 
index 47d28c6dfcbcec1de4b2240db03cf6671ef5b5e0..de357fcb6f7cd332ec3f83178c89adac3c7db883 100644 (file)
@@ -1,3 +1,7 @@
+/* Invokes a system call with one byte of the system call's
+   argument on a separate page from the rest of the bytes.  This
+   must work. */
+
 #include <syscall-nr.h>
 #include "tests/userprog/boundary.h"
 #include "tests/lib.h"
index 86371d6365b261dfeecc7c1cdbd90d59785cfe9c..28525684d9676c70c4913ef2a4d8c513d2f44009 100644 (file)
@@ -1,3 +1,6 @@
+/* Invokes a system call with the system call number and its
+   argument on separate pages.  This must work. */
+
 #include <syscall-nr.h>
 #include "tests/userprog/boundary.h"
 #include "tests/lib.h"
index 12a2ae4bd0cc6ca0592f6c3e1d2027c6e4713052..3fe8ee4b3709f127e7a652fe593f7b7c2718c01c 100644 (file)
@@ -1,3 +1,6 @@
+/* Waits for an invalid pid.  This may fail or terminate the
+   process with -1 exit code. */
+
 #include <syscall.h>
 #include "tests/main.h"
 
index bc1e9c720c32db6d9cbedc571ce3c9b82a14366d..6a2a6b52d1c82112e184f29c23b7fc0eec6e37df 100644 (file)
@@ -1,3 +1,5 @@
+/* Wait for a process that will be killed for bad behavior. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index f4e209bb19f6ebc485e7d78a5e902be237870bc2..d3afcf3c63f671b65fbfcaa4538e9accd6878a81 100644 (file)
@@ -1,3 +1,5 @@
+/* Wait for a subprocess to finish. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 9386ffe4bebebe553007b2e880c865234c1387d4..785e684939d31dcfa1994ed586f07e3aab39834a 100644 (file)
@@ -1,3 +1,7 @@
+/* Wait for a subprocess to finish, twice.
+   The first call must wait in the usual way and return the exit code.
+   The second wait call must return -1 immediately. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index af9a7f25233da5c247fa3917c91e97c4008054c2..f3b11517e6a0ee9293f695857fdd4c77ec674d22 100644 (file)
@@ -1,3 +1,7 @@
+/* Tries to write to an invalid fd,
+   which must either fail silently or terminate the process with
+   exit code -1. */
+
 #include <limits.h>
 #include <syscall.h>
 #include "tests/main.h"
index bf0dead70b6e4782f1a5931210c2b026d32a4d11..533647900bfd21a8b7b09b6f32e0dee4fb62c8f7 100644 (file)
@@ -1,3 +1,6 @@
+/* Passes an invalid pointer to the write system call.
+   The process must be terminated with -1 exit code. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 639e981635acd8a986d9b06439115ee827312c5d..d2de1d428383fb8e925098566ec85815911fd6ba 100644 (file)
@@ -1,3 +1,6 @@
+/* Writes data spanning two pages in virtual address space,
+   which must succeed. */
+
 #include <string.h>
 #include <syscall.h>
 #include "tests/userprog/boundary.h"
index b13da9a0fea4b166c2a380f93da5668fc0e2413e..e0297aa38475f5adcf41562be33f20a4f9a159e8 100644 (file)
@@ -1,3 +1,5 @@
+/* Try writing a file in the most normal way. */
+
 #include <syscall.h>
 #include "tests/userprog/sample.inc"
 #include "tests/lib.h"
index 9c42bd204d53feb71259a5f9f0f7769c713d38f0..491ea5380d8d23aeed355f7fcfba66cd495675d9 100644 (file)
@@ -1,3 +1,7 @@
+/* Try writing to fd 0 (stdin), 
+   which may just fail or terminate the process with -1 exit
+   code. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"
index 4634e5bf1cde47cd0b9883fab0596f69cf9c6db4..d8dac9bc1058c8378e638214403e30ca50d66aa1 100644 (file)
@@ -1,3 +1,6 @@
+/* Try a 0-byte write, which should return 0 without writing
+   anything. */
+
 #include <syscall.h>
 #include "tests/lib.h"
 #include "tests/main.h"