[Lldb-commits] [lldb] [lldb][AIX] AIX Changes for MainLoop polling (PR #120378)
via lldb-commits
lldb-commits at lists.llvm.org
Wed Dec 18 00:23:36 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Dhruv Srivastava (DhruvSrivastavaX)
<details>
<summary>Changes</summary>
This PR is in reference to porting LLDB on AIX.
Link to discussions on llvm discourse and github:
1. https://discourse.llvm.org/t/port-lldb-to-ibm-aix/80640
2. https://github.com/llvm/llvm-project/issues/101657
The complete changes for porting are present in this draft PR:
https://github.com/llvm/llvm-project/pull/102601
Dropping changes for MainLoop polling in AIX, as `ppoll` is not supported in AIX currently.
This change is part of the couple of minimal changes required to build a minimal `lldb` biniry on AIX
Review Request: @<!-- -->labath @<!-- -->DavidSpickett
---
Full diff: https://github.com/llvm/llvm-project/pull/120378.diff
1 Files Affected:
- (modified) lldb/source/Host/posix/MainLoopPosix.cpp (+14-2)
``````````diff
diff --git a/lldb/source/Host/posix/MainLoopPosix.cpp b/lldb/source/Host/posix/MainLoopPosix.cpp
index 1715610e0f84f1..a1d697e10a04ed 100644
--- a/lldb/source/Host/posix/MainLoopPosix.cpp
+++ b/lldb/source/Host/posix/MainLoopPosix.cpp
@@ -170,11 +170,23 @@ Status MainLoopPosix::RunImpl::Poll() {
read_fds.push_back(pfd);
}
+#if defined(_AIX)
+ sigset_t origmask;
+ int timeout;
+
+ timeout = -1;
+ pthread_sigmask(SIG_SETMASK, nullptr, &origmask);
+ int ready = poll(read_fds.data(), read_fds.size(), timeout);
+ pthread_sigmask(SIG_SETMASK, &origmask, nullptr);
+ if (ready == -1 && errno != EINTR)
+ return Status(errno, eErrorTypePOSIX);
+#else
if (ppoll(read_fds.data(), read_fds.size(),
ToTimeSpec(loop.GetNextWakeupTime()),
/*sigmask=*/nullptr) == -1 &&
errno != EINTR)
return Status(errno, eErrorTypePOSIX);
+#endif
return Status();
}
@@ -226,13 +238,13 @@ MainLoopPosix::~MainLoopPosix() {
#endif
m_read_fds.erase(m_interrupt_pipe.GetReadFileDescriptor());
m_interrupt_pipe.Close();
- assert(m_read_fds.size() == 0);
+ assert(m_read_fds.size() == 0);
assert(m_signals.size() == 0);
}
MainLoopPosix::ReadHandleUP
MainLoopPosix::RegisterReadObject(const IOObjectSP &object_sp,
- const Callback &callback, Status &error) {
+ const Callback &callback, Status &error) {
if (!object_sp || !object_sp->IsValid()) {
error = Status::FromErrorString("IO object is not valid.");
return nullptr;
``````````
</details>
https://github.com/llvm/llvm-project/pull/120378
More information about the lldb-commits
mailing list