X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Fthread.h;h=c0551273d80b5927ad0f41f76f94ca598a9de9b7;hb=838c30d0075a3ee0413ba4909944b37f4970a10d;hp=e844b5c2ec1a51033b668c89c1319f739b28c86b;hpb=5fa7a9e2a12522684b0fbaa7d06555544563f124;p=pintos-anon diff --git a/src/threads/thread.h b/src/threads/thread.h index e844b5c..c055127 100644 --- a/src/threads/thread.h +++ b/src/threads/thread.h @@ -5,10 +5,6 @@ #include #include -#ifdef USERPROG -#include "userprog/addrspace.h" -#endif - /* States in a thread's life cycle. */ enum thread_status { @@ -23,6 +19,11 @@ enum thread_status typedef int tid_t; #define TID_ERROR ((tid_t) -1) /* Error value for tid_t. */ +/* Thread priorities. */ +#define PRI_MIN 0 /* Lowest priority. */ +#define PRI_DEFAULT 29 /* Default priority. */ +#define PRI_MAX 59 /* Highest priority. */ + /* A kernel thread or user process. Each thread structure is stored in its own 4 kB page. The @@ -81,32 +82,32 @@ typedef int tid_t; blocked state is on a semaphore wait list. */ struct thread { - /* These members are owned by thread.c. */ + /* Owned by thread.c. */ tid_t tid; /* Thread identifier. */ enum thread_status status; /* Thread state. */ char name[16]; /* Name (for debugging purposes). */ uint8_t *stack; /* Saved stack pointer. */ + int priority; /* Priority. */ /* Shared between thread.c and synch.c. */ list_elem elem; /* List element. */ #ifdef USERPROG - /* These members are owned by userprog/addrspace.c. */ + /* Owned by userprog/process.c. */ uint32_t *pagedir; /* Page directory. */ #endif - /* Marker to detect stack overflow. */ - unsigned magic; /* Always set to THREAD_MAGIC. */ + /* Owned by thread.c */ + unsigned magic; /* Detects stack overflow. */ }; void thread_init (void); void thread_start (void); +void thread_tick (void); +void thread_print_stats (void); typedef void thread_func (void *aux); -tid_t thread_create (const char *name, thread_func *, void *); -#ifdef USERPROG -tid_t thread_execute (const char *filename); -#endif +tid_t thread_create (const char *name, int priority, thread_func *, void *); void thread_unblock (struct thread *); @@ -117,9 +118,11 @@ void thread_exit (void) NO_RETURN; void thread_yield (void); void thread_block (void); -/* These functions will be implemented in project 1. */ +/* This function will be implemented in problem 1-2. */ void thread_join (tid_t); -void thread_set_priority (tid_t, int); -int thread_get_priority (tid_t); + +/* These functions will be implemented in problem 1-3. */ +void thread_set_priority (int); +int thread_get_priority (void); #endif /* threads/thread.h */