Fixed log so it will compile under Visual Studio
authorWilliam Speirs <bill.speirs@gmail.com>
Tue, 14 Oct 2014 21:07:30 +0000 (17:07 -0400)
committerClifford Wolf <clifford@clifford.at>
Tue, 14 Oct 2014 22:48:59 +0000 (00:48 +0200)
- Included an implementation of gettimeofday

kernel/log.cc
kernel/log.h

index 87a75410dd85e529832a6d5553ec3c8ef57c50dc..4585e7eff8ca7a10cdde85dcee0324e17621f445 100644 (file)
 #include "libs/sha1/sha1.h"
 #include "backends/ilang/ilang_backend.h"
 
-#include <sys/time.h>
+#ifndef _WIN32
+       #include <sys/time.h>
+#endif
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -48,6 +51,26 @@ static struct timeval initial_tv = { 0, 0 };
 static bool next_print_log = false;
 static int log_newline_count = 0;
 
+#ifdef _WIN32
+// this will get time information and return it in timeval, simulating gettimeofday()
+int gettimeofday(struct timeval *tv, struct timezone *tz)
+{
+       LARGE_INTEGER counter;
+       LARGE_INTEGER freq;
+
+       QueryPerformanceFrequency(&freq);
+       QueryPerformanceCounter(&counter);
+
+       counter.QuadPart *= 1000000;
+       counter.QuadPart /= freq.QuadPart;
+
+       tv->tv_sec = counter.QuadPart / 1000000;
+       tv->tv_usec = counter.QuadPart % 1000000;
+
+       return 0;
+}
+#endif
+
 void logv(const char *format, va_list ap)
 {
        while (format[0] == '\n' && format[1] != 0) {
index b4182b5f3921b76bb46e66f18797ba8e281cc03f..d4b21110c0c6aec6d2dc3f51c533c7f099caeab2 100644 (file)
 #define LOG_H
 
 #include <time.h>
-#include <sys/time.h>
 
 #ifndef _WIN32
-#  include <sys/resource.h>
+       #include <sys/time.h>
+       #include <sys/resource.h>
 #endif
 
 // from libs/sha1/sha1.h
@@ -51,12 +51,20 @@ extern int log_verbose_level;
 
 void logv(const char *format, va_list ap);
 void logv_header(const char *format, va_list ap);
-void logv_error(const char *format, va_list ap) __attribute__ ((noreturn));
 
-void log(const char *format, ...)  __attribute__ ((format (printf, 1, 2)));
-void log_header(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
-void log_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn));
-void log_cmd_error(const char *format, ...) __attribute__ ((format (printf, 1, 2))) __attribute__ ((noreturn));
+#if !defined(__GNUC__) && !defined(__clang__)
+       void logv_error(const char *format, va_list ap);
+       void log(const char *format, ...);
+       void log_header(const char *format, ...);
+       void log_error(const char *format, ...);
+       void log_cmd_error(const char *format, ...);
+#else
+       void logv_error(const char *format, va_list ap) __attribute__((noreturn));
+       void log(const char *format, ...)  __attribute__((format(printf, 1, 2)));
+       void log_header(const char *format, ...) __attribute__((format(printf, 1, 2)));
+       void log_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn));
+       void log_cmd_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn));
+#endif
 
 void log_spacer();
 void log_push();