Hi, Jonathan

Thanks for the further investigation.  I definitely encountered the
missing _M_try_acquire in __platform_semaphore.

Thanks, David

On Wed, Apr 21, 2021 at 8:12 AM Jonathan Wakely <jwak...@redhat.com> wrote:
>
> On 21/04/21 12:38 +0100, Jonathan Wakely wrote:
> >On 20/04/21 22:12 -0700, Thomas Rodgers wrote:
> >>@@ -86,6 +88,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
> >>    {
> >
> >Please just commit this part to trunk and gcc-11, not the macro
> >renaming (as that's been fixed by Jakub already).
>
> I think on trunk I'd prefer to do the attached. WDYT?
>
>

Reply via email to