From 404dfeb4faef213b0450f173b60cd7080edec349 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 26 Jul 2019 10:32:29 -0700 Subject: [PATCH 1/2] Add configure time check for getdents/getdents64 APIs glibc 2.30 has added wrapper for getdents64 this will help in detecting right condition to use fallback Check for getdents API as well while here Upstream-Status: Submitted [http://lists.linux.it/pipermail/ltp/2019-July/012954.html] Signed-off-by: Khem Raj --- configure.ac | 2 ++ testcases/kernel/syscalls/getdents/getdents.h | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) --- a/configure.ac +++ b/configure.ac @@ -65,6 +65,8 @@ AC_CHECK_FUNCS([ \ fallocate \ fchownat \ fstatat \ + getdents \ + getdents64 \ kcmp \ mkdirat \ mknodat \ --- a/testcases/kernel/syscalls/getdents/getdents.h +++ b/testcases/kernel/syscalls/getdents/getdents.h @@ -23,7 +23,7 @@ #include #include "test.h" #include "lapi/syscalls.h" - +#include "config.h" /* * See fs/compat.c struct compat_linux_dirent */ @@ -34,12 +34,17 @@ struct linux_dirent { char d_name[]; }; +#if HAVE_GETDENTS +#include +#else static inline int getdents(unsigned int fd, struct linux_dirent *dirp, unsigned int size) { return ltp_syscall(__NR_getdents, fd, dirp, size); } +#endif /* HAVE_GETDENTS */ + struct linux_dirent64 { uint64_t d_ino; int64_t d_off; @@ -48,10 +53,13 @@ struct linux_dirent64 { char d_name[]; }; +#if HAVE_GETDENTS64 +#include +#else static inline int getdents64(unsigned int fd, struct linux_dirent64 *dirp64, unsigned int size) { return ltp_syscall(__NR_getdents64, fd, dirp64, size); } - +#endif /* HAVE_GETDENTS64 */ #endif /* GETDENTS_H */