X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fthreads%2Fthread.h;h=6fcbfc75fe49647a359b4eb56e927375ca694164;hb=07ee003af55dc3aab779e95ef2a4f095f6b65964;hp=9b55700315ec4b293530a00b5b367d761f5c1768;hpb=f0612244c44f4b4f0bc79e3fc882e9f74bd4a3f4;p=pintos-anon diff --git a/src/threads/thread.h b/src/threads/thread.h index 9b55700..6fcbfc7 100644 --- a/src/threads/thread.h +++ b/src/threads/thread.h @@ -47,11 +47,11 @@ typedef int tid_t; | | | | +---------------------------------+ - | magic | - | : | - | : | - | name | - | status | + | magic | + | : | + | : | + | name | + | status | 0 kB +---------------------------------+ The upshot of this is twofold: @@ -66,7 +66,7 @@ typedef int tid_t; large. If a stack overflows, it will corrupt the thread state. Thus, kernel functions should not allocate large structures or arrays as non-static local variables. Use - dynamic allocation with malloc() or palloc_get() + dynamic allocation with malloc() or palloc_get_page() instead. The first symptom of either of these problems will probably be @@ -97,24 +97,27 @@ struct thread uint32_t *pagedir; /* Page directory. */ #endif - /* Owned by thread.c */ + /* 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, int priority, thread_func *, void *); +void thread_block (void); void thread_unblock (struct thread *); struct thread *thread_current (void); tid_t thread_tid (void); const char *thread_name (void); + void thread_exit (void) NO_RETURN; void thread_yield (void); -void thread_block (void); /* This function will be implemented in problem 1-2. */ void thread_join (tid_t);