}
/* Prints thread statistics. */
-@@ -166,12 +214,13 @@
+@@ -166,11 +214,12 @@
thread_create (const char *name, int priority,
thread_func *function, void *aux)
{
struct kernel_thread_frame *kf;
struct switch_entry_frame *ef;
struct switch_threads_frame *sf;
-- tid_t tid;
- enum intr_level old_level;
-+ tid_t tid;
+ tid_t tid;
ASSERT (function != NULL);
struct switch_entry_frame *ef;
struct switch_threads_frame *sf;
tid_t tid;
- enum intr_level old_level;
ASSERT (function != NULL);
init_thread (t, name, priority);
tid = t->tid = allocate_tid ();
- /* Prepare thread for first run by initializing its stack.
- Do this atomically so intermediate values for the 'stack'
- member cannot be observed. */
- old_level = intr_disable ();
-
/* Stack frame for kernel_thread(). */
kf = alloc_frame (t, sizeof *kf);
kf->eip = NULL;
sf->eip = switch_entry;
sf->ebp = 0;
- intr_set_level (old_level);
-
/* Add to run queue. */
thread_unblock (t);