mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-29 23:04:12 +08:00
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
This commit is contained in:
parent
5909b0346c
commit
7e9534bc54
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 ();
|
||||
|
Loading…
Reference in New Issue
Block a user