From b873a628fd1a22364846da5692e6d887d5c59266 Mon Sep 17 00:00:00 2001 From: Michael Lee Date: Mon, 7 Mar 2016 07:41:07 -0800 Subject: [PATCH] Guard Getcpu in test. Summary:Guarding this the same way it is done in detail/CacheLocality.cpp Reviewed By: yfeldblum Differential Revision: D3013288 fb-gh-sync-id: a1cc65cccc5cdf32339a739853c27a11ecd98ba0 shipit-source-id: a1cc65cccc5cdf32339a739853c27a11ecd98ba0 --- folly/configure.ac | 22 ++++++++++++++++++++++ folly/detail/CacheLocality.cpp | 2 +- folly/test/CacheLocalityTest.cpp | 2 ++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/folly/configure.ac b/folly/configure.ac index 2a815a0f..2b52035a 100644 --- a/folly/configure.ac +++ b/folly/configure.ac @@ -252,6 +252,28 @@ if test "$folly_cv_lib_libatomic" = no; then [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 + 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], diff --git a/folly/detail/CacheLocality.cpp b/folly/detail/CacheLocality.cpp index d174b6f5..e75120d6 100644 --- a/folly/detail/CacheLocality.cpp +++ b/folly/detail/CacheLocality.cpp @@ -210,7 +210,7 @@ CacheLocality CacheLocality::uniform(size_t numCpus) { ////////////// 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); diff --git a/folly/test/CacheLocalityTest.cpp b/folly/test/CacheLocalityTest.cpp index 40732ad8..eb600fe6 100644 --- a/folly/test/CacheLocalityTest.cpp +++ b/folly/test/CacheLocalityTest.cpp @@ -351,12 +351,14 @@ TEST(CacheLocality, FakeSysfs) { 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) { -- 2.34.1