]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
1. Now that it's a thread's state is changed from within the kernel, where
authormtm <mtm@FreeBSD.org>
Wed, 13 Oct 2004 11:42:20 +0000 (11:42 +0000)
committermtm <mtm@FreeBSD.org>
Wed, 13 Oct 2004 11:42:20 +0000 (11:42 +0000)
commitce193bdc46e79c71e7c9070a71fe8317ed3dfbaa
tree8483c07b545b86140bcdf0b51159f6be244af2bc
parent0ed0f178d85740eea1e38f7cf3ae316ac811fccb
1. Now that it's a thread's state is changed from within the kernel, where
   no userland locks are heald, the dead thread lock can no longer protect
   access to it. Therefore, instead of using an if (!dead)...else clause
   after walking the active threads list test the thread pointer before
   deciding not to walk the dead threads list. If the thread pointer is null
   it means it was not found in the active threads list and the dead threads
   list should be checked.

2. Do not free the stack of a thread that is not marked dead. This is the
   2nd and final part of eliminating the race to free a thread's stack.

MFC after: 3 days
lib/libthr/thread/thr_exit.c
lib/libthr/thread/thr_join.c