This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ 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]

PR 53889: Add __gthread_recursive_mutex_destroy


There is no __gthread_recursive_mutex_destroy function in the gthreads API.

Trying to use __gthread_mutex_destroy fails to compile on platforms
where the mutex
types are different. To avoid resource leaks libstdc++ needs to hack
around the missing function with overloaded functions and SFINAE
tricks to detect how a recursive mutex can be destroyed.

This patch extends the gthreads API to include
__gthread_recursive_mutex_destroy, defining it for each gthread model,
and removing the hacks from libstdc++.

libgcc:

        PR other/53889
        * gthr.h (__gthread_recursive_mutex_destroy): Document new required
        function.
        * gthr-posix.h (__gthread_recursive_mutex_destroy): Define.
        * gthr-single.h (__gthread_recursive_mutex_destroy): Likewise.
        * config/gthr-rtems.h (__gthread_recursive_mutex_destroy): Likewise.
        * config/gthr-vxworks.h (__gthread_recursive_mutex_destroy): Likewise.
        * config/i386/gthr-win32.h (__gthread_recursive_mutex_destroy):
        Likewise.
        * config/mips/gthr-mipssde.h (__gthread_recursive_mutex_destroy):
        Likewise.
        * config/pa/gthr-dce.h (__gthread_recursive_mutex_destroy): Likewise.
        * config/s390/gthr-tpf.h (__gthread_recursive_mutex_destroy): Likewise.

libstdc++-v3:

        PR other/53889
        * include/std/mutex (__recursive_mutex_base::~__recursive_mutex_base):
        Use __gthread_recursive_mutex_destroy.
        (__recursive_mutex_base::_S_destroy): Remove.
        (__recursive_mutex_base::_S_destroy_win32): Likewise.
        * include/ext/concurrence.h (__recursive_mutex::~__recursive_mutex):
        Use __gthread_recursive_mutex_destroy.
        (__recursive_mutex::_S_destroy): Remove.
        (__recursive_mutex::_S_destroy_win32): Likewise.


Tested x86_64-linux.

Are the libgcc parts OK for trunk?

Attachment: patch.txt
Description: Text document


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