Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / support / time.c
index 71bbae9d0375a4d1e6d1f83640560d4209c56bbb..05ceb4ccca8993499f36a83a9ef80c81c7b187a5 100644 (file)
 #include <time.h>
 #include <errno.h>
 
+#include "map.h"
 #include "mph.h"
-#include <glib/gtypes.h>
+#include <glib.h>
 
 G_BEGIN_DECLS
 
+#if defined(HAVE_STRUCT_TIMESPEC) && _POSIX_C_SOURCE >= 199309L
+int
+Mono_Posix_Syscall_nanosleep (struct Mono_Posix_Timespec *req,
+               struct Mono_Posix_Timespec *rem)
+{
+       struct timespec _req, _rem, *prem = NULL;
+       int r;
+
+       if (req == NULL) {
+               errno = EFAULT;
+               return -1;
+       }
+
+       if (Mono_Posix_FromTimespec (req, &_req) == -1)
+               return -1;
+
+       if (rem) {
+               if (Mono_Posix_FromTimespec (rem, &_rem) == -1)
+                       return -1;
+               prem = &_rem;
+       }
+
+       r = nanosleep (&_req, prem);
+
+       if (rem && Mono_Posix_ToTimespec (prem, rem) == -1)
+               return -1;
+
+       return r;
+}
+#endif
+
 #ifdef HAVE_STIME
 gint32
 Mono_Posix_Syscall_stime (mph_time_t *t)