This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] Rename bits/mutex.h to avoid clashing with glibc


Matthias discovered that the new <bits/mutex.h> header I created on
trunk clashes with a libc header on GNU/Hurd, so this patch renames it
to something unique.

Tested powerpc64le-linux, committed to trunk.

commit cd573d5d7d0a13be626619fa4b663941e86cdf98
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed Jan 6 12:43:07 2016 +0000

    Rename bits/mutex.h to avoid clashing with glibc
    
    	* include/Makefile.am: Adjust.
    	* include/Makefile.in: Regenerate.
    	* include/bits/mutex.h: Rename to bits/std_mutex.h.
    	* include/std/condition_variable: Adjust include.
    	* include/std/mutex: Likewise.

diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index e657420..b0a9373 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -122,7 +122,7 @@ bits_headers = \
 	${bits_srcdir}/mask_array.h \
 	${bits_srcdir}/memoryfwd.h \
 	${bits_srcdir}/move.h \
-	${bits_srcdir}/mutex.h \
+	${bits_srcdir}/std_mutex.h \
 	${bits_srcdir}/ostream.tcc \
 	${bits_srcdir}/ostream_insert.h \
 	${bits_srcdir}/parse_numbers.h \
diff --git a/libstdc++-v3/include/bits/mutex.h b/libstdc++-v3/include/bits/mutex.h
deleted file mode 100644
index 67b7825..0000000
--- a/libstdc++-v3/include/bits/mutex.h
+++ /dev/null
@@ -1,373 +0,0 @@
-// std::mutex implementation -*- C++ -*-
-
-// Copyright (C) 2003-2016 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library.  This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file bits/mutex.h
- *  This is an internal header file, included by other library headers.
- *  Do not attempt to use it directly. @headername{mutex}
- */
-
-#ifndef _GLIBCXX_MUTEX_H
-#define _GLIBCXX_MUTEX_H 1
-
-#pragma GCC system_header
-
-#if __cplusplus < 201103L
-# include <bits/c++0x_warning.h>
-#else
-
-#include <system_error>
-#include <bits/functexcept.h>
-#include <bits/gthr.h>
-#include <bits/move.h> // for std::swap
-
-#ifdef _GLIBCXX_USE_C99_STDINT_TR1
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_VERSION
-
-  /**
-   * @defgroup mutexes Mutexes
-   * @ingroup concurrency
-   *
-   * Classes for mutex support.
-   * @{
-   */
-
-#ifdef _GLIBCXX_HAS_GTHREADS
-  // Common base class for std::mutex and std::timed_mutex
-  class __mutex_base
-  {
-  protected:
-    typedef __gthread_mutex_t			__native_type;
-
-#ifdef __GTHREAD_MUTEX_INIT
-    __native_type  _M_mutex = __GTHREAD_MUTEX_INIT;
-
-    constexpr __mutex_base() noexcept = default;
-#else
-    __native_type  _M_mutex;
-
-    __mutex_base() noexcept
-    {
-      // XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may)
-      __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
-    }
-
-    ~__mutex_base() noexcept { __gthread_mutex_destroy(&_M_mutex); }
-#endif
-
-    __mutex_base(const __mutex_base&) = delete;
-    __mutex_base& operator=(const __mutex_base&) = delete;
-  };
-
-  /// The standard mutex type.
-  class mutex : private __mutex_base
-  {
-  public:
-    typedef __native_type* 			native_handle_type;
-
-#ifdef __GTHREAD_MUTEX_INIT
-    constexpr
-#endif
-    mutex() noexcept = default;
-    ~mutex() = default;
-
-    mutex(const mutex&) = delete;
-    mutex& operator=(const mutex&) = delete;
-
-    void
-    lock()
-    {
-      int __e = __gthread_mutex_lock(&_M_mutex);
-
-      // EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
-      if (__e)
-	__throw_system_error(__e);
-    }
-
-    bool
-    try_lock() noexcept
-    {
-      // XXX EINVAL, EAGAIN, EBUSY
-      return !__gthread_mutex_trylock(&_M_mutex);
-    }
-
-    void
-    unlock()
-    {
-      // XXX EINVAL, EAGAIN, EPERM
-      __gthread_mutex_unlock(&_M_mutex);
-    }
-
-    native_handle_type
-    native_handle()
-    { return &_M_mutex; }
-  };
-
-#endif // _GLIBCXX_HAS_GTHREADS
-
-  /// Do not acquire ownership of the mutex.
-  struct defer_lock_t { explicit defer_lock_t() = default; };
-
-  /// Try to acquire ownership of the mutex without blocking.
-  struct try_to_lock_t { explicit try_to_lock_t() = default; };
-
-  /// Assume the calling thread has already obtained mutex ownership
-  /// and manage it.
-  struct adopt_lock_t { explicit adopt_lock_t() = default; };
-
-  /// Tag used to prevent a scoped lock from acquiring ownership of a mutex.
-  constexpr defer_lock_t	defer_lock { };
-
-  /// Tag used to prevent a scoped lock from blocking if a mutex is locked.
-  constexpr try_to_lock_t	try_to_lock { };
-
-  /// Tag used to make a scoped lock take ownership of a locked mutex.
-  constexpr adopt_lock_t	adopt_lock { };
-
-  /** @brief A simple scoped lock type.
-   *
-   * A lock_guard controls mutex ownership within a scope, releasing
-   * ownership in the destructor.
-   */
-  template<typename _Mutex>
-    class lock_guard
-    {
-    public:
-      typedef _Mutex mutex_type;
-
-      explicit lock_guard(mutex_type& __m) : _M_device(__m)
-      { _M_device.lock(); }
-
-      lock_guard(mutex_type& __m, adopt_lock_t) : _M_device(__m)
-      { } // calling thread owns mutex
-
-      ~lock_guard()
-      { _M_device.unlock(); }
-
-      lock_guard(const lock_guard&) = delete;
-      lock_guard& operator=(const lock_guard&) = delete;
-
-    private:
-      mutex_type&  _M_device;
-    };
-
-  /** @brief A movable scoped lock type.
-   *
-   * A unique_lock controls mutex ownership within a scope. Ownership of the
-   * mutex can be delayed until after construction and can be transferred
-   * to another unique_lock by move construction or move assignment. If a
-   * mutex lock is owned when the destructor runs ownership will be released.
-   */
-  template<typename _Mutex>
-    class unique_lock
-    {
-    public:
-      typedef _Mutex mutex_type;
-
-      unique_lock() noexcept
-      : _M_device(0), _M_owns(false)
-      { }
-
-      explicit unique_lock(mutex_type& __m)
-      : _M_device(std::__addressof(__m)), _M_owns(false)
-      {
-	lock();
-	_M_owns = true;
-      }
-
-      unique_lock(mutex_type& __m, defer_lock_t) noexcept
-      : _M_device(std::__addressof(__m)), _M_owns(false)
-      { }
-
-      unique_lock(mutex_type& __m, try_to_lock_t)
-      : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock())
-      { }
-
-      unique_lock(mutex_type& __m, adopt_lock_t)
-      : _M_device(std::__addressof(__m)), _M_owns(true)
-      {
-	// XXX calling thread owns mutex
-      }
-
-      template<typename _Clock, typename _Duration>
-	unique_lock(mutex_type& __m,
-		    const chrono::time_point<_Clock, _Duration>& __atime)
-	: _M_device(std::__addressof(__m)),
-	  _M_owns(_M_device->try_lock_until(__atime))
-	{ }
-
-      template<typename _Rep, typename _Period>
-	unique_lock(mutex_type& __m,
-		    const chrono::duration<_Rep, _Period>& __rtime)
-	: _M_device(std::__addressof(__m)),
-	  _M_owns(_M_device->try_lock_for(__rtime))
-	{ }
-
-      ~unique_lock()
-      {
-	if (_M_owns)
-	  unlock();
-      }
-
-      unique_lock(const unique_lock&) = delete;
-      unique_lock& operator=(const unique_lock&) = delete;
-
-      unique_lock(unique_lock&& __u) noexcept
-      : _M_device(__u._M_device), _M_owns(__u._M_owns)
-      {
-	__u._M_device = 0;
-	__u._M_owns = false;
-      }
-
-      unique_lock& operator=(unique_lock&& __u) noexcept
-      {
-	if(_M_owns)
-	  unlock();
-
-	unique_lock(std::move(__u)).swap(*this);
-
-	__u._M_device = 0;
-	__u._M_owns = false;
-
-	return *this;
-      }
-
-      void
-      lock()
-      {
-	if (!_M_device)
-	  __throw_system_error(int(errc::operation_not_permitted));
-	else if (_M_owns)
-	  __throw_system_error(int(errc::resource_deadlock_would_occur));
-	else
-	  {
-	    _M_device->lock();
-	    _M_owns = true;
-	  }
-      }
-
-      bool
-      try_lock()
-      {
-	if (!_M_device)
-	  __throw_system_error(int(errc::operation_not_permitted));
-	else if (_M_owns)
-	  __throw_system_error(int(errc::resource_deadlock_would_occur));
-	else
-	  {
-	    _M_owns = _M_device->try_lock();
-	    return _M_owns;
-	  }
-      }
-
-      template<typename _Clock, typename _Duration>
-	bool
-	try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
-	{
-	  if (!_M_device)
-	    __throw_system_error(int(errc::operation_not_permitted));
-	  else if (_M_owns)
-	    __throw_system_error(int(errc::resource_deadlock_would_occur));
-	  else
-	    {
-	      _M_owns = _M_device->try_lock_until(__atime);
-	      return _M_owns;
-	    }
-	}
-
-      template<typename _Rep, typename _Period>
-	bool
-	try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
-	{
-	  if (!_M_device)
-	    __throw_system_error(int(errc::operation_not_permitted));
-	  else if (_M_owns)
-	    __throw_system_error(int(errc::resource_deadlock_would_occur));
-	  else
-	    {
-	      _M_owns = _M_device->try_lock_for(__rtime);
-	      return _M_owns;
-	    }
-	 }
-
-      void
-      unlock()
-      {
-	if (!_M_owns)
-	  __throw_system_error(int(errc::operation_not_permitted));
-	else if (_M_device)
-	  {
-	    _M_device->unlock();
-	    _M_owns = false;
-	  }
-      }
-
-      void
-      swap(unique_lock& __u) noexcept
-      {
-	std::swap(_M_device, __u._M_device);
-	std::swap(_M_owns, __u._M_owns);
-      }
-
-      mutex_type*
-      release() noexcept
-      {
-	mutex_type* __ret = _M_device;
-	_M_device = 0;
-	_M_owns = false;
-	return __ret;
-      }
-
-      bool
-      owns_lock() const noexcept
-      { return _M_owns; }
-
-      explicit operator bool() const noexcept
-      { return owns_lock(); }
-
-      mutex_type*
-      mutex() const noexcept
-      { return _M_device; }
-
-    private:
-      mutex_type*	_M_device;
-      bool		_M_owns; // XXX use atomic_bool
-    };
-
-  /// Swap overload for unique_lock objects.
-  template<typename _Mutex>
-    inline void
-    swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept
-    { __x.swap(__y); }
-
-  // @} group mutexes
-_GLIBCXX_END_NAMESPACE_VERSION
-} // namespace
-#endif // _GLIBCXX_USE_C99_STDINT_TR1
-
-#endif // C++11
-
-#endif // _GLIBCXX_MUTEX_H
diff --git a/libstdc++-v3/include/bits/std_mutex.h b/libstdc++-v3/include/bits/std_mutex.h
new file mode 100644
index 0000000..67b7825
--- /dev/null
+++ b/libstdc++-v3/include/bits/std_mutex.h
@@ -0,0 +1,373 @@
+// std::mutex implementation -*- C++ -*-
+
+// Copyright (C) 2003-2016 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+/** @file bits/mutex.h
+ *  This is an internal header file, included by other library headers.
+ *  Do not attempt to use it directly. @headername{mutex}
+ */
+
+#ifndef _GLIBCXX_MUTEX_H
+#define _GLIBCXX_MUTEX_H 1
+
+#pragma GCC system_header
+
+#if __cplusplus < 201103L
+# include <bits/c++0x_warning.h>
+#else
+
+#include <system_error>
+#include <bits/functexcept.h>
+#include <bits/gthr.h>
+#include <bits/move.h> // for std::swap
+
+#ifdef _GLIBCXX_USE_C99_STDINT_TR1
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+  /**
+   * @defgroup mutexes Mutexes
+   * @ingroup concurrency
+   *
+   * Classes for mutex support.
+   * @{
+   */
+
+#ifdef _GLIBCXX_HAS_GTHREADS
+  // Common base class for std::mutex and std::timed_mutex
+  class __mutex_base
+  {
+  protected:
+    typedef __gthread_mutex_t			__native_type;
+
+#ifdef __GTHREAD_MUTEX_INIT
+    __native_type  _M_mutex = __GTHREAD_MUTEX_INIT;
+
+    constexpr __mutex_base() noexcept = default;
+#else
+    __native_type  _M_mutex;
+
+    __mutex_base() noexcept
+    {
+      // XXX EAGAIN, ENOMEM, EPERM, EBUSY(may), EINVAL(may)
+      __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
+    }
+
+    ~__mutex_base() noexcept { __gthread_mutex_destroy(&_M_mutex); }
+#endif
+
+    __mutex_base(const __mutex_base&) = delete;
+    __mutex_base& operator=(const __mutex_base&) = delete;
+  };
+
+  /// The standard mutex type.
+  class mutex : private __mutex_base
+  {
+  public:
+    typedef __native_type* 			native_handle_type;
+
+#ifdef __GTHREAD_MUTEX_INIT
+    constexpr
+#endif
+    mutex() noexcept = default;
+    ~mutex() = default;
+
+    mutex(const mutex&) = delete;
+    mutex& operator=(const mutex&) = delete;
+
+    void
+    lock()
+    {
+      int __e = __gthread_mutex_lock(&_M_mutex);
+
+      // EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
+      if (__e)
+	__throw_system_error(__e);
+    }
+
+    bool
+    try_lock() noexcept
+    {
+      // XXX EINVAL, EAGAIN, EBUSY
+      return !__gthread_mutex_trylock(&_M_mutex);
+    }
+
+    void
+    unlock()
+    {
+      // XXX EINVAL, EAGAIN, EPERM
+      __gthread_mutex_unlock(&_M_mutex);
+    }
+
+    native_handle_type
+    native_handle()
+    { return &_M_mutex; }
+  };
+
+#endif // _GLIBCXX_HAS_GTHREADS
+
+  /// Do not acquire ownership of the mutex.
+  struct defer_lock_t { explicit defer_lock_t() = default; };
+
+  /// Try to acquire ownership of the mutex without blocking.
+  struct try_to_lock_t { explicit try_to_lock_t() = default; };
+
+  /// Assume the calling thread has already obtained mutex ownership
+  /// and manage it.
+  struct adopt_lock_t { explicit adopt_lock_t() = default; };
+
+  /// Tag used to prevent a scoped lock from acquiring ownership of a mutex.
+  constexpr defer_lock_t	defer_lock { };
+
+  /// Tag used to prevent a scoped lock from blocking if a mutex is locked.
+  constexpr try_to_lock_t	try_to_lock { };
+
+  /// Tag used to make a scoped lock take ownership of a locked mutex.
+  constexpr adopt_lock_t	adopt_lock { };
+
+  /** @brief A simple scoped lock type.
+   *
+   * A lock_guard controls mutex ownership within a scope, releasing
+   * ownership in the destructor.
+   */
+  template<typename _Mutex>
+    class lock_guard
+    {
+    public:
+      typedef _Mutex mutex_type;
+
+      explicit lock_guard(mutex_type& __m) : _M_device(__m)
+      { _M_device.lock(); }
+
+      lock_guard(mutex_type& __m, adopt_lock_t) : _M_device(__m)
+      { } // calling thread owns mutex
+
+      ~lock_guard()
+      { _M_device.unlock(); }
+
+      lock_guard(const lock_guard&) = delete;
+      lock_guard& operator=(const lock_guard&) = delete;
+
+    private:
+      mutex_type&  _M_device;
+    };
+
+  /** @brief A movable scoped lock type.
+   *
+   * A unique_lock controls mutex ownership within a scope. Ownership of the
+   * mutex can be delayed until after construction and can be transferred
+   * to another unique_lock by move construction or move assignment. If a
+   * mutex lock is owned when the destructor runs ownership will be released.
+   */
+  template<typename _Mutex>
+    class unique_lock
+    {
+    public:
+      typedef _Mutex mutex_type;
+
+      unique_lock() noexcept
+      : _M_device(0), _M_owns(false)
+      { }
+
+      explicit unique_lock(mutex_type& __m)
+      : _M_device(std::__addressof(__m)), _M_owns(false)
+      {
+	lock();
+	_M_owns = true;
+      }
+
+      unique_lock(mutex_type& __m, defer_lock_t) noexcept
+      : _M_device(std::__addressof(__m)), _M_owns(false)
+      { }
+
+      unique_lock(mutex_type& __m, try_to_lock_t)
+      : _M_device(std::__addressof(__m)), _M_owns(_M_device->try_lock())
+      { }
+
+      unique_lock(mutex_type& __m, adopt_lock_t)
+      : _M_device(std::__addressof(__m)), _M_owns(true)
+      {
+	// XXX calling thread owns mutex
+      }
+
+      template<typename _Clock, typename _Duration>
+	unique_lock(mutex_type& __m,
+		    const chrono::time_point<_Clock, _Duration>& __atime)
+	: _M_device(std::__addressof(__m)),
+	  _M_owns(_M_device->try_lock_until(__atime))
+	{ }
+
+      template<typename _Rep, typename _Period>
+	unique_lock(mutex_type& __m,
+		    const chrono::duration<_Rep, _Period>& __rtime)
+	: _M_device(std::__addressof(__m)),
+	  _M_owns(_M_device->try_lock_for(__rtime))
+	{ }
+
+      ~unique_lock()
+      {
+	if (_M_owns)
+	  unlock();
+      }
+
+      unique_lock(const unique_lock&) = delete;
+      unique_lock& operator=(const unique_lock&) = delete;
+
+      unique_lock(unique_lock&& __u) noexcept
+      : _M_device(__u._M_device), _M_owns(__u._M_owns)
+      {
+	__u._M_device = 0;
+	__u._M_owns = false;
+      }
+
+      unique_lock& operator=(unique_lock&& __u) noexcept
+      {
+	if(_M_owns)
+	  unlock();
+
+	unique_lock(std::move(__u)).swap(*this);
+
+	__u._M_device = 0;
+	__u._M_owns = false;
+
+	return *this;
+      }
+
+      void
+      lock()
+      {
+	if (!_M_device)
+	  __throw_system_error(int(errc::operation_not_permitted));
+	else if (_M_owns)
+	  __throw_system_error(int(errc::resource_deadlock_would_occur));
+	else
+	  {
+	    _M_device->lock();
+	    _M_owns = true;
+	  }
+      }
+
+      bool
+      try_lock()
+      {
+	if (!_M_device)
+	  __throw_system_error(int(errc::operation_not_permitted));
+	else if (_M_owns)
+	  __throw_system_error(int(errc::resource_deadlock_would_occur));
+	else
+	  {
+	    _M_owns = _M_device->try_lock();
+	    return _M_owns;
+	  }
+      }
+
+      template<typename _Clock, typename _Duration>
+	bool
+	try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime)
+	{
+	  if (!_M_device)
+	    __throw_system_error(int(errc::operation_not_permitted));
+	  else if (_M_owns)
+	    __throw_system_error(int(errc::resource_deadlock_would_occur));
+	  else
+	    {
+	      _M_owns = _M_device->try_lock_until(__atime);
+	      return _M_owns;
+	    }
+	}
+
+      template<typename _Rep, typename _Period>
+	bool
+	try_lock_for(const chrono::duration<_Rep, _Period>& __rtime)
+	{
+	  if (!_M_device)
+	    __throw_system_error(int(errc::operation_not_permitted));
+	  else if (_M_owns)
+	    __throw_system_error(int(errc::resource_deadlock_would_occur));
+	  else
+	    {
+	      _M_owns = _M_device->try_lock_for(__rtime);
+	      return _M_owns;
+	    }
+	 }
+
+      void
+      unlock()
+      {
+	if (!_M_owns)
+	  __throw_system_error(int(errc::operation_not_permitted));
+	else if (_M_device)
+	  {
+	    _M_device->unlock();
+	    _M_owns = false;
+	  }
+      }
+
+      void
+      swap(unique_lock& __u) noexcept
+      {
+	std::swap(_M_device, __u._M_device);
+	std::swap(_M_owns, __u._M_owns);
+      }
+
+      mutex_type*
+      release() noexcept
+      {
+	mutex_type* __ret = _M_device;
+	_M_device = 0;
+	_M_owns = false;
+	return __ret;
+      }
+
+      bool
+      owns_lock() const noexcept
+      { return _M_owns; }
+
+      explicit operator bool() const noexcept
+      { return owns_lock(); }
+
+      mutex_type*
+      mutex() const noexcept
+      { return _M_device; }
+
+    private:
+      mutex_type*	_M_device;
+      bool		_M_owns; // XXX use atomic_bool
+    };
+
+  /// Swap overload for unique_lock objects.
+  template<typename _Mutex>
+    inline void
+    swap(unique_lock<_Mutex>& __x, unique_lock<_Mutex>& __y) noexcept
+    { __x.swap(__y); }
+
+  // @} group mutexes
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace
+#endif // _GLIBCXX_USE_C99_STDINT_TR1
+
+#endif // C++11
+
+#endif // _GLIBCXX_MUTEX_H
diff --git a/libstdc++-v3/include/std/condition_variable b/libstdc++-v3/include/std/condition_variable
index 677b2a8..62a7ee1 100644
--- a/libstdc++-v3/include/std/condition_variable
+++ b/libstdc++-v3/include/std/condition_variable
@@ -36,7 +36,7 @@
 #else
 
 #include <chrono>
-#include <bits/mutex.h>
+#include <bits/std_mutex.h>
 #include <ext/concurrence.h>
 #include <bits/alloc_traits.h>
 #include <bits/allocator.h>
diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex
index 9ac1d27..1f4da57 100644
--- a/libstdc++-v3/include/std/mutex
+++ b/libstdc++-v3/include/std/mutex
@@ -41,7 +41,7 @@
 #include <type_traits>
 #include <functional>
 #include <system_error>
-#include <bits/mutex.h>
+#include <bits/std_mutex.h>
 #if ! _GTHREAD_USE_MUTEX_TIMEDLOCK
 # include <condition_variable>
 # include <thread>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]