Several corrections thanks to Johan Lorensson
[mono.git] / mono / io-layer / timefuncs.c
index 274fdd53536e59e0887b08261fd233beed0d77ad..8a79f3b4d577f3b171d082c396e3d9181e6551cc 100644 (file)
 #include <glib.h>
 #include <sys/time.h>
 #include <stdlib.h>
+#include <stdio.h>
 
 #include <mono/io-layer/wapi.h>
 #include <mono/io-layer/timefuncs-private.h>
+#include "mono/utils/mono-time.h"
+
+#undef DEBUG
 
 void _wapi_time_t_to_filetime (time_t timeval, WapiFileTime *filetime)
 {
        guint64 ticks;
        
-       ticks = ((guint64)timeval * 10000000) + 116444736000000000UL;
+       ticks = ((guint64)timeval * 10000000) + 116444736000000000ULL;
+       filetime->dwLowDateTime = ticks & 0xFFFFFFFF;
+       filetime->dwHighDateTime = ticks >> 32;
+}
+
+void _wapi_timeval_to_filetime (struct timeval *tv, WapiFileTime *filetime)
+{
+       guint64 ticks;
+       
+       ticks = ((guint64)tv->tv_sec * 10000000) +
+               ((guint64)tv->tv_usec * 10) + 116444736000000000ULL;
+       filetime->dwLowDateTime = ticks & 0xFFFFFFFF;
+       filetime->dwHighDateTime = ticks >> 32;
+}
+
+void _wapi_guint64_to_filetime (guint64 ticks, WapiFileTime *filetime)
+{
        filetime->dwLowDateTime = ticks & 0xFFFFFFFF;
        filetime->dwHighDateTime = ticks >> 32;
 }
@@ -34,3 +54,7 @@ gboolean QueryPerformanceFrequency(WapiLargeInteger *freq G_GNUC_UNUSED)
        return(FALSE);
 }
 
+guint32 GetTickCount (void)
+{
+       return mono_msec_ticks ();
+}