X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=solutions%2Fp1-2.patch;h=a2a040d45f5504a02eb15627c552982e9bfa501f;hb=2cfd3d6563507007fbdddfbec8bc17903934a0fd;hp=b7e9c798f6674037242d2282e1c9e3cdd09404a5;hpb=74411dcc7652a3e8a05e0e04ae4add50c28dbe22;p=pintos-anon diff --git a/solutions/p1-2.patch b/solutions/p1-2.patch index b7e9c79..a2a040d 100644 --- a/solutions/p1-2.patch +++ b/solutions/p1-2.patch @@ -76,12 +76,12 @@ diff -X pat -urpN pintos.orig/src/threads/thread.c pintos/src/threads/thread.c /* Stack frame for kernel_thread(). */ kf = alloc_frame (t, sizeof *kf); -@@ -224,16 +226,33 @@ thread_tid (void) +@@ -224,16 +226,34 @@ thread_tid (void) void thread_exit (void) { + struct thread *t = thread_current (); -+ list_elem *e; ++ list_elem *e, *next; + ASSERT (!intr_context ()); @@ -93,10 +93,11 @@ diff -X pat -urpN pintos.orig/src/threads/thread.c pintos/src/threads/thread.c + latch_release (&t->ready_to_die); + + /* Notify our children that they can die. */ -+ for (e = list_begin (&t->children); e != list_end (&t->children); -+ e = list_next (e)) ++ for (e = list_begin (&t->children); e != list_end (&t->children); e = next) + { + struct thread *child = list_entry (e, struct thread, children_elem); ++ next = list_next (e); ++ list_remove (e); + sema_up (&child->can_die); + } +