diff options
author | David Daney <ddaney@avtrex.com> | 2005-02-16 04:16:06 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2005-02-16 04:16:06 +0000 |
commit | 7e9534bc544cd62cb587a17c50eed08f8ca68185 (patch) | |
tree | f9f4f02f6bbfd331d481cf0e7a15287b74a30280 /libjava | |
parent | 5909b0346cca73468ebde3e747bbe21453364a03 (diff) | |
download | gcc-7e9534bc544cd62cb587a17c50eed08f8ca68185.tar.gz |
prims.cc (_Jv_CreateJavaVM): Add comment about initialization order.
2005-02-15 David Daney <ddaney@avtrex.com>
Bryce McKinlay <mckinlay@redhat.com>
* prims.cc (_Jv_CreateJavaVM): Add comment about initialization order.
* posix-threads.cc (_Jv_InitThreads): Call block_sigchld() here to
ensure that GC threads inherit the new signal mask.
(block_sigchld): Call JvFail rather than throwing exception if
pthread_sigmask() fails.
Co-Authored-By: Bryce McKinlay <mckinlay@redhat.com>
From-SVN: r95095
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 9 | ||||
-rw-r--r-- | libjava/posix-threads.cc | 26 | ||||
-rw-r--r-- | libjava/prims.cc | 2 |
3 files changed, 26 insertions, 11 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 249641f64b5..abc0d70bd84 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2005-02-15 David Daney <ddaney@avtrex.com> + Bryce McKinlay <mckinlay@redhat.com> + + * prims.cc (_Jv_CreateJavaVM): Add comment about initialization order. + * posix-threads.cc (_Jv_InitThreads): Call block_sigchld() here to + ensure that GC threads inherit the new signal mask. + (block_sigchld): Call JvFail rather than throwing exception if + pthread_sigmask() fails. + 2005-02-15 Mark Wielaard <mark@klomp.org> * java/util/jar/Attributes.java (Name.CLASS_PATH): Document that diff --git a/libjava/posix-threads.cc b/libjava/posix-threads.cc index 0643c1a5c7b..91da25cf38d 100644 --- a/libjava/posix-threads.cc +++ b/libjava/posix-threads.cc @@ -281,6 +281,17 @@ handle_intr (int) // Do nothing. } +static void +block_sigchld() +{ + sigset_t mask; + sigemptyset (&mask); + sigaddset (&mask, SIGCHLD); + int c = pthread_sigmask (SIG_BLOCK, &mask, NULL); + if (c != 0) + JvFail (strerror (c)); +} + void _Jv_InitThreads (void) { @@ -296,6 +307,10 @@ _Jv_InitThreads (void) sigemptyset (&act.sa_mask); act.sa_flags = 0; sigaction (INTR, &act, NULL); + + // Block SIGCHLD here to ensure that any non-Java threads inherit the new + // signal mask. + block_sigchld(); } _Jv_Thread_t * @@ -333,17 +348,6 @@ _Jv_ThreadSetPriority (_Jv_Thread_t *data, jint prio) #endif } -static void -block_sigchld() -{ - sigset_t mask; - sigemptyset (&mask); - sigaddset (&mask, SIGCHLD); - int c = pthread_sigmask (SIG_BLOCK, &mask, NULL); - if (c != 0) - throw new java::lang::InternalError (JvNewStringUTF (strerror (c))); -} - void _Jv_ThreadRegister (_Jv_Thread_t *data) { diff --git a/libjava/prims.cc b/libjava/prims.cc index c3c07d9f5e5..d12a2428ef0 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -921,6 +921,8 @@ _Jv_CreateJavaVM (void* /*vm_args*/) PROCESS_GCJ_PROPERTIES; + /* Threads must be initialized before the GC, so that it inherits the + signal mask. */ _Jv_InitThreads (); _Jv_InitGC (); _Jv_InitializeSyncMutex (); |