apr-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j..@apache.org
Subject svn commit: r1790302 - /apr/apr/trunk/locks/unix/misc.c
Date Wed, 05 Apr 2017 17:10:04 GMT
Author: jim
Date: Wed Apr  5 17:10:04 2017
New Revision: 1790302

URL: http://svn.apache.org/viewvc?rev=1790302&view=rev
Log:
semtimedop() takes a delta time, so accept what is given as the "time remaining"
rr1790301

Modified:
    apr/apr/trunk/locks/unix/misc.c

Modified: apr/apr/trunk/locks/unix/misc.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/locks/unix/misc.c?rev=1790302&r1=1790301&r2=1790302&view=diff
==============================================================================
--- apr/apr/trunk/locks/unix/misc.c (original)
+++ apr/apr/trunk/locks/unix/misc.c Wed Apr  5 17:10:04 2017
@@ -146,41 +146,23 @@ int sem_timedwait(sem_t * sem, const str
 #if APR_HAS_SYSVSEM_SERIALIZE
 #if !HAVE_SEMTIMEDOP
 extern int semtimedop(int semid, struct sembuf *sops, unsigned nsops,
-                      const struct timespec *abs_timeout);
+                      const struct timespec *timeout);
 /*
  * A semtimedop() impl for OSX/macOS, which lacks the
  * real thing.
  */
 int semtimedop(int semid, struct sembuf *sops, unsigned nsops,
-               const struct timespec *abs_timeout)
+               const struct timespec *timeout)
 {
     int rv;
-    struct timespec remaining, ts, tod;
-    apr_time_t now;
+    struct timespec remaining, ts;
     struct sembuf proc_mutex_op_try;
 
     proc_mutex_op_try.sem_num = 0;
     proc_mutex_op_try.sem_op = -1;
     proc_mutex_op_try.sem_flg = SEM_UNDO | IPC_NOWAIT;
 
-    remaining = *abs_timeout;
-    now = apr_time_now();
-    tod.tv_sec = apr_time_sec(now);
-    tod.tv_nsec = apr_time_usec(now) * 1000;    /* nanoseconds */
-
-    remaining.tv_sec -= tod.tv_sec;
-    if (tod.tv_nsec <= remaining.tv_nsec) {
-        remaining.tv_nsec -= tod.tv_nsec;
-    }
-    else {
-        remaining.tv_sec--;
-        remaining.tv_nsec =
-            (NANOSECS_PER_SEC - (tod.tv_nsec - remaining.tv_nsec));
-    }
-    /* If we had a REALLY small timeout ;) */
-    if (remaining.tv_sec < 0) {
-        return ETIMEDOUT;
-    }
+    remaining = *timeout;
     errno = 0;
     while (((rv = semop(semid, &proc_mutex_op_try, nsops)) != 0)
            && (errno == EAGAIN)) {



Mime
View raw message