projects
/
pintos-anon
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
thread_join() the -ex process if THREAD_JOIN_IMPLEMENTED.
[pintos-anon]
/
src
/
userprog
/
exception.c
diff --git
a/src/userprog/exception.c
b/src/userprog/exception.c
index 0d5461a31078a20145490c668ae5fd302f51569f..4f3e4f9d120efcef5ddecf1fb845956e0e44f40d 100644
(file)
--- a/
src/userprog/exception.c
+++ b/
src/userprog/exception.c
@@
-1,7
+1,7
@@
-#include "exception.h"
+#include "
userprog/
exception.h"
#include <inttypes.h>
#include <inttypes.h>
-#include
"gdt.h"
-#include "
lib/lib
.h"
+#include
<stdio.h>
+#include "
userprog/gdt
.h"
#include "threads/interrupt.h"
#include "threads/thread.h"
#include "threads/interrupt.h"
#include "threads/thread.h"
@@
-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. */
- print
k
("Interrupt %#04x (%s) in unknown segment %04x\n",
+ print
f
("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. */
- print
k
("Page fault at %08"PRIx32": %s error %s page in %s context.\n",
+ print
f
("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",