]> pd.if.org Git - pdclib/blobdiff - platform/win32/functions/threads/mtx_timedlock.c
dos2unix
[pdclib] / platform / win32 / functions / threads / mtx_timedlock.c
index 79c96e9f07c3dbdc621156d87953ce93c54eee3c..a0ddb2b1ae8d9898f8aecbae85d5cf7af3c6ce37 100644 (file)
@@ -1,58 +1,58 @@
-#ifndef REGTEST\r
-#include <threads.h>\r
-#include <windows.h>\r
-#include <stdint.h>\r
-\r
-int mtx_timedlock(mtx_t *_PDCLIB_restrict mtx, \r
-                  const struct timespec *_PDCLIB_restrict until)\r
-{\r
-    DWORD myId = GetCurrentThreadId();\r
-\r
-    if(mtx->_ThreadId == (long) myId) {\r
-        mtx->_NestCount++;\r
-        return thrd_success;\r
-    }\r
-\r
-\r
-    for(;;) {\r
-        LONG prev = InterlockedCompareExchange(&mtx->_ThreadId, myId, 0);\r
-        if(prev == 0)\r
-            return thrd_success;\r
-\r
-        struct timespec now;\r
-        int32_t msToWait = 0;\r
-        if(timespec_get(&now, TIME_UTC) != TIME_UTC) {\r
-            // timespec_get must work!\r
-            return thrd_error;\r
-        } else {\r
-            int64_t deltaSec  = (int64_t)until->tv_sec  - now.tv_sec;\r
-            long    deltaNsec = (long)until->tv_nsec - now.tv_nsec;\r
-\r
-            if(INT32_MAX / 2000U < deltaSec) {\r
-                // Risk of overflow - do a shorter timeout on this iteration\r
-                msToWait = INT32_MAX / 2;\r
-            } else {\r
-                msToWait = deltaSec * 1000 + deltaNsec / 1000;\r
-            }\r
-        }\r
-\r
-        if(msToWait < 0) {\r
-            return thrd_timeout;\r
-        }\r
-\r
-        DWORD rv = WaitForSingleObject(mtx->_WaitEvHandle, msToWait);\r
-        if(rv != WAIT_OBJECT_0 && rv != WAIT_TIMEOUT)\r
-            return thrd_error;\r
-    }\r
-}\r
-#endif\r
-\r
-#ifdef TEST\r
-#include "_PDCLIB_test.h"\r
-\r
-int main( void )\r
-{\r
-    return TEST_RESULTS;\r
-}\r
-\r
+#ifndef REGTEST
+#include <threads.h>
+#include <windows.h>
+#include <stdint.h>
+
+int mtx_timedlock(mtx_t *_PDCLIB_restrict mtx, 
+                  const struct timespec *_PDCLIB_restrict until)
+{
+    DWORD myId = GetCurrentThreadId();
+
+    if(mtx->_ThreadId == (long) myId) {
+        mtx->_NestCount++;
+        return thrd_success;
+    }
+
+
+    for(;;) {
+        LONG prev = InterlockedCompareExchange(&mtx->_ThreadId, myId, 0);
+        if(prev == 0)
+            return thrd_success;
+
+        struct timespec now;
+        int32_t msToWait = 0;
+        if(timespec_get(&now, TIME_UTC) != TIME_UTC) {
+            // timespec_get must work!
+            return thrd_error;
+        } else {
+            int64_t deltaSec  = (int64_t)until->tv_sec  - now.tv_sec;
+            long    deltaNsec = (long)until->tv_nsec - now.tv_nsec;
+
+            if(INT32_MAX / 2000U < deltaSec) {
+                // Risk of overflow - do a shorter timeout on this iteration
+                msToWait = INT32_MAX / 2;
+            } else {
+                msToWait = deltaSec * 1000 + deltaNsec / 1000;
+            }
+        }
+
+        if(msToWait < 0) {
+            return thrd_timeout;
+        }
+
+        DWORD rv = WaitForSingleObject(mtx->_WaitEvHandle, msToWait);
+        if(rv != WAIT_OBJECT_0 && rv != WAIT_TIMEOUT)
+            return thrd_error;
+    }
+}
+#endif
+
+#ifdef TEST
+#include "_PDCLIB_test.h"
+
+int main( void )
+{
+    return TEST_RESULTS;
+}
+
 #endif
\ No newline at end of file