From 21ea7cc4ae0d46b058e1498ff4487cf1476a9354 Mon Sep 17 00:00:00 2001
From: Martine Lenders <mlenders@inf.fu-berlin.de>
Date: Sun, 25 Oct 2015 15:53:26 +0100
Subject: [PATCH] posix_semaphore: port to xtimer

---
 Makefile.dep                          |  2 +-
 sys/posix/semaphore/posix_semaphore.c | 13 +++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/Makefile.dep b/Makefile.dep
index 29776529fb..770d23614c 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -284,7 +284,7 @@ endif
 
 ifneq (,$(filter posix_semaphore,$(USEMODULE)))
   USEMODULE += sema
-  USEMODULE += vtimer
+  USEMODULE += xtimer
 endif
 
 ifneq (,$(filter sema,$(USEMODULE)))
diff --git a/sys/posix/semaphore/posix_semaphore.c b/sys/posix/semaphore/posix_semaphore.c
index 5db5673797..d1152ef686 100644
--- a/sys/posix/semaphore/posix_semaphore.c
+++ b/sys/posix/semaphore/posix_semaphore.c
@@ -25,7 +25,7 @@
 #include "tcb.h"
 #include "timex.h"
 #include "thread.h"
-#include "vtimer.h"
+#include "xtimer.h"
 
 #define ENABLE_DEBUG (0)
 #include "debug.h"
@@ -34,15 +34,16 @@
 
 int sem_timedwait(sem_t *sem, const struct timespec *abstime)
 {
-    timex_t now, timeout = { abstime->tv_sec, abstime->tv_nsec / USEC_IN_NS };
+    uint64_t now, timeout = (((uint64_t)abstime->tv_sec) * SEC_IN_USEC) +
+                            (abstime->tv_nsec / USEC_IN_NS);
     int res;
-    vtimer_now(&now);
-    if (timex_cmp(now, timeout) > 0) {
+    now = xtimer_now64();
+    if (now > timeout) {
         errno = ETIMEDOUT;
         return -1;
     }
-    timeout = timex_sub(timeout, now);
-    res = sema_wait_timed((sema_t *)sem, &timeout);
+    timeout = timeout - now;
+    res = sema_wait_timed((sema_t *)sem, timeout);
     if (res < 0) {
         errno = -res;
         return -1;
-- 
GitLab