struct thread
{
+ /* These members are owned by the thread_*() functions. */
enum thread_status status; /* Thread state. */
char name[16]; /* Name (for debugging purposes). */
uint8_t *stack; /* Saved stack pointer. */
list_elem rq_elem; /* Run queue list element. */
+
#ifdef USERPROG
- struct addrspace addrspace; /* Userland address space. */
+ /* These members are owned by the addrspace_*() functions. */
+ uint32_t *pagedir; /* Page directory. */
#endif
+
+ /* Marker to detect stack overflow. */
unsigned magic; /* Always set to THREAD_MAGIC. */
};
void thread_init (void);
-void thread_start (void) NO_RETURN;
+void thread_start (void);
-struct thread *thread_create (const char *name, void (*) (void *aux), void *);
+typedef void thread_func (void *aux);
+struct thread *thread_create (const char *name, thread_func *, void *);
#ifdef USERPROG
bool thread_execute (const char *filename);
#endif