/* SPDX-License-Identifier: GPL-2.0-or-later * * Copyright (c) 2016 Cyril Hrubis * Copyright (c) 2021 Xie Ziyao */ #ifndef LAPI_EPOLL_H__ #define LAPI_EPOLL_H__ #include "lapi/syscalls.h" #include "tst_timer.h" #ifndef EPOLL_CLOEXEC #define EPOLL_CLOEXEC 02000000 #endif static inline void epoll_pwait_supported(void) { /* allow the tests to fail early */ tst_syscall(__NR_epoll_pwait); } #ifndef HAVE_EPOLL_PWAIT static inline int epoll_pwait(int epfd, struct epoll_event *events, int maxevents, int timeout, const sigset_t *sigmask) { return tst_syscall(__NR_epoll_pwait, epfd, events, maxevents, timeout, sigmask, _NSIG / 8); } #endif static inline void epoll_pwait2_supported(void) { /* allow the tests to fail early */ tst_syscall(__NR_epoll_pwait2); } #ifndef HAVE_EPOLL_PWAIT2 static inline int epoll_pwait2(int epfd, struct epoll_event *events, int maxevents, const struct timespec *timeout, const sigset_t *sigmask) { if (timeout == NULL) return tst_syscall(__NR_epoll_pwait2, epfd, events, maxevents, NULL, sigmask, _NSIG / 8); struct __kernel_timespec ts; ts.tv_sec = timeout->tv_sec; ts.tv_nsec = timeout->tv_nsec; return tst_syscall(__NR_epoll_pwait2, epfd, events, maxevents, &ts, sigmask, _NSIG / 8); } #endif #endif /* LAPI_EPOLL_H__ */