diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2013-05-21 18:53:23 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2013-05-21 18:53:23 +0000 |
commit | 3e8d2576fdaf69955eb16225117bbe382f85a1d7 (patch) | |
tree | c453a3b10939976ea30b52fdcae7f7a25202dd73 | |
parent | cc4a1b830d1cc221b64747cbe1e3964082904333 (diff) | |
download | cygnal-3e8d2576fdaf69955eb16225117bbe382f85a1d7.tar.gz cygnal-3e8d2576fdaf69955eb16225117bbe382f85a1d7.tar.bz2 cygnal-3e8d2576fdaf69955eb16225117bbe382f85a1d7.zip |
* globals.cc (__isthreaded): New global variable. Explain what it's
used for.
* miscfuncs.cc (thread_wrapper): Set __isthreaded to 1 here.
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/globals.cc | 7 | ||||
-rw-r--r-- | winsup/cygwin/miscfuncs.cc | 3 |
3 files changed, 16 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 34d7242f8..fd3212332 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,11 @@ 2013-05-21 Corinna Vinschen <corinna@vinschen.de> + * globals.cc (__isthreaded): New global variable. Explain what it's + used for. + * miscfuncs.cc (thread_wrapper): Set __isthreaded to 1 here. + +2013-05-21 Corinna Vinschen <corinna@vinschen.de> + * fhandler.h (class fhandler_dev_random): Change type of pseudo to uint32_t to make sure it's 32 bit on all supported platforms. diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc index 887326156..9462c7a0c 100644 --- a/winsup/cygwin/globals.cc +++ b/winsup/cygwin/globals.cc @@ -75,6 +75,13 @@ bool detect_bloda = false; bool NO_COPY in_forkee; +/* Taken from BSD libc: + This variable is zero until a process has created a pthread. It is used + to avoid calling locking functions in libc when they are not required. + Note that this is moderately dangerous. Do not rely on it if the public + API is also used from a non-pthread thread like the signal thread. */ +int NO_COPY __isthreaded = 0; + int __argc_safe; int __argc; char **__argv; diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index 409392760..6a204a01e 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -473,6 +473,9 @@ thread_wrapper (PVOID arg) if (!arg) return ERROR_INVALID_PARAMETER; + /* The process is now threaded. Note the fact for later usage. */ + __isthreaded = 1; + /* Fetch thread wrapper info and free from cygheap. */ thread_wrapper_arg wrapper_arg = *(thread_wrapper_arg *) arg; cfree (arg); |