diff options
| author | daney <daney@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-18 15:12:32 +0000 |
|---|---|---|
| committer | daney <daney@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-08-18 15:12:32 +0000 |
| commit | 6437e383dae1a8d65865398cbbe557717a5a1c7a (patch) | |
| tree | 3a0c85672202098b0c107df58f4a4415569c918c /libjava/java/lang/natPosixProcess.cc | |
| parent | 78d4656884df0506df407e0f9aab9a77a9bf7063 (diff) | |
| download | ppe42-gcc-6437e383dae1a8d65865398cbbe557717a5a1c7a.tar.gz ppe42-gcc-6437e383dae1a8d65865398cbbe557717a5a1c7a.zip | |
2004-08-18 David Daney <ddaney@avtrex.com>
* java/lang/natPosixProcess.cc (waitForSignal): Use sigsuspend
instead of sigwait.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86186 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/natPosixProcess.cc')
| -rw-r--r-- | libjava/java/lang/natPosixProcess.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/libjava/java/lang/natPosixProcess.cc b/libjava/java/lang/natPosixProcess.cc index f6b6f67baf5..a4b87c3a300 100644 --- a/libjava/java/lang/natPosixProcess.cc +++ b/libjava/java/lang/natPosixProcess.cc @@ -130,20 +130,22 @@ java::lang::ConcreteProcess$ProcessManager::waitForSignal () sigset_t mask; // Wait for SIGCHLD - sigemptyset (&mask); - sigaddset (&mask, SIGCHLD); + pthread_sigmask (0, NULL, &mask); + sigdelset (&mask, SIGCHLD); + // Use sigsuspend() instead of sigwait() as sigwait() doesn't play + // nicely with the GC's use of signals. + int c = sigsuspend (&mask); - int sig; - int c = sigwait (&mask, &sig); - - if (c != 0) + if (c != -1) + goto error; + if (errno != EINTR) goto error; // All OK. return; error: - throw new InternalError (JvNewStringUTF (strerror (c))); + throw new InternalError (JvNewStringUTF (strerror (errno))); } jboolean java::lang::ConcreteProcess$ProcessManager::reap () |

