Skip to content

[libc] Disable epoll_pwait2 for now. #99967

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 22, 2024

Conversation

michaelrj-google
Copy link
Contributor

This patch reverts #99781 and part of #99771 since epoll_pwait2 is not
in fact available on all supported systems. It is my opinion that we
shouldn't provide a version of a function that doesn't perform as
expected, which is why this revert needs to happen.

The epoll_pwait2 function can be reenabled when we have a way to check
if it is available on the target system, tracking bug for that is #80060

This patch reverts llvm#99781 and part of llvm#99771 since `epoll_pwait2` is not
in fact available on all supported systems. It is my opinion that we
shouldn't provide a version of a function that doesn't perform as
expected, which is why this revert needs to happen.

The `epoll_pwait2` function can be reenabled when we have a way to check
if it is available on the target system, tracking bug for that is llvm#80060
@llvmbot llvmbot added the libc label Jul 22, 2024
@llvmbot
Copy link
Member

llvmbot commented Jul 22, 2024

@llvm/pr-subscribers-libc

Author: Michael Jones (michaelrj-google)

Changes

This patch reverts #99781 and part of #99771 since epoll_pwait2 is not
in fact available on all supported systems. It is my opinion that we
shouldn't provide a version of a function that doesn't perform as
expected, which is why this revert needs to happen.

The epoll_pwait2 function can be reenabled when we have a way to check
if it is available on the target system, tracking bug for that is #80060


Full diff: https://github.com/llvm/llvm-project/pull/99967.diff

3 Files Affected:

  • (modified) libc/config/linux/riscv/entrypoints.txt (+3-1)
  • (modified) libc/config/linux/x86_64/entrypoints.txt (+3-1)
  • (modified) libc/src/sys/epoll/linux/epoll_pwait2.cpp (-12)
diff --git a/libc/config/linux/riscv/entrypoints.txt b/libc/config/linux/riscv/entrypoints.txt
index ea08957f4ee89..6ab90771802fd 100644
--- a/libc/config/linux/riscv/entrypoints.txt
+++ b/libc/config/linux/riscv/entrypoints.txt
@@ -228,7 +228,9 @@ set(TARGET_LIBC_ENTRYPOINTS
     libc.src.sys.epoll.epoll_ctl
     libc.src.sys.epoll.epoll_pwait
     libc.src.sys.epoll.epoll_wait
-    libc.src.sys.epoll.epoll_pwait2
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
 
     # sys/mman.h entrypoints
     libc.src.sys.mman.madvise
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 7c422bad9f01d..f7813fc16ff7c 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -228,7 +228,9 @@ set(TARGET_LIBC_ENTRYPOINTS
     libc.src.sys.epoll.epoll_ctl
     libc.src.sys.epoll.epoll_pwait
     libc.src.sys.epoll.epoll_wait
-    libc.src.sys.epoll.epoll_pwait2
+    # TODO: Need to check if pwait2 is available before providing.
+    # https://github.com/llvm/llvm-project/issues/80060
+    # libc.src.sys.epoll.epoll_pwait2
 
     # sys/mman.h entrypoints
     libc.src.sys.mman.madvise
diff --git a/libc/src/sys/epoll/linux/epoll_pwait2.cpp b/libc/src/sys/epoll/linux/epoll_pwait2.cpp
index 4123157d29fff..14b419399fe9b 100644
--- a/libc/src/sys/epoll/linux/epoll_pwait2.cpp
+++ b/libc/src/sys/epoll/linux/epoll_pwait2.cpp
@@ -25,22 +25,10 @@ namespace LIBC_NAMESPACE_DECL {
 LLVM_LIBC_FUNCTION(int, epoll_pwait2,
                    (int epfd, struct epoll_event *events, int maxevents,
                     const struct timespec *timeout, const sigset_t *sigmask)) {
-#ifdef SYS_epoll_pwait2
   int ret = LIBC_NAMESPACE::syscall_impl<int>(
       SYS_epoll_pwait2, epfd, reinterpret_cast<long>(events), maxevents,
       reinterpret_cast<long>(timeout), reinterpret_cast<long>(sigmask),
       NSIG / 8);
-#elif defined(SYS_epoll_pwait)
-  // Convert nanoseconds to milliseconds, rounding up if there are remaining
-  // nanoseconds
-  long timeout_ms = static_cast<long>(timeout->tv_sec * 1000 +
-                                      (timeout->tv_nsec + 999999) / 1000000);
-  int ret = LIBC_NAMESPACE::syscall_impl<int>(
-      SYS_epoll_pwait, epfd, reinterpret_cast<long>(events), maxevents,
-      timeout_ms, reinterpret_cast<long>(sigmask), NSIG / 8);
-#else
-#error "epoll_pwait and epoll_pwait2 syscalls not available."
-#endif
 
   // A negative return value indicates an error with the magnitude of the
   // value being the error code.

@michaelrj-google michaelrj-google merged commit 173514f into llvm:main Jul 22, 2024
6 of 7 checks passed
yuxuanchen1997 pushed a commit that referenced this pull request Jul 25, 2024
This patch reverts #99781 and part of #99771 since `epoll_pwait2` is not
in fact available on all supported systems. It is my opinion that we
shouldn't provide a version of a function that doesn't perform as
expected, which is why this revert needs to happen.

The `epoll_pwait2` function can be reenabled when we have a way to check
if it is available on the target system, tracking bug for that is #80060
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants