diff options
author | Jeff Sturm <jsturm@one-point.com> | 2002-03-25 18:08:57 +0000 |
---|---|---|
committer | Jeff Sturm <jsturm@gcc.gnu.org> | 2002-03-25 18:08:57 +0000 |
commit | fd28f67b2f2bb8b06423996ffc3a3ff3d18227cd (patch) | |
tree | 3a8b4d4ce0f6188e56999c2f3c5b0cb8b7a97439 /boehm-gc | |
parent | 813b848cf20dd3d75def12cf317243a7996b2e67 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | boehm-gc/linux_threads.c | 8 |
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); |