Restructure of mono.sln and build properties to better fix static/dynamic library...
[mono.git] / support / time.c
index 591933907936f76a18150351a4872811837669c8..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)
 {
@@ -28,6 +61,7 @@ Mono_Posix_Syscall_stime (mph_time_t *t)
        _t = (time_t) *t;
        return stime (&_t);
 }
+#endif /* ndef HAVE_STIME */
 
 mph_time_t
 Mono_Posix_Syscall_time (mph_time_t *t)