X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Fthread.h;h=7965c0607815eab3275da7babdf669177f18c8e2;hb=3edcfedb8e62970f3293fa676b6691f8658c3c11;hp=2043d8dc86e251bbd8c0492aaabc8266e935c3b9;hpb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;p=pintos-anon diff --git a/src/threads/thread.h b/src/threads/thread.h index 2043d8d..7965c06 100644 --- a/src/threads/thread.h +++ b/src/threads/thread.h @@ -20,9 +20,9 @@ typedef int tid_t; #define TID_ERROR ((tid_t) -1) /* Error value for tid_t. */ /* Thread priorities. */ -#define PRI_MIN 0 /* Highest priority. */ +#define PRI_MIN 0 /* Lowest priority. */ #define PRI_DEFAULT 31 /* Default priority. */ -#define PRI_MAX 63 /* Lowest priority. */ +#define PRI_MAX 63 /* Highest priority. */ /* A kernel thread or user process. @@ -88,6 +88,7 @@ struct thread char name[16]; /* Name (for debugging purposes). */ uint8_t *stack; /* Saved stack pointer. */ int priority; /* Priority. */ + struct list_elem allelem; /* List element for all threads list. */ /* Shared between thread.c and synch.c. */ struct list_elem elem; /* List element. */ @@ -101,6 +102,11 @@ struct thread unsigned magic; /* Detects stack overflow. */ }; +/* If false (default), use round-robin scheduler. + If true, use multi-level feedback queue scheduler. + Controlled by kernel command-line option "-o mlfqs". */ +extern bool thread_mlfqs; + void thread_init (void); void thread_start (void); @@ -120,6 +126,10 @@ const char *thread_name (void); void thread_exit (void) NO_RETURN; void thread_yield (void); +/* Performs some operation on thread t, given auxiliary data AUX. */ +typedef void thread_action_func (struct thread *t, void *aux); +void thread_foreach (thread_action_func *, void *); + int thread_get_priority (void); void thread_set_priority (int);