diff --git a/src/threads/thread.c b/src/threads/thread.c
-index 86614f5..9fa7f1c 100644
+index 86614f5..7c19894 100644
--- a/src/threads/thread.c
+++ b/src/threads/thread.c
@@ -15,6 +15,7 @@
#endif
/* Random value for struct thread's `magic' member.
-@@ -351,7 +352,8 @@ thread_exit (void)
+@@ -350,6 +351,7 @@ thread_exit (void)
+
#ifdef USERPROG
process_exit ();
- #endif
--
+ syscall_exit ();
-+
+ #endif
+
/* Remove thread from all threads list, set our status to dying,
- and schedule another process. That process will destroy us
- when it calls thread_schedule_tail(). */
@@ -608,6 +610,10 @@ init_thread (struct thread *t, const char *name, int priority)
strlcpy (t->name, name, sizeof t->name);
t->stack = (uint8_t *) t + PGSIZE;
# Filesystem code.
filesys_SRC = filesys/filesys.c # Filesystem core.
diff --git a/src/devices/timer.c b/src/devices/timer.c
-index 1aebae7..4b920e9 100644
+index 3ed10ad..1b14cdc 100644
--- a/src/devices/timer.c
+++ b/src/devices/timer.c
@@ -206,7 +206,6 @@ timer_interrupt (struct intr_frame *args UNUSED)
/* Wakes up all threads, if any, waiting on COND (protected by
diff --git a/src/threads/thread.c b/src/threads/thread.c
-index 9fa7f1c..f9f2310 100644
+index 7c19894..31e2ba6 100644
--- a/src/threads/thread.c
+++ b/src/threads/thread.c
@@ -5,13 +5,11 @@
/* Transitions a blocked thread T to the ready-to-run state.
This is an error if T is not blocked. (Use thread_yield() to
make the running thread ready.)
-@@ -349,11 +283,11 @@ thread_exit (void)
- {
- ASSERT (!intr_context ());
-
-+ syscall_exit ();
- #ifdef USERPROG
- process_exit ();
- #endif
-- syscall_exit ();
--
-+
- /* Remove thread from all threads list, set our status to dying,
- and schedule another process. That process will destroy us
- when it calls thread_schedule_tail(). */
@@ -399,26 +333,11 @@ thread_foreach (thread_action_func *func, void *aux)
}
}