[Please install the GNU Atomic library])])
fi
+AC_CACHE_CHECK(
+ [for liblinux-vdso support],
+ [folly_cv_lib_liblinux_vdso],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM[
+ #include <dlfcn.h>
+ int main() {
+ void *h = dlopen("linux-vdso.so.1", RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
+ if (h == nullptr) {
+ return -1;
+ }
+ dlclose(h);
+ return 0;
+ }
+ ]],
+ [folly_cv_lib_liblinux_vdso=yes],
+ [folly_cv_lib_liblinux_vdso=no])])
+
+if test "$folly_cv_lib_liblinux_vdso" = yes; then
+ AC_DEFINE([HAVE_LINUX_VDSO], [1], [Define to 1 if liblinux-vdso is available])
+fi
+
AC_CACHE_CHECK(
[for usable std::is_trivially_copyable],
[folly_cv_decl_std_is_trivially_copyable],
////////////// Getcpu
Getcpu::Func Getcpu::resolveVdsoFunc() {
-#if defined(_MSC_VER) || defined(__BIONIC__)
+#if !FOLLY_HAVE_LINUX_VDSO
return nullptr;
#else
void* h = dlopen("linux-vdso.so.1", RTLD_LAZY | RTLD_LOCAL | RTLD_NOLOAD);
EXPECT_EQ(expected.localityIndexByCpu, parsed.localityIndexByCpu);
}
+#if FOLLY_HAVE_LINUX_VDSO
TEST(Getcpu, VdsoGetcpu) {
unsigned cpu;
Getcpu::resolveVdsoFunc()(&cpu, nullptr, nullptr);
EXPECT_TRUE(cpu < CPU_SETSIZE);
}
+#endif
#ifdef FOLLY_TLS
TEST(ThreadId, SimpleTls) {