Clean up handling of stack frames.
[pintos-anon] / src / threads / thread.h
index b72c372b7ac98407e353480af5a7e1808dd32c23..8a0df6e254052ff7c8a8ee1b44fda01876fc1e4e 100644 (file)
@@ -4,6 +4,10 @@
 #include <stdint.h>
 #include "list.h"
 
+#ifdef USERPROG
+#include "addrspace.h"
+#endif
+
 enum thread_status 
   {
     THREAD_RUNNING,
@@ -16,8 +20,11 @@ struct thread
   {
     enum thread_status status;
     char name[16];
-    uint32_t *stack;
-    struct list_elem rq_elem;
+    uint8_t *stack;
+    list_elem rq_elem;
+#ifdef USERPROG
+    struct addrspace addrspace;
+#endif
   };
 
 void thread_init (void);
@@ -27,6 +34,10 @@ struct thread *thread_create (const char *name,
 void thread_destroy (struct thread *);
 struct thread *thread_current (void);
 
+#ifdef USERPROG
+bool thread_execute (const char *filename);
+#endif
+
 void thread_start (struct thread *);
 void thread_ready (struct thread *);
 void thread_exit (void);
@@ -35,4 +46,6 @@ void thread_yield (void);
 void thread_sleep (void);
 void thread_schedule (void);
 
+void thread_self_test (void);
+
 #endif /* thread.h */