X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=src%2Fthreads%2Fthread.c;h=d68c123fb2476420d09557f4f52d4a6fb12949f4;hp=955ccdcfef958179dd285de2f4049e96c37c77ba;hb=09fa5c11aff62bd728d4fe8de28a7abaf252fed3;hpb=b913988a0a3b2ed7002acd614fc3a6bae75bdadf diff --git a/src/threads/thread.c b/src/threads/thread.c index 955ccdc..d68c123 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -459,6 +459,8 @@ is_thread (struct thread *t) static void init_thread (struct thread *t, const char *name, int priority) { + enum intr_level old_level; + ASSERT (t != NULL); ASSERT (PRI_MIN <= priority && priority <= PRI_MAX); ASSERT (name != NULL); @@ -469,7 +471,10 @@ init_thread (struct thread *t, const char *name, int priority) t->stack = (uint8_t *) t + PGSIZE; t->priority = priority; t->magic = THREAD_MAGIC; + + old_level = intr_disable (); list_push_back (&all_list, &t->allelem); + intr_set_level (old_level); } /* Allocates a SIZE-byte frame at the top of thread T's stack and