Commit 23c3cd8d7ae77ea4cd17e8f7fb02491fc3ac3133
1 parent
25979161
add some definitions to get this build under mingw
Showing
4 changed files
with
109 additions
and
3 deletions
| @@ -24,8 +24,21 @@ | @@ -24,8 +24,21 @@ | ||
| 24 | #ifndef __TR_TIMER_H__ | 24 | #ifndef __TR_TIMER_H__ |
| 25 | #define __TR_TIMER_H__ | 25 | #define __TR_TIMER_H__ |
| 26 | 26 | ||
| 27 | +#include <time.h> | ||
| 28 | + | ||
| 27 | #include "trbase.h" | 29 | #include "trbase.h" |
| 28 | 30 | ||
| 31 | +#ifdef _WIN32 | ||
| 32 | +struct timespec { | ||
| 33 | + time_t tv_sec; | ||
| 34 | + long tv_nsec; | ||
| 35 | +}; | ||
| 36 | + | ||
| 37 | +#define CLOCK_REALTIME 1 | ||
| 38 | + | ||
| 39 | +int clock_gettime(int, struct timespec *tv); | ||
| 40 | +#endif | ||
| 41 | + | ||
| 29 | typedef enum { | 42 | typedef enum { |
| 30 | TR_TBASE_NAN = 0, | 43 | TR_TBASE_NAN = 0, |
| 31 | TR_TBASE_MIC, | 44 | TR_TBASE_MIC, |
| @@ -20,11 +20,22 @@ | @@ -20,11 +20,22 @@ | ||
| 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 21 | */ | 21 | */ |
| 22 | 22 | ||
| 23 | -#include <execinfo.h> | ||
| 24 | #include <stdio.h> | 23 | #include <stdio.h> |
| 25 | #include <stdlib.h> | 24 | #include <stdlib.h> |
| 26 | 25 | ||
| 27 | /* Obtain a backtrace and print it to stdout. */ | 26 | /* Obtain a backtrace and print it to stdout. */ |
| 27 | +#ifdef _WIN32 | ||
| 28 | + | ||
| 29 | +void | ||
| 30 | +print_trace (void) | ||
| 31 | +{ | ||
| 32 | + printf ("sorry, bo backtrace under Windows now!\n"); | ||
| 33 | +} | ||
| 34 | + | ||
| 35 | +#else | ||
| 36 | + | ||
| 37 | +#include <execinfo.h> | ||
| 38 | + | ||
| 28 | void | 39 | void |
| 29 | print_trace (void) | 40 | print_trace (void) |
| 30 | { | 41 | { |
| @@ -44,4 +55,6 @@ print_trace (void) | @@ -44,4 +55,6 @@ print_trace (void) | ||
| 44 | free (strings); | 55 | free (strings); |
| 45 | } | 56 | } |
| 46 | 57 | ||
| 58 | +#endif | ||
| 59 | + | ||
| 47 | // vim: set ts=4 sw=4: | 60 | // vim: set ts=4 sw=4: |
| @@ -20,12 +20,25 @@ | @@ -20,12 +20,25 @@ | ||
| 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 20 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 21 | */ | 21 | */ |
| 22 | 22 | ||
| 23 | -#include <syslog.h> | ||
| 24 | - | ||
| 25 | #include "trbase.h" | 23 | #include "trbase.h" |
| 26 | #include "tr/logger.h" | 24 | #include "tr/logger.h" |
| 27 | #include "tr/interface/logger.h" | 25 | #include "tr/interface/logger.h" |
| 28 | 26 | ||
| 27 | +#ifdef _WIN32 | ||
| 28 | + | ||
| 29 | +#include <stdio.h> | ||
| 30 | + | ||
| 31 | +static | ||
| 32 | +void | ||
| 33 | +logSyslog(void * this, TR_logger_level level, const char * const msg) | ||
| 34 | +{ | ||
| 35 | + printf("Sorry, no syslog under Windows!\n"); | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +#else | ||
| 39 | + | ||
| 40 | +#include <syslog.h> | ||
| 41 | + | ||
| 29 | static | 42 | static |
| 30 | const | 43 | const |
| 31 | int syslog_priority[] = { | 44 | int syslog_priority[] = { |
| @@ -46,6 +59,8 @@ logSyslog(void * this, TR_logger_level level, const char * const msg) | @@ -46,6 +59,8 @@ logSyslog(void * this, TR_logger_level level, const char * const msg) | ||
| 46 | syslog(syslog_priority[level], "[%s] %s", TR_logger_level_str[level], msg); | 59 | syslog(syslog_priority[level], "[%s] %s", TR_logger_level_str[level], msg); |
| 47 | } | 60 | } |
| 48 | 61 | ||
| 62 | +#endif | ||
| 63 | + | ||
| 49 | TR_INIT_IFACE(TR_Logger, logSyslog); | 64 | TR_INIT_IFACE(TR_Logger, logSyslog); |
| 50 | TR_CREATE_CLASS(TR_LoggerSyslog, TR_Logger, NULL, TR_IF(TR_Logger)); | 65 | TR_CREATE_CLASS(TR_LoggerSyslog, TR_Logger, NULL, TR_IF(TR_Logger)); |
| 51 | 66 |
| @@ -24,6 +24,71 @@ | @@ -24,6 +24,71 @@ | ||
| 24 | 24 | ||
| 25 | #include "trbase.h" | 25 | #include "trbase.h" |
| 26 | 26 | ||
| 27 | +#ifdef _WIN32 | ||
| 28 | +#include <Windows.h> | ||
| 29 | + | ||
| 30 | +static | ||
| 31 | +LARGE_INTEGER | ||
| 32 | +getFILETIMEoffset() | ||
| 33 | +{ | ||
| 34 | + SYSTEMTIME s; | ||
| 35 | + FILETIME f; | ||
| 36 | + LARGE_INTEGER t; | ||
| 37 | + | ||
| 38 | + s.wYear = 1970; | ||
| 39 | + s.wMonth = 1; | ||
| 40 | + s.wDay = 1; | ||
| 41 | + s.wHour = 0; | ||
| 42 | + s.wMinute = 0; | ||
| 43 | + s.wSecond = 0; | ||
| 44 | + s.wMilliseconds = 0; | ||
| 45 | + SystemTimeToFileTime(&s, &f); | ||
| 46 | + t.QuadPart = f.dwHighDateTime; | ||
| 47 | + t.QuadPart <<= 32; | ||
| 48 | + t.QuadPart |= f.dwLowDateTime; | ||
| 49 | + return (t); | ||
| 50 | +} | ||
| 51 | + | ||
| 52 | +int | ||
| 53 | +clock_gettime(int X, struct timespec *tv) | ||
| 54 | +{ | ||
| 55 | + LARGE_INTEGER t; | ||
| 56 | + FILETIME f; | ||
| 57 | + double microseconds; | ||
| 58 | + static LARGE_INTEGER offset; | ||
| 59 | + static double frequencyToMicroseconds; | ||
| 60 | + static int initialized = 0; | ||
| 61 | + static BOOL usePerformanceCounter = 0; | ||
| 62 | + | ||
| 63 | + if (!initialized) { | ||
| 64 | + LARGE_INTEGER performanceFrequency; | ||
| 65 | + initialized = 1; | ||
| 66 | + usePerformanceCounter = QueryPerformanceFrequency(&performanceFrequency); | ||
| 67 | + if (usePerformanceCounter) { | ||
| 68 | + QueryPerformanceCounter(&offset); | ||
| 69 | + frequencyToMicroseconds = (double)performanceFrequency.QuadPart / 1000000.; | ||
| 70 | + } else { | ||
| 71 | + offset = getFILETIMEoffset(); | ||
| 72 | + frequencyToMicroseconds = 10.; | ||
| 73 | + } | ||
| 74 | + } | ||
| 75 | + if (usePerformanceCounter) QueryPerformanceCounter(&t); | ||
| 76 | + else { | ||
| 77 | + GetSystemTimeAsFileTime(&f); | ||
| 78 | + t.QuadPart = f.dwHighDateTime; | ||
| 79 | + t.QuadPart <<= 32; | ||
| 80 | + t.QuadPart |= f.dwLowDateTime; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + t.QuadPart -= offset.QuadPart; | ||
| 84 | + microseconds = (double)t.QuadPart / frequencyToMicroseconds; | ||
| 85 | + t.QuadPart = microseconds; | ||
| 86 | + tv->tv_sec = t.QuadPart / 1000000; | ||
| 87 | + tv->tv_nsec = t.QuadPart % 1000000; | ||
| 88 | + return (0); | ||
| 89 | +} | ||
| 90 | +#endif | ||
| 91 | + | ||
| 27 | static | 92 | static |
| 28 | int | 93 | int |
| 29 | timerCtor(void * _this, va_list * params) | 94 | timerCtor(void * _this, va_list * params) |
Please
register
or
login
to post a comment