Add flags to asymmetric mem barrier
[folly.git] / folly / experimental / AsymmetricMemoryBarrier.cpp
index 55bec5f141bdc17d35d6347c1477b8d8dc9b4ac4..fc5b660141c3ebaa9b8bbd2b5a425ef98db8e343 100644 (file)
@@ -32,8 +32,7 @@ struct DummyPageCreator {
   }
 
   static void* get() {
-    static auto ptr =
-        kIsLinux && !detail::sysMembarrierAvailable() ? create() : nullptr;
+    static auto ptr = kIsLinux ? create() : nullptr;
     return ptr;
   }
 
@@ -81,10 +80,11 @@ void mprotectMembarrier() {
 }
 }
 
-void asymmetricHeavyBarrier() {
+void asymmetricHeavyBarrier(AMBFlags flags) {
   if (kIsLinux) {
     static const bool useSysMembarrier = detail::sysMembarrierAvailable();
-    if (useSysMembarrier) {
+    // sys_membarrier currently does not support EXPEDITED
+    if (useSysMembarrier && flags != AMBFlags::EXPEDITED) {
       auto r = detail::sysMembarrier();
       checkUnixError(r, "membarrier");
     } else {