Use ptr-to-const in Futex
[folly.git] / folly / detail / Futex.h
index 1c5a540c1d63e01051cf00ffb655e7850560fe63..a2e35020dc2dbafc0981626dff6666ac4a0221b2 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2017 Facebook, Inc.
+ * Copyright 2013-present Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -31,7 +31,7 @@ enum class FutexResult {
   VALUE_CHANGED, /* Futex value didn't match expected */
   AWOKEN,        /* futex wait matched with a futex wake */
   INTERRUPTED,   /* Spurious wake-up or signal caused futex wait failure */
-  TIMEDOUT
+  TIMEDOUT,
 };
 
 /**
@@ -46,7 +46,7 @@ enum class FutexResult {
 template <template <typename> class Atom = std::atomic>
 struct Futex : Atom<uint32_t>, boost::noncopyable {
 
-  explicit Futex(uint32_t init = 0) : Atom<uint32_t>(init) {}
+  explicit constexpr Futex(uint32_t init = 0) : Atom<uint32_t>(init) {}
 
   /** Puts the thread to sleep if this->load() == expected.  Returns true when
    *  it is returning because it has consumed a wake() event, false for any
@@ -125,8 +125,8 @@ struct Futex : Atom<uint32_t>, boost::noncopyable {
    *  is the same as system_clock on some platforms. */
   FutexResult futexWaitImpl(
       uint32_t expected,
-      std::chrono::time_point<std::chrono::system_clock>* absSystemTime,
-      std::chrono::time_point<std::chrono::steady_clock>* absSteadyTime,
+      std::chrono::system_clock::time_point const* absSystemTime,
+      std::chrono::steady_clock::time_point const* absSteadyTime,
       uint32_t waitMask);
 };
 
@@ -149,19 +149,20 @@ int Futex<std::atomic>::futexWake(int count, uint32_t wakeMask);
 
 template <>
 FutexResult Futex<std::atomic>::futexWaitImpl(
-      uint32_t expected,
-      std::chrono::time_point<std::chrono::system_clock>* absSystemTime,
-      std::chrono::time_point<std::chrono::steady_clock>* absSteadyTime,
-      uint32_t waitMask);
+    uint32_t expected,
+    std::chrono::system_clock::time_point const* absSystemTime,
+    std::chrono::steady_clock::time_point const* absSteadyTime,
+    uint32_t waitMask);
 
 template <>
 int Futex<EmulatedFutexAtomic>::futexWake(int count, uint32_t wakeMask);
 
 template <>
 FutexResult Futex<EmulatedFutexAtomic>::futexWaitImpl(
-      uint32_t expected,
-      std::chrono::time_point<std::chrono::system_clock>* absSystemTime,
-      std::chrono::time_point<std::chrono::steady_clock>* absSteadyTime,
-      uint32_t waitMask);
+    uint32_t expected,
+    std::chrono::system_clock::time_point const* absSystemTime,
+    std::chrono::steady_clock::time_point const* absSteadyTime,
+    uint32_t waitMask);
 
-}}
+} // namespace detail
+} // namespace folly