|
|
1.1 ! root 1: /* ! 2: * QEMU System Emulator ! 3: * ! 4: * Copyright (c) 2003-2008 Fabrice Bellard ! 5: * ! 6: * Permission is hereby granted, free of charge, to any person obtaining a copy ! 7: * of this software and associated documentation files (the "Software"), to deal ! 8: * in the Software without restriction, including without limitation the rights ! 9: * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ! 10: * copies of the Software, and to permit persons to whom the Software is ! 11: * furnished to do so, subject to the following conditions: ! 12: * ! 13: * The above copyright notice and this permission notice shall be included in ! 14: * all copies or substantial portions of the Software. ! 15: * ! 16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ! 17: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ! 19: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ! 20: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ! 21: * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ! 22: * THE SOFTWARE. ! 23: */ ! 24: #include "qemu-timer.h" ! 25: ! 26: /***********************************************************/ ! 27: /* real time host monotonic timer */ ! 28: ! 29: #ifdef _WIN32 ! 30: ! 31: int64_t clock_freq; ! 32: ! 33: static void __attribute__((constructor)) init_get_clock(void) ! 34: { ! 35: LARGE_INTEGER freq; ! 36: int ret; ! 37: ret = QueryPerformanceFrequency(&freq); ! 38: if (ret == 0) { ! 39: fprintf(stderr, "Could not calibrate ticks\n"); ! 40: exit(1); ! 41: } ! 42: clock_freq = freq.QuadPart; ! 43: } ! 44: ! 45: #else ! 46: ! 47: int use_rt_clock; ! 48: ! 49: static void __attribute__((constructor)) init_get_clock(void) ! 50: { ! 51: use_rt_clock = 0; ! 52: #if defined(__linux__) || (defined(__FreeBSD__) && __FreeBSD_version >= 500000) \ ! 53: || defined(__DragonFly__) || defined(__FreeBSD_kernel__) \ ! 54: || defined(__OpenBSD__) ! 55: { ! 56: struct timespec ts; ! 57: if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0) { ! 58: use_rt_clock = 1; ! 59: } ! 60: } ! 61: #endif ! 62: } ! 63: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.