Remove patch against test.c
authorBen Pfaff <blp@cs.stanford.edu>
Thu, 14 Oct 2004 04:18:14 +0000 (04:18 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Thu, 14 Oct 2004 04:18:14 +0000 (04:18 +0000)
solutions/p1-3.patch

index db95713f1b58e22c35afc8435e9a75da0d767903..fed4771616147623bba392696f7d614843dc6f69 100644 (file)
@@ -147,203 +147,6 @@ diff -u -p -u -r1.14 synch.c
    intr_set_level (old_level);
  }
  
-Index: threads/test.c
-===================================================================
-RCS file: /u/blp/cvs/pintos/src/threads/test.c,v
-retrieving revision 1.4
-diff -u -p -u -r1.4 test.c
---- threads/test.c     17 Sep 2004 06:52:27 -0000      1.4
-+++ threads/test.c     11 Oct 2004 07:29:34 -0000
-@@ -1,110 +1,109 @@
-+/* Problem 1-3: Priority Scheduling tests.
-+   
-+   Based on a test originally submitted for Stanford's CS 140 in
-+   winter 1999 by by Matt Franklin
-+   <startled@leland.stanford.edu>, Greg Hutchins
-+   <gmh@leland.stanford.edu>, Yu Ping Hu <yph@cs.stanford.edu>.
-+   Modified by arens. */
-+
- #include "threads/test.h"
- #include <stdio.h>
- #include "threads/synch.h"
- #include "threads/thread.h"
--#include "devices/timer.h"
--static void test_sleep (int iterations);
-+static void test_preempt (void);
-+static void test_fifo (void);
-+static void test_donate_return (void);
- void
- test (void) 
- {
--  test_sleep (1);
--  test_sleep (7);
-+  /* Make sure our prority is the default. */
-+  ASSERT (thread_get_priority () == PRI_DEFAULT);
-+
-+  //test_preempt ();
-+  //test_fifo ();
-+  test_donate_return ();
- }
\f
--/* Based on a test originally submitted for Stanford's CS 140 in
--   winter 1998 by Rob Baesman <rbaesman@cs.stanford.edu>, Ben
--   Taskar <btaskar@cs.stanford.edu>, and Toli Kuznets
--   <tolik@cs.stanford.edu>. */
--struct sleep_thread_data 
--  {
--    int64_t start;              /* Start time. */
--    int duration;               /* Number of ticks to sleep. */
--    int iterations;             /* Number of iterations to run. */
--    int *product;               /* Largest product so far. */
--    struct lock *lock;          /* Lock on access to `product'. */
--    struct semaphore done;      /* Completion semaphore. */
--    tid_t tid;                  /* Thread ID. */
--  };
-+static thread_func simple_thread_func;
-+static thread_func acquire_thread_func;
--static void sleeper (void *);
-+static void
-+test_preempt (void) 
-+{
-+  printf ("\n"
-+          "Testing priority preemption.\n");
-+  thread_create ("high-priority", PRI_DEFAULT + 1, simple_thread_func, NULL);
-+  printf ("The high-priority thread should have already completed.\n"
-+          "Priority preemption test done.\n");
-+}
- static void
--test_sleep (int iterations) 
-+test_fifo (void) 
- {
--  struct sleep_thread_data threads[5];
--  const int thread_cnt = sizeof threads / sizeof *threads;
--  struct lock lock;
--  int64_t start;
--  int product;
-   int i;
--
-+  
-   printf ("\n"
--          "Testing %d sleeps per thread.\n"
--          "If successful, product of iteration count and\n"
--          "sleep duration will appear in nondescending order.\n",
--          iterations);
--
--  /* Start all the threads. */
--  product = 0;
--  lock_init (&lock, "product");
--  start = timer_ticks ();
--  for (i = 0; i < thread_cnt; i++)
-+          "Testing FIFO preemption.\n"
-+          "5 threads will iterate 10 times in the same order each time.\n"
-+          "If the order varies then there is a bug.\n");
-+
-+  thread_set_priority (PRI_DEFAULT + 2);
-+  for (i = 0; i < 5; i++) 
-     {
--      struct sleep_thread_data *t;
-       char name[16];
--      
--      snprintf (name, sizeof name, "thread %d", i);
--      t = threads + i;
--      t->start = start;
--      t->duration = (i + 1) * 10;
--      t->iterations = iterations;
--      t->product = &product;
--      t->lock = &lock;
--      sema_init (&t->done, 0, name);
--      t->tid = thread_create (name, PRI_DEFAULT, sleeper, t);
--    }
--  
--  /* Wait for all the threads to finish. */
--  for (i = 0; i < thread_cnt; i++) 
--    {
--#ifdef THREAD_JOIN_IMPLEMENTED
--      thread_join (threads[i].tid);
--#else
--      sema_down (&threads[i].done);
--#endif
-+      snprintf (name, sizeof name, "%d", i);
-+      thread_create (name, PRI_DEFAULT + 1, simple_thread_func, NULL);
-     }
-+  thread_set_priority (PRI_DEFAULT);
--  printf ("...done\n");
-+  printf ("FIFO preemption test done.\n");
- }
- static void
--sleeper (void *t_) 
-+test_donate_return (void) 
- {
--  struct sleep_thread_data *t = t_;
--  int i;
-+  struct lock lock;
--  for (i = 1; i <= t->iterations; i++) 
--    {
--      int old_product;
--      int new_product = i * t->duration;
-+  printf ("\n"
-+          "Testing priority donation.\n"
-+          "If the statements printed below are all true, you pass.\n");
--      timer_sleep ((t->start + new_product) - timer_ticks ());
-+  lock_init (&lock, "donor");
-+  lock_acquire (&lock);
-+  thread_create ("acquire1", PRI_DEFAULT + 1, acquire_thread_func, &lock);
-+  printf ("This thread should have priority %d.  Actual priority: %d.\n",
-+          PRI_DEFAULT + 1, thread_get_priority ());
-+  thread_create ("acquire2", PRI_DEFAULT + 2, acquire_thread_func, &lock);
-+  printf ("This thread should have priority %d.  Actual priority: %d.\n",
-+          PRI_DEFAULT + 2, thread_get_priority ());
-+  lock_release (&lock);
-+  printf ("acquire2 and acquire1 must already have finished, in that order.\n"
-+          "This should be the last line before finishing this test.\n"
-+          "Priority donation test done.\n");
-+}
--      lock_acquire (t->lock);
--      old_product = *t->product;
--      *t->product = new_product;
--      lock_release (t->lock);
--
--      printf ("%s: duration=%d, iteration=%d, product=%d\n",
--              thread_name (), t->duration, i, new_product);
--
--      if (old_product > new_product)
--        printf ("%s: Out of order sleep completion (%d > %d)!\n",
--                thread_name (), old_product, new_product);
--    }
-+static void 
-+simple_thread_func (void *aux UNUSED) 
-+{
-+  int i;
-   
--  /* Signal completion. */
--  sema_up (&t->done);
-+  for (i = 0; i < 5; i++) 
-+    {
-+      printf ("Thread %s iteration %d\n", thread_name (), i);
-+      thread_yield ();
-+    }
-+  printf ("Thread %s done!\n", thread_name ());
-+}
-+
-+static void
-+acquire_thread_func (void *lock_) 
-+{
-+  struct lock *lock = lock_;
-+
-+  lock_acquire (lock);
-+  printf ("%s: got the lock\n", thread_name ());
-+  lock_release (lock);
-+  printf ("%s: done\n", thread_name ());
- }
 Index: threads/thread.c
 ===================================================================
 RCS file: /u/blp/cvs/pintos/src/threads/thread.c,v