* time.c: Add Mono_Posix_Syscall_nanosleep().
authorJonathan Pryor <jpryor@novell.com>
Thu, 16 Oct 2008 00:52:09 +0000 (00:52 -0000)
committerJonathan Pryor <jpryor@novell.com>
Thu, 16 Oct 2008 00:52:09 +0000 (00:52 -0000)
svn path=/trunk/mono/; revision=115944

support/ChangeLog
support/time.c

index 7cf8746d89380956eebc95f70b7e0ba2e88bb47c..d750a96a6237f8feda2df486aa92af662cfe8c25 100644 (file)
@@ -1,3 +1,7 @@
+2008-10-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * time.c: Add Mono_Posix_Syscall_nanosleep().
+
 2008-10-15  Jonathan Pryor  <jpryor@novell.com>
 
        * fcntl.c: Use Mono_Posix_{From,To}Flock() for flock conversion.
index 8d3d1a9a2262db1a8aa41e65bad59edbffe45598..ccd1af09ba96ec7a594818224fa73004d59ffe9b 100644 (file)
 
 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;
+       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)