From: jsturm Date: Mon, 25 Mar 2002 18:08:57 +0000 (+0000) Subject: * linux_threads.c (GC_get_nprocs): Close file descriptor. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fbb34877654953a1284a939c09895f72a6c7cc49;p=gc * 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 --- diff --git a/ChangeLog b/ChangeLog index 5f1c1e12..304c94a1 100644 --- a/ChangeLog +++ b/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/linux_threads.c b/linux_threads.c index b26988ce..0bc0f131 100644 --- a/linux_threads.c +++ b/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);