Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2021-07-29 18:22:11 +0300
committerCorinna Vinschen <corinna@vinschen.de>2021-07-29 18:22:11 +0300
commit5c4eaf45f168762008237c5ee73ad72cdd4cf47f (patch)
tree0d1d16dd4bdb999be3b0dcc020fc0f6327ae49c9 /winsup
parent123454f9d0bd72b34d9fb91dd9f91e1c38597d3c (diff)
Cygwin: implement pthread_mutex_clocklock
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/common.din1
-rw-r--r--winsup/cygwin/include/pthread.h4
-rw-r--r--winsup/cygwin/thread.cc11
3 files changed, 14 insertions, 2 deletions
diff --git a/winsup/cygwin/common.din b/winsup/cygwin/common.din
index a664f1d09..f7c27fd4d 100644
--- a/winsup/cygwin/common.din
+++ b/winsup/cygwin/common.din
@@ -1121,6 +1121,7 @@ pthread_join SIGFE
pthread_key_create SIGFE
pthread_key_delete SIGFE
pthread_kill SIGFE
+pthread_mutex_clocklock SIGFE
pthread_mutex_destroy SIGFE
pthread_mutex_getprioceiling SIGFE
pthread_mutex_init SIGFE
diff --git a/winsup/cygwin/include/pthread.h b/winsup/cygwin/include/pthread.h
index e82a111ce..a55be5d40 100644
--- a/winsup/cygwin/include/pthread.h
+++ b/winsup/cygwin/include/pthread.h
@@ -167,6 +167,10 @@ int pthread_mutex_getprioceiling (const pthread_mutex_t *, int *);
int pthread_mutex_init (pthread_mutex_t *, const pthread_mutexattr_t *);
int pthread_mutex_lock (pthread_mutex_t *);
int pthread_mutex_setprioceiling (pthread_mutex_t *, int, int *);
+#if __GNU_VISIBLE
+int pthread_mutex_clocklock (pthread_mutex_t *, clockid_t,
+ const struct timespec *);
+#endif
int pthread_mutex_timedlock (pthread_mutex_t *, const struct timespec *);
int pthread_mutex_trylock (pthread_mutex_t *);
int pthread_mutex_unlock (pthread_mutex_t *);
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index 97fcf0c05..55184f8b9 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -3475,7 +3475,8 @@ pthread_mutex_lock (pthread_mutex_t *mutex)
}
extern "C" int
-pthread_mutex_timedlock (pthread_mutex_t *mutex, const struct timespec *abstime)
+pthread_mutex_clocklock (pthread_mutex_t *mutex, clockid_t clock_id,
+ const struct timespec *abstime)
{
LARGE_INTEGER timeout;
@@ -3491,7 +3492,7 @@ pthread_mutex_timedlock (pthread_mutex_t *mutex, const struct timespec *abstime)
__try
{
- int err = pthread_convert_abstime (CLOCK_REALTIME, abstime, &timeout);
+ int err = pthread_convert_abstime (clock_id, abstime, &timeout);
if (err)
return err;
@@ -3503,6 +3504,12 @@ pthread_mutex_timedlock (pthread_mutex_t *mutex, const struct timespec *abstime)
}
extern "C" int
+pthread_mutex_timedlock (pthread_mutex_t *mutex, const struct timespec *abstime)
+{
+ return pthread_mutex_clocklock (mutex, CLOCK_REALTIME, abstime);
+}
+
+extern "C" int
pthread_mutex_trylock (pthread_mutex_t *mutex)
{
if (pthread_mutex::is_initializer (mutex))