aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-05-16 22:09:32 +0000
committerUlrich Drepper <drepper@redhat.com>2003-05-16 22:09:32 +0000
commit7ac5b8e2fae145766821d141cf892bbfa50d6618 (patch)
treeb72d74efac9467f44f10503be7abd9531bb4f370
parentbc58c14e334a40141d84b7951c5875cef96b1a2b (diff)
downloadglibc-7ac5b8e2fae145766821d141cf892bbfa50d6618.zip
glibc-7ac5b8e2fae145766821d141cf892bbfa50d6618.tar.gz
glibc-7ac5b8e2fae145766821d141cf892bbfa50d6618.tar.bz2
Update.
* pthread_join.c (pthread_join): Set tid field of the joined thread to -1. This isn't necessary but helps to recognize some error conditions with almost no cost. * allocatestack.c (FREE_P): Also negative values indicate an unused stack.
-rw-r--r--nptl/ChangeLog7
-rw-r--r--nptl/allocatestack.c2
-rw-r--r--nptl/pthread_join.c3
3 files changed, 11 insertions, 1 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index e63c71c..60b03f7 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,12 @@
2003-05-16 Ulrich Drepper <drepper@redhat.com>
+ * pthread_join.c (pthread_join): Set tid field of the joined
+ thread to -1. This isn't necessary but helps to recognize some
+ error conditions with almost no cost.
+
+ * allocatestack.c (FREE_P): Also negative values indicate an
+ unused stack.
+
* unwind.c: Include <unistd.h>.
2003-05-14 Ulrich Drepper <drepper@redhat.com>
diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
index 95ee992..9653b62 100644
--- a/nptl/allocatestack.c
+++ b/nptl/allocatestack.c
@@ -111,7 +111,7 @@ static unsigned int nptl_ncreated;
/* Check whether the stack is still used or not. */
-#define FREE_P(descr) ((descr)->tid == 0)
+#define FREE_P(descr) ((descr)->tid <= 0)
/* We create a double linked list of all cache entries. Double linked
diff --git a/nptl/pthread_join.c b/nptl/pthread_join.c
index f77c2c9..f94128d 100644
--- a/nptl/pthread_join.c
+++ b/nptl/pthread_join.c
@@ -93,6 +93,9 @@ pthread_join (threadid, thread_return)
pthread_cleanup_pop (0);
+ /* We mark the thread as terminated and as joined. */
+ pd->tid = -1;
+
/* Store the return value if the caller is interested. */
if (thread_return != NULL)
*thread_return = pd->result;