]> gcc.gnu.org Git - gcc.git/commitdiff
[libstdc++] Add missing _M_try_acquire() to __platform_semaphore
authorThomas Rodgers <rodgert@twrodgers.com>
Wed, 21 Apr 2021 15:15:16 +0000 (08:15 -0700)
committerThomas Rodgers <rodgert@twrodgers.com>
Wed, 21 Apr 2021 15:24:40 +0000 (08:24 -0700)
libstdc++-v3/ChangeLog:
* include/bits/semaphore_base.h: Add missing _M_try_acquire()
member to __platform_wait.

(cherry picked from commit 5445da1a94bb4df752209e54f4aa21702609a20a)

libstdc++-v3/include/bits/semaphore_base.h

index 7e3235d182e9954dd3366bf378fe8ac7a42b56d0..35469e443b0e90c511faaac7c9e5767f16c5e59e 100644 (file)
@@ -86,6 +86,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        }
     }
 
+    _GLIBCXX_ALWAYS_INLINE bool
+    _M_try_acquire() noexcept
+    {
+      for (;;)
+       {
+         auto __err = sem_trywait(&_M_semaphore);
+         if (__err && (errno == EINTR))
+           continue;
+         else if (__err && (errno == EAGAIN))
+           return false;
+         else if (__err)
+           std::terminate();
+         else
+           break;
+       }
+      return true;
+    }
+
     _GLIBCXX_ALWAYS_INLINE void
     _M_release(std::ptrdiff_t __update) noexcept
     {
This page took 0.061934 seconds and 5 git commands to generate.