Make lookup_page() just return null for uaddr >= PHYS_BASE.
[pintos-anon] / src / userprog / exception.c
index 6383a4b99f591489ec7dd0099cc151318c59dfd0..4f3e4f9d120efcef5ddecf1fb845956e0e44f40d 100644 (file)
@@ -1,9 +1,9 @@
-#include "exception.h"
+#include "userprog/exception.h"
 #include <inttypes.h>
 #include <inttypes.h>
-#include "lib.h"
-#include "gdt.h"
-#include "interrupt.h"
-#include "thread.h"
+#include <stdio.h>
+#include "userprog/gdt.h"
+#include "threads/interrupt.h"
+#include "threads/thread.h"
 
 static void kill (struct intr_frame *);
 static void page_fault (struct intr_frame *);
 
 static void kill (struct intr_frame *);
 static void page_fault (struct intr_frame *);
@@ -73,9 +73,8 @@ kill (struct intr_frame *f)
     case SEL_UCSEG:
       /* User's code segment, so it's a user exception, as we
          expected.  Kill the user process.  */
     case SEL_UCSEG:
       /* User's code segment, so it's a user exception, as we
          expected.  Kill the user process.  */
-      printk ("%s: dying due to interrupt %#04x (%s).\n",
-              thread_name (thread_current ()),
-              f->vec_no, intr_name (f->vec_no));
+      printf ("%s: dying due to interrupt %#04x (%s).\n",
+              thread_name (), f->vec_no, intr_name (f->vec_no));
       intr_dump_frame (f);
       thread_exit (); 
 
       intr_dump_frame (f);
       thread_exit (); 
 
@@ -90,7 +89,7 @@ kill (struct intr_frame *f)
     default:
       /* Some other code segment?  Shouldn't happen.  Panic the
          kernel. */
     default:
       /* Some other code segment?  Shouldn't happen.  Panic the
          kernel. */
-      printk ("Interrupt %#04x (%s) in unknown segment %04x\n",
+      printf ("Interrupt %#04x (%s) in unknown segment %04x\n",
              f->vec_no, intr_name (f->vec_no), f->cs);
       thread_exit ();
     }
              f->vec_no, intr_name (f->vec_no), f->cs);
       thread_exit ();
     }
@@ -102,7 +101,8 @@ kill (struct intr_frame *f)
 #define PF_U 0x4    /* 0: kernel, 1: user process. */
 
 /* Page fault handler.  This is a skeleton that must be filled in
 #define PF_U 0x4    /* 0: kernel, 1: user process. */
 
 /* Page fault handler.  This is a skeleton that must be filled in
-   to implement virtual memory.
+   to implement virtual memory.  Some solutions to project 2 may
+   also require modifying this code.
 
    At entry, the address that faulted is in CR2 (Control Register
    2) and information about the fault, formatted as described in
 
    At entry, the address that faulted is in CR2 (Control Register
    2) and information about the fault, formatted as described in
@@ -137,7 +137,7 @@ page_fault (struct intr_frame *f)
   /* To implement virtual memory, delete the rest of the function
      body, and replace it with code that brings in the page to
      which fault_addr refers. */
   /* To implement virtual memory, delete the rest of the function
      body, and replace it with code that brings in the page to
      which fault_addr refers. */
-  printk ("Page fault at %08"PRIx32": %s error %s page in %s context.\n",
+  printf ("Page fault at %08"PRIx32": %s error %s page in %s context.\n",
           fault_addr,
           not_present ? "not present" : "rights violation",
           write ? "writing" : "reading",
           fault_addr,
           not_present ? "not present" : "rights violation",
           write ? "writing" : "reading",