X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=support%2Ftime.c;h=05ceb4ccca8993499f36a83a9ef80c81c7b187a5;hb=6f4c53862b2879c731c0f65d1f3af34399ed6008;hp=591933907936f76a18150351a4872811837669c8;hpb=50cd49c88c20bf0e8325ff345b2c562ad61790c6;p=mono.git diff --git a/support/time.c b/support/time.c index 59193390793..05ceb4ccca8 100644 --- a/support/time.c +++ b/support/time.c @@ -11,11 +11,44 @@ #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) { @@ -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)