X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=support%2Ftime.c;h=05ceb4ccca8993499f36a83a9ef80c81c7b187a5;hb=52e98abd6e5c6d10ddea91a529f7b1b2336e0696;hp=71bbae9d0375a4d1e6d1f83640560d4209c56bbb;hpb=0abc2e6270020edc4a5b4c66f93b4ae582815f20;p=mono.git diff --git a/support/time.c b/support/time.c index 71bbae9d037..05ceb4ccca8 100644 --- a/support/time.c +++ b/support/time.c @@ -11,11 +11,43 @@ #include #include +#include "map.h" #include "mph.h" -#include +#include 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)