From 4b68b140ed7bd36c1d309b502e0f593fc5c17fa3 Mon Sep 17 00:00:00 2001 From: jsturm Date: Mon, 25 Mar 2002 18:08:57 +0000 Subject: [PATCH] * linux_threads.c (GC_get_nprocs): Close file descriptor. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51321 138bc75d-0d04-0410-961f-82ee72b054a4 --- boehm-gc/ChangeLog | 4 ++++ boehm-gc/linux_threads.c | 8 ++++++++ 2 files changed, 12 insertions(+) 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 + + * linux_threads.c (GC_get_nprocs): Close file descriptor. + 2002-03-21 Loren J. Rittle * 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); -- 2.11.0