mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Unix/Process: Don't use pthread_sigmask if we aren't built with threads
We won't link in pthreads if we weren't built with LLVM_ENABLE_THREADS which means we won't get access to pthread_sigmask. Use sigprocmask instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219288 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5dd4454174
commit
8e0fd8cd7c
@ -268,8 +268,13 @@ std::error_code Process::SafelyCloseFileDescriptor(int FD) {
|
||||
return std::error_code(errno, std::generic_category());
|
||||
// Atomically swap our current signal mask with a full mask.
|
||||
sigset_t SavedSet;
|
||||
#if LLVM_ENABLE_THREADS
|
||||
if (int EC = pthread_sigmask(SIG_SETMASK, &FullSet, &SavedSet))
|
||||
return std::error_code(EC, std::generic_category());
|
||||
#else
|
||||
if (sigprocmask(SIG_SETMASK, &FullSet, &SavedSet) < 0)
|
||||
return std::error_code(errno, std::generic_category());
|
||||
#endif
|
||||
// Attempt to close the file descriptor.
|
||||
// We need to save the error, if one occurs, because our subsequent call to
|
||||
// pthread_sigmask might tamper with errno.
|
||||
@ -277,7 +282,13 @@ std::error_code Process::SafelyCloseFileDescriptor(int FD) {
|
||||
if (::close(FD) < 0)
|
||||
ErrnoFromClose = errno;
|
||||
// Restore the signal mask back to what we saved earlier.
|
||||
int EC = pthread_sigmask(SIG_SETMASK, &SavedSet, nullptr);
|
||||
int EC = 0;
|
||||
#if LLVM_ENABLE_THREADS
|
||||
EC = pthread_sigmask(SIG_SETMASK, &SavedSet, nullptr);
|
||||
#else
|
||||
if (sigprocmask(SIG_SETMASK, &SavedSet, nullptr) < 0)
|
||||
EC = errno;
|
||||
#endif
|
||||
// The error code from close takes precedence over the one from
|
||||
// pthread_sigmask.
|
||||
if (ErrnoFromClose)
|
||||
|
Loading…
Reference in New Issue
Block a user