[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-09-04 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

--- Comment #4 from Jonathan Wakely  ---
Author: redi
Date: Fri Sep  4 11:23:44 2015
New Revision: 227490

URL: https://gcc.gnu.org/viewcvs?rev=227490=gcc=rev
Log:
Add portable timed_mutex and recursive_timed_mutex.

PR libstdc++/65704
* include/Makefile.am: Add .
* include/Makefile.in: Regenerate.
* include/bits/mutex.h (__mutex_base, mutex, lock_guard, unique_lock):
New file containing types moved from .
* include/std/condition_variable: Include  instead of
.
* include/std/mutex (__mutex_base, mutex, lock_guard, unique_lock):
Move to .
*  testsuite/30_threads/recursive_timed_mutex/cons/1.cc: Remove
dg-require-gthreads-timed.
*  testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc:
Likewise.
*  testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc:
Likewise.
*  testsuite/30_threads/recursive_timed_mutex/dest/
destructor_locked.cc: Likewise.
*  testsuite/30_threads/recursive_timed_mutex/lock/1.cc: Likewise.
*  testsuite/30_threads/recursive_timed_mutex/lock/2.cc: Likewise.
*  testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc: Likewise.
*  testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc: Likewise.
*  testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc:
Likewise.
*  testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc:
Likewise.
*  testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc:
Likewise.
*  testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc:
Likewise.
*  testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc:
Likewise.
*  testsuite/30_threads/recursive_timed_mutex/unlock/1.cc: Likewise.
*  testsuite/30_threads/timed_mutex/cons/1.cc: Likewise.
*  testsuite/30_threads/timed_mutex/cons/assign_neg.cc: Likewise.
*  testsuite/30_threads/timed_mutex/cons/copy_neg.cc: Likewise.
*  testsuite/30_threads/timed_mutex/dest/destructor_locked.cc:
Likewise.
*  testsuite/30_threads/timed_mutex/lock/1.cc: Likewise.
*  testsuite/30_threads/timed_mutex/requirements/standard_layout.cc:
Likewise.
*  testsuite/30_threads/timed_mutex/try_lock/1.cc: Likewise.
*  testsuite/30_threads/timed_mutex/try_lock/2.cc: Likewise.
*  testsuite/30_threads/timed_mutex/try_lock_for/1.cc: Likewise.
*  testsuite/30_threads/timed_mutex/try_lock_for/2.cc: Likewise.
*  testsuite/30_threads/timed_mutex/try_lock_for/3.cc: Likewise.
*  testsuite/30_threads/timed_mutex/try_lock_until/1.cc: Likewise.
*  testsuite/30_threads/timed_mutex/try_lock_until/2.cc: Likewise.
*  testsuite/30_threads/timed_mutex/try_lock_until/57641.cc: Likewise.
*  testsuite/30_threads/timed_mutex/unlock/1.cc: Likewise.
*  testsuite/30_threads/unique_lock/cons/5.cc: Likewise.
*  testsuite/30_threads/unique_lock/cons/6.cc: Likewise.
*  testsuite/30_threads/unique_lock/locking/3.cc: Likewise.
*  testsuite/30_threads/unique_lock/locking/4.cc: Likewise.

Added:
trunk/libstdc++-v3/include/bits/mutex.h
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/Makefile.am
trunk/libstdc++-v3/include/Makefile.in
trunk/libstdc++-v3/include/std/condition_variable
trunk/libstdc++-v3/include/std/mutex
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
   
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
trunk/libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc
trunk/libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
trunk/libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
trunk/libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
   

[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-09-04 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

Jonathan Wakely  changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #3 from Jonathan Wakely  ---
Fixed on trunk


[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-09-04 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

--- Comment #6 from Jonathan Wakely  ---
Sorry, that was a stupid last minute copy & paste error. Fix coming...


[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-09-04 Thread iains at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

Iain Sandoe  changed:

   What|Removed |Added

 CC||iains at gcc dot gnu.org

--- Comment #5 from Iain Sandoe  ---
Created attachment 36292
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36292=edit
fix for bootstrap fail

thanks for working on this Jonathan,

small glitch: as of 227490, bootstrap is broken with problems in
libstdc++-v3/include/std/mutex.

the patch attached allows bootstrap to complete - but I can't be sure it's what
you'd intended.


[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-09-04 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

--- Comment #8 from Jonathan Wakely  ---
I wasn't actually testing the new code at all due to a cock up when trying to
undefine the macro that differs between darwin and other targets. Should be OK
now.


[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-09-04 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

--- Comment #7 from Jonathan Wakely  ---
Author: redi
Date: Fri Sep  4 16:09:05 2015
New Revision: 227495

URL: https://gcc.gnu.org/viewcvs?rev=227495=gcc=rev
Log:
fix darwin bootstrap errors due to .

PR libstdc++/65704
* include/std/mutex (recursive_timed_mutex): Fix uses of _Can_lock.

Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/std/mutex


[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-04-28 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
Making this work requires splitting mutex into smaller pieces so that
std::timed_mutex can depend on std::condition_variable, which depends on
std::mutex.

I'll come back to it.


[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-04-09 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
Created attachment 35273
  -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=35273action=edit
something like this


[Bug libstdc++/65704] Provide portable versions of std::timed_mutex and std::recursive_timed_mutex

2015-04-08 Thread redi at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65704

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2015-04-08
   Assignee|unassigned at gcc dot gnu.org  |redi at gcc dot gnu.org
   Target Milestone|--- |6.0
 Ever confirmed|0   |1