Update tests.
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 12 Nov 2004 06:01:17 +0000 (06:01 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 12 Nov 2004 06:01:17 +0000 (06:01 +0000)
14 files changed:
grading/threads/review.txt
grading/userprog/child-bad.c
grading/userprog/close-bad-fd.c
grading/userprog/create-bad-ptr.c
grading/userprog/exec-bad-ptr.c
grading/userprog/join-bad-pid.c
grading/userprog/open-bad-ptr.c
grading/userprog/read-bad-fd.c
grading/userprog/read-bad-ptr.c
grading/userprog/review.txt
grading/userprog/run-tests
grading/userprog/sc-bad-sp.c
grading/userprog/write-bad-fd.c
grading/userprog/write-bad-ptr.c

index 62c5d81573f27106a73849f8265f599cdbb2ad4b..08585b56f60ccd268bec98b1088b90cf81c0d723 100644 (file)
@@ -14,7 +14,6 @@ DESIGN [[/40]]
 --------------
 
  -20 Missing or far too brief DESIGNDOC
-  -2 Troublesome or unexplained dependencies
   -2 Changing interfaces, each (max -6)
 
 DESIGNDOC (per problem):
index a256e6360c27d00ef2f85172de0700a44f48b925..914bde6ec22a1b50cf9391d8d2cc46b0ff22432a 100644 (file)
@@ -5,7 +5,7 @@ int
 main (void) 
 {
   printf ("(child-bad) begin\n"); 
-  asm volatile ("mov $0xc0101234, %esp; int $0x30");
+  asm volatile ("mov $0x20101234, %esp; int $0x30");
   printf ("(child-bad) end\n"); 
   return 0;
 }
index cdea3c56c2032d42f1f4c762bc1618f6d4da0bbc..ad929a884733b8b63afd081f4616bf31c44d8350 100644 (file)
@@ -5,7 +5,7 @@ int
 main (void) 
 {
   printf ("(close-bad-fd) begin\n");
-  close (0xc0101234);
+  close (0x20101234);
   printf ("(close-bad-fd) end\n");
   return 0;
 }
index 514234e0a9305f4587be9e2dd97d3a6892579bb8..a6b7f76c841ef52a06e51ddd7333e9657910b80e 100644 (file)
@@ -5,7 +5,7 @@ int
 main (void) 
 {
   printf ("(create-bad-ptr) begin\n");
-  create ((char *) 0xc0101234, 0);
+  create ((char *) 0x20101234, 0);
   printf ("(create-bad-ptr) end\n");
   return 0;
 }
index 28dcc9b08c7d3915a77ca1154baa3854950a7821..fce7adbafaaecc8813f32f7ce276092b7b9f44ab 100644 (file)
@@ -5,7 +5,7 @@ int
 main (void) 
 {
   printf ("(exec-bad-ptr) begin\n");
-  exec ((char *) 0xc0101234);
+  exec ((char *) 0x20101234);
   printf ("(exec-bad-ptr) end\n");
   return 0;
 }
index 9729097d7da5854ea6eef925f1a6b64940899d6f..d2902bb3bf18cb10da68ded5830cb893f9b2f90a 100644 (file)
@@ -5,7 +5,7 @@ int
 main (void) 
 {
   printf ("(join-bad-pid) begin\n");
-  join ((pid_t) 0xc0101234);
+  join ((pid_t) 0x20101234);
   printf ("(join-bad-pid) end\n");
   return 0;
 }
index 71bd119c6de3ef75d49052cd3ce48597d04be963..f73e6d891f2abca65545c398eae2b92c3ae9a93b 100644 (file)
@@ -5,7 +5,7 @@ int
 main (void) 
 {
   printf ("(open-bad-ptr) begin\n");
-  open ((char *) 0xc0101234);
+  open ((char *) 0x20101234);
   printf ("(open-bad-ptr) end\n");
   return 0;
 }
index eb9700da7a69da393bd235d382a670e5840288d8..959687c73cae624ae62a8b9ef07768108342f68b 100644 (file)
@@ -6,7 +6,7 @@ main (void)
 {
   char buf;
   printf ("(read-bad-fd) begin\n");
-  read (0xc0101234, &buf, 1);
+  read (0x20101234, &buf, 1);
   printf ("(read-bad-fd) end\n");
   return 0;
 }
index 860e48502215ed83a46f91fe138ae778abf75ff7..5ddb2a3d110ad880d4d00161b2778a7d4601279a 100644 (file)
@@ -11,7 +11,7 @@ main (void)
   if (handle < 2)
     printf ("(read-bad-ptr) fail: open() returned %d\n", handle);
 
-  read (handle, (char *) 0xc0101234, 123);
+  read (handle, (char *) 0x20101234, 123);
   
   printf ("(read-bad-ptr) end\n");
   return 0;
index 38ea7ac91f3389681d0ddfc8ba819705b11e62ed..c48657e1898666fd1d3a805bcd8248be1cb9560a 100644 (file)
@@ -1,65 +1,55 @@
-Design (/120 points)
---------------------
+Test cases [[/25]]
+------------------
+  -15 Didn't write own test cases
+  -10 Insufficient testing
 
-a) DESIGNDOC (/60 pts)
-    a) Arg passing                                          (/10)
-    b) System calls                                         (/20)
-         Didn't discuss global vs local allocation of fileID's
-         How to handle exceptions & why (ie killing processes
-           that do bad things)
-         Explaining choice of openFileID's & ASIDS
-    c) Multiprogramming                                     (/30)
-         How to find a free page.
-         Explaining how new processes are executed.
-         How they deal with running out of memory error on loading.
+Design [[/100]]
+---------------
 
-b) Other Design (/60 pts)
+Quality of DESIGNDOC
+  -10 Arg passing
+  -20 Copying data around:
+      User-to-kernel copying.
+      Kernel-to-user copying.
+      String copying.
+  -20 System calls:
+      Allocation of file descriptors.
+      Handling exceptions and related cleanup.
+      pid_t rationale (if they changed tid_t -> pid_t mapping).
+      Synchronization of system calls and filesystem.
 
-   1. Argument passing
-      No checking for page boundaries in argument passing               -10
-      Uses memcpy/bcopy/memmove or file reading/writing for             +5
-        copying up to/starting from page boundaries -- good job!
-        (Search for memcpy/bcopy, not just extern, make sure they call it
-        with the possibility of copying more than 4 bytes at a time. ALSO if
-        they do File Read/Writes then that is not byte-by-byte but they will
-        fail page crossing only take off for failing the pagecrossing test.)
-      Don't decomp / reuse translation code                             -5
-      Using strtok instead of strtok_r or strsep                        -1
-        (strtok is not thread-safe)
+Overall:
+  -1 Gratuitous use of malloc() (e.g. for allocating a list or a lock)
+  -1 Inappropriate use of ASSERT (e.g. to verify that malloc() succeeded)
 
-   2. System calls
-      No checking for page boundaries in system calls                   -20
-        (-5 if they only forgot for some system calls but did it somewhere)
-      Interrupts turned off for all system calls                        -10
-      Doesn't close open files after process exits                      -2
-      table/when file is closed, it is not removed from file table
-      Uses printf/fscanf/putc/getc when interacting                     -5
-        with StandardInput / StandardOutput
-      Using fixed length buffer for Read/Write                          -5
-      Using pointer to int casts as ASID/FileId without justifying      -5
+Program arguments:
+  +1 Support multiple pages of arguments.
 
-   3. Multiprogramming
-      Don't use the bitmap object                                       -5
-      Bitmap is not cleared when process dies                           -5
-      Access to bitmap is not sychronized                               -5
-      getting next ASID is not synchronized                             -5
-        ...or (mututally exclusive, depending on their solution)...
-      Doesn't use ASID's at all, but their system for identifying       -5
-        processes has synchronization or uniqueness problems (e.g. 
-        careless use of AddrSpace*'s)
-      Multiple translations for a page                                  -10
-        (One vaddr maps to two paddr's, or vice versa)
+User/kernel copying:
+  -5 Too many copies of user/kernel copying code
+  -10 Doesn't check for page boundaries
+  -3 Imperfect checking for page boundaries
+  -5 Doesn't check whether pointers are at or above PHYS_BASE
+  -2 Imperfect checking whether pointers are at or above PHYS_BASE
+  +3 Copies large chunks while properly observing page boundaries
+  +3 Scans for string null terminators w/o checking individual bytes
+     while properly observing page boundaries
+  +3 Uses get_user() and put_user() functions from FAQ for copying
 
-Style (/30 points)
-------------------
-0) Had to modify code to get to compile the first                       -10
-   time
-1) Minor changes to machine code                                        -10
-2) Extraneous output                                                    -5
-3) Unexplained dependencies                                             -5
-4) Not Decomposing Exception handler                                    -5
+System call design:
+  -5 Disables interrupts without reasonable justification
+  -2 Doesn't close open files at process exit
+  -2 Doesn't acquire file system lock to close files at process exit
+  -5 Buffer overflow in read or write system call
+  -5 System call error exit leaks memory/fails to release global lock
+  -5 Uses a pointer as a file descriptor or pid without justifying
+
+Style [[/25]]
+-------------
+  -5 Extraneous output caused warnings
+  -5 Didn't print process termination messages
+  -5 One big function for handling system calls
+  -5 No attempt to conform to existing coding style
 
-TESTCASEs (/30 points)
-----------------------
-    Don't write own testcases                                           -15
-    Not sufficient testing                                        up to -10
+Comments
+--------
index dd7cd218b901d2e0fc889f4fe6916aa2e280f255..4f4bb100a55ae74d2788242bef6d753e9addb7a4 100755 (executable)
@@ -489,11 +489,12 @@ sub fix_exit_codes {
        local ($_) = $output[$i];
        
        my ($process, $code);
-       if ((($process, $code) = /^([-a-zA-Z0-9 ]+):.*[ \(](-?\d+)\b\)?$/)
-           || (($process, $code) = /^([-a-zA-Z0-9 ]+) exit\((-?\d+)\)$/)
+       if ((($process, $code) = /^([-a-z0-9 ]+):.*[ \(](-?\d+)\b\)?$/)
+           || (($process, $code) = /^([-a-z0-9 ]+) exit\((-?\d+)\)$/)
            || (($process, $code)
-               = /^([-a-zA-Z0-9 ]+) \(.*\): exit\((-?\d+)\)$/)
-           || (($process, $code) = /^([-a-zA-Z0-9 ]+):\( (-?\d+) \) $/)
+               = /^([-a-z0-9 ]+) \(.*\): exit\((-?\d+)\)$/)
+           || (($process, $code) = /^([-a-z0-9 ]+):\( (-?\d+) \) $/)
+           || (($code, $process) = /^shell: exit\((-?\d+)\) \| ([-a-z0-9]+)/)
 ) {
            $process = substr ($process, 0, 15);
            $process =~ s/\s.*//;
index d7a0f826a17b747828b3d1f62a8d0dc94091b734..11538788b920e8a8af01043feaa2849b38bf3535 100644 (file)
@@ -5,7 +5,7 @@ int
 main (void) 
 {
   printf ("(sc-bad-sp) begin\n"); 
-  asm volatile ("mov $0xc0101234, %esp; int $0x30");
+  asm volatile ("mov $0x20101234, %esp; int $0x30");
   printf ("(sc-bad-sp) end\n"); 
   return 0;
 }
index 33df0011e5c5b356ffa49e8c7b7eea81275a46ea..5f46d6be616840a32094c3b477aea333ae6a3672 100644 (file)
@@ -6,7 +6,7 @@ main (void)
 {
   char buf = 123;
   printf ("(write-bad-fd) begin\n");
-  write (0xc0101234, &buf, 1);
+  write (0x20101234, &buf, 1);
   printf ("(write-bad-fd) end\n");
   return 0;
 }
index 9431c70694e031e2e829936a1bc670929c3362df..b36f4477f951d514b9c891db3a78f43be9caf2ad 100644 (file)
@@ -11,7 +11,7 @@ main (void)
   if (handle < 2)
     printf ("(write-bad-ptr) fail: open() returned %d\n", handle);
 
-  write (handle, (char *) 0xc0101234, 123);
+  write (handle, (char *) 0x20101234, 123);
   
   printf ("(write-bad-ptr) end\n");
   return 0;