Make tests public. Rewrite most tests. Add tests.
[pintos-anon] / grading / vm / patches / 00random.patch
diff --git a/grading/vm/patches/00random.patch b/grading/vm/patches/00random.patch
deleted file mode 100644 (file)
index 3648632..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-Modifies bitmap_scan() to return a random set of bits instead of the
-first set.  Helps to stress-test VM implementation.
-
-Index: pintos/src/lib/kernel/bitmap.c
-===================================================================
-RCS file: /afs/ir.stanford.edu/users/b/l/blp/private/cvs/pintos/src/lib/kernel/bitmap.c,v
-retrieving revision 1.11
-diff -u -p -r1.11 bitmap.c
---- pintos/src/lib/kernel/bitmap.c     2 Jan 2005 02:09:58 -0000       1.11
-+++ pintos/src/lib/kernel/bitmap.c     9 Feb 2005 21:45:27 -0000
-@@ -3,6 +3,7 @@
- #include <limits.h>
- #include <round.h>
- #include <stdio.h>
-+#include <random.h>
- #include "threads/malloc.h"
- #ifdef FILESYS
- #include "filesys/file.h"
-@@ -30,6 +31,8 @@ struct bitmap
-     elem_type *bits;    /* Elements that represent bits. */
-   };
-+bool randomize_bitmaps;
-+
- /* Returns the index of the element that contains the bit
-    numbered BIT_IDX. */
- static inline size_t
-@@ -227,9 +230,28 @@ bitmap_scan (const struct bitmap *b, siz
-     {
-       size_t last = b->bit_cnt - cnt;
-       size_t i;
-+      size_t n = 0;
-+
-+      /* Count number of matches. */
-       for (i = start; i <= last; i++)
--        if (!contains (b, i, cnt, !value))
--          return i; 
-+        if (!contains (b, i, cnt, !value)) 
-+          {
-+            if (randomize_bitmaps)
-+              n++;
-+            else
-+              return i;
-+          }
-+
-+      /* Pick one match. */
-+      if (n != 0) 
-+        {
-+          random_init (0);
-+          n = random_ulong () % n;
-+          for (i = start; i <= last; i++)
-+            if (!contains (b, i, cnt, !value) && n-- == 0)
-+              return i;
-+          NOT_REACHED ();
-+        }
-     }
-   return BITMAP_ERROR;
- }
-Index: pintos/src/lib/kernel/bitmap.h
-===================================================================
-RCS file: /afs/ir.stanford.edu/users/b/l/blp/private/cvs/pintos/src/lib/kernel/bitmap.h,v
-retrieving revision 1.5
-diff -u -p -r1.5 bitmap.h
---- pintos/src/lib/kernel/bitmap.h     15 Dec 2004 06:08:55 -0000      1.5
-+++ pintos/src/lib/kernel/bitmap.h     9 Feb 2005 21:45:27 -0000
-@@ -44,4 +44,6 @@ size_t bitmap_needed_bytes (size_t bit_c
- struct bitmap *bitmap_create_preallocated (size_t bit_cnt,
-                                            void *, size_t byte_cnt);
-+extern bool randomize_bitmaps;
-+
- #endif /* lib/kernel/bitmap.h */
-Index: pintos/src/threads/init.c
-===================================================================
-RCS file: /afs/ir.stanford.edu/users/b/l/blp/private/cvs/pintos/src/threads/init.c,v
-retrieving revision 1.53
-diff -u -p -r1.53 init.c
---- pintos/src/threads/init.c  7 Feb 2005 05:56:07 -0000       1.53
-+++ pintos/src/threads/init.c  9 Feb 2005 21:45:28 -0000
-@@ -8,6 +8,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#include <bitmap.h>
- #include "devices/kbd.h"
- #include "devices/serial.h"
- #include "devices/timer.h"
-@@ -193,6 +194,8 @@ paging_init (void)
-      new page tables immediately.  See [IA32-v2a] "MOV--Move
-      to/from Control Registers" and [IA32-v3] 3.7.5. */
-   asm volatile ("mov %%cr3, %0" :: "r" (vtop (base_page_dir)));
-+
-+  randomize_bitmaps = true;
- }
- /* Parses the command line. */