X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=support%2Ftime.c;h=05ceb4ccca8993499f36a83a9ef80c81c7b187a5;hb=HEAD;hp=8d3d1a9a2262db1a8aa41e65bad59edbffe45598;hpb=3d693eeb90339833968d66c3dc9fde2fa3ba2cef;p=mono.git diff --git a/support/time.c b/support/time.c index 8d3d1a9a226..05ceb4ccca8 100644 --- a/support/time.c +++ b/support/time.c @@ -17,6 +17,37 @@ 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)