From 21189281f2afb53903a0f53fb41a8bace3567560 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 3 Dec 2015 00:08:02 +0300 Subject: [PATCH] Remove references to missing linux_threads.c from documentation * README.md (copyright): Change linux_threads.c to pthread_stop_world.c and pthread_support.c files. * doc/README.DGUX386: Remove reference to linux-threads.c file. * doc/README.environment (GC_RETRY_SIGNALS, GC_NO_RETRY_SIGNALS): Likewise. * doc/gcdescr.html: Likewise. * doc/README.DGUX386: Update information how to pass DEBUG_THREADS to make. * doc/gcdescr.html: Update threads support information for Irix and Solaris. * include/private/gc_locks.h: Remove reference to linux-threads.c in a comment. * pthread_support.c: Likewise. --- README.md | 2 +- doc/README.DGUX386 | 8 +------- doc/README.environment | 2 +- doc/gcdescr.html | 11 ++--------- include/private/gc_locks.h | 2 +- pthread_support.c | 17 ----------------- 6 files changed, 6 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index b2301c76..36259cb5 100644 --- a/README.md +++ b/README.md @@ -546,7 +546,7 @@ whether it's already been done (or whether we tried and discarded it). * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. * Copyright (c) 1999-2011 by Hewlett-Packard Development Company. -The file linux_threads.c is also +The files pthread_stop_world.c and pthread_support.c are also * Copyright (c) 1998 by Fergus Henderson. All rights reserved. diff --git a/doc/README.DGUX386 b/doc/README.DGUX386 index 0aa89bdf..48c800b8 100644 --- a/doc/README.DGUX386 +++ b/doc/README.DGUX386 @@ -24,13 +24,7 @@ To enable debugging messages please do: 1) Add the "--enable-gc-debug" flag during configuration. - 2) Edit the file linux-threads.c and uncomment the line: - - /* #define DEBUG_THREADS 1 */ to ---> - - #define DEBUG_THREADS 1 - - Then give "make" as usual. + 2) Pass "CFLAGS=-DDEBUG_THREADS" to "make". In a machine with 4 CPUs (my own machine) the option parallel mark (aka --enable-parallel-mark) makes a BIG difference. diff --git a/doc/README.environment b/doc/README.environment index 7c7096c5..7d4d96c4 100644 --- a/doc/README.environment +++ b/doc/README.environment @@ -97,7 +97,7 @@ GC_PRINT_BACK_HEIGHT - Print max length of chain through unreachable objects (http://www.hpl.hp.com/techreports/2001/HPL-2001-251.html). GC_RETRY_SIGNALS, GC_NO_RETRY_SIGNALS - Try to compensate for lost - thread suspend signals in linux_threads.c. On by + thread suspend signals (Pthreads only). On by default for GC_OSF1_THREADS, off otherwise. Note that this does not work around a possible loss of thread restart signals. This seems to be necessary for diff --git a/doc/gcdescr.html b/doc/gcdescr.html index 07afd7cc..5b4b9fee 100644 --- a/doc/gcdescr.html +++ b/doc/gcdescr.html @@ -534,23 +534,16 @@ common Pthreads implementations. In particular, it is very difficult for the collector to stop all other threads in the system and examine the register contents. This is currently accomplished with very different mechanisms for some Pthreads -implementations. The Solaris implementation temporarily disables much -of the user-level threads implementation by stopping kernel-level threads -("lwp"s). The Linux/HPUX/OSF1 and Irix implementations sends signals to +implementations. For Linux/HPUX/OSF1, Solaris and Irix it sends signals to individual Pthreads and has them wait in the signal handler.

The Linux and Irix implementations use only documented Pthreads calls, but rely on extensions to their semantics. -The Linux implementation linux_threads.c relies on only very +The Linux implementation pthread_stop_world.c relies on only very mild extensions to the pthreads semantics, and already supports a large number of other Unix-like pthreads implementations. Our goal is to make this the only pthread support in the collector.

-(The Irix implementation is separate only for historical reasons and should -clearly be merged. The current Solaris implementation probably performs -better in the uniprocessor case, but does not support thread operations in the -collector. Hence it cannot support the parallel marker.) -

All implementations must intercept thread creation and a few other thread-specific calls to allow enumeration of threads and location of thread stacks. This is current diff --git a/include/private/gc_locks.h b/include/private/gc_locks.h index 3337b9ec..1359d1f1 100644 --- a/include/private/gc_locks.h +++ b/include/private/gc_locks.h @@ -187,7 +187,7 @@ # define ENTER_GC() GC_collecting = 1; # define EXIT_GC() GC_collecting = 0; GC_INNER void GC_lock(void); -# endif /* GC_PTHREADS with linux_threads.c implementation */ +# endif /* GC_PTHREADS */ # ifdef GC_ALWAYS_MULTITHREADED # define GC_need_to_lock TRUE # else diff --git a/pthread_support.c b/pthread_support.c index d9f935f7..ba5389fb 100644 --- a/pthread_support.c +++ b/pthread_support.c @@ -27,23 +27,6 @@ * all flavors of pthread support code into this file. */ -/* - * Linux_threads.c now also includes some code to support HPUX and - * OSF1 (Compaq Tru64 Unix, really). The OSF1 support is based on Eric Benson's - * patch. - * - * Eric also suggested an alternate basis for a lock implementation in - * his code: - * + #elif defined(OSF1) - * + unsigned long GC_allocate_lock = 0; - * + msemaphore GC_allocate_semaphore; - * + # define GC_TRY_LOCK() \ - * + ((msem_lock(&GC_allocate_semaphore, MSEM_IF_NOWAIT) == 0) \ - * + ? (GC_allocate_lock = 1) \ - * + : 0) - * + # define GC_LOCK_TAKEN GC_allocate_lock - */ - #if defined(GC_PTHREADS) && !defined(GC_WIN32_THREADS) # include -- 2.40.0