summaryrefslogtreecommitdiff
path: root/boehm-gc
diff options
context:
space:
mode:
authorJeff Sturm <jsturm@one-point.com>2002-03-25 18:08:57 +0000
committerJeff Sturm <jsturm@gcc.gnu.org>2002-03-25 18:08:57 +0000
commitfd28f67b2f2bb8b06423996ffc3a3ff3d18227cd (patch)
tree3a8b4d4ce0f6188e56999c2f3c5b0cb8b7a97439 /boehm-gc
parent813b848cf20dd3d75def12cf317243a7996b2e67 (diff)
downloadgcc-fd28f67b2f2bb8b06423996ffc3a3ff3d18227cd.tar.gz
* linux_threads.c (GC_get_nprocs): Close file descriptor.
From-SVN: r51321
Diffstat (limited to 'boehm-gc')
-rw-r--r--boehm-gc/ChangeLog4
-rw-r--r--boehm-gc/linux_threads.c8
2 files changed, 12 insertions, 0 deletions
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 5f1c1e121bc..304c94a1452 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,7 @@
+2002-03-25 Jeff Sturm <jsturm@one-point.com>
+
+ * linux_threads.c (GC_get_nprocs): Close file descriptor.
+
2002-03-21 Loren J. Rittle <ljrittle@acm.org>
* include/private/gcconfig.h: Add unified test for FreeBSD.
diff --git a/boehm-gc/linux_threads.c b/boehm-gc/linux_threads.c
index b26988cef9e..0bc0f131b10 100644
--- a/boehm-gc/linux_threads.c
+++ b/boehm-gc/linux_threads.c
@@ -1015,6 +1015,7 @@ int GC_get_nprocs()
WARN("Couldn't read /proc/stat\n", 0);
return -1;
}
+ close(f);
for (i = 0; i < len - 100; ++i) {
if (stat_buf[i] == '\n' && stat_buf[i+1] == 'c'
&& stat_buf[i+2] == 'p' && stat_buf[i+3] == 'u') {
@@ -1358,6 +1359,9 @@ void * GC_start_routine(void * arg)
GC_printf1("start_routine = 0x%lx\n", start);
# endif
start_arg = si -> arg;
+# ifdef DEBUG_THREADS
+ GC_printf1("sem_post from 0x%lx\n", my_pthread);
+# endif
sem_post(&(si -> registered)); /* Last action on si. */
/* OK to deallocate. */
pthread_cleanup_push(GC_thread_exit_proc, 0);
@@ -1426,6 +1430,10 @@ WRAP_FUNC(pthread_create)(pthread_t *new_thread,
while (0 != sem_wait(&(si -> registered))) {
if (EINTR != errno) ABORT("sem_wait failed");
}
+# ifdef DEBUG_THREADS
+ GC_printf1("sem_wait complete from thread 0x%X\n",
+ pthread_self());
+# endif
sem_destroy(&(si -> registered));
LOCK();
GC_INTERNAL_FREE(si);