Jes Sorensen | 39626c0 | 2010-06-10 11:42:16 +0200 | [diff] [blame] | 1 | /* |
| 2 | * win32 specific declarations |
| 3 | * |
| 4 | * Copyright (c) 2003-2008 Fabrice Bellard |
| 5 | * Copyright (c) 2010 Jes Sorensen <Jes.Sorensen@redhat.com> |
| 6 | * |
| 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
| 8 | * of this software and associated documentation files (the "Software"), to deal |
| 9 | * in the Software without restriction, including without limitation the rights |
| 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| 11 | * copies of the Software, and to permit persons to whom the Software is |
| 12 | * furnished to do so, subject to the following conditions: |
| 13 | * |
| 14 | * The above copyright notice and this permission notice shall be included in |
| 15 | * all copies or substantial portions of the Software. |
| 16 | * |
| 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| 20 | * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 23 | * THE SOFTWARE. |
| 24 | */ |
| 25 | |
| 26 | #ifndef QEMU_OS_WIN32_H |
| 27 | #define QEMU_OS_WIN32_H |
| 28 | |
Blue Swirl | 082b555 | 2011-03-27 09:04:57 +0000 | [diff] [blame] | 29 | #include <windows.h> |
| 30 | #include <winsock2.h> |
Paolo Bonzini | 44a9b35 | 2011-09-12 16:44:30 +0200 | [diff] [blame] | 31 | #include "main-loop.h" |
Blue Swirl | 082b555 | 2011-03-27 09:04:57 +0000 | [diff] [blame] | 32 | |
Stefan Weil | acf126b | 2012-04-12 21:13:15 +0200 | [diff] [blame] | 33 | /* Workaround for older versions of MinGW. */ |
| 34 | #ifndef ECONNREFUSED |
| 35 | # define ECONNREFUSED WSAECONNREFUSED |
| 36 | #endif |
| 37 | #ifndef EINPROGRESS |
| 38 | # define EINPROGRESS WSAEINPROGRESS |
| 39 | #endif |
| 40 | #ifndef EHOSTUNREACH |
| 41 | # define EHOSTUNREACH WSAEHOSTUNREACH |
| 42 | #endif |
| 43 | #ifndef EINTR |
| 44 | # define EINTR WSAEINTR |
| 45 | #endif |
| 46 | #ifndef EINPROGRESS |
| 47 | # define EINPROGRESS WSAEINPROGRESS |
| 48 | #endif |
| 49 | #ifndef ENETUNREACH |
| 50 | # define ENETUNREACH WSAENETUNREACH |
| 51 | #endif |
| 52 | #ifndef ENOTCONN |
| 53 | # define ENOTCONN WSAENOTCONN |
| 54 | #endif |
| 55 | #ifndef EWOULDBLOCK |
| 56 | # define EWOULDBLOCK WSAEWOULDBLOCK |
| 57 | #endif |
| 58 | |
Stefan Weil | 5cf6dd5 | 2012-04-12 21:13:28 +0200 | [diff] [blame] | 59 | #if defined(_WIN64) |
| 60 | /* On w64, setjmp is implemented by _setjmp which needs a second parameter. |
| 61 | * If this parameter is NULL, longjump does no stack unwinding. |
| 62 | * That is what we need for QEMU. Passing the value of register rsp (default) |
| 63 | * lets longjmp try a stack unwinding which will crash with generated code. */ |
| 64 | # undef setjmp |
| 65 | # define setjmp(env) _setjmp(env, NULL) |
| 66 | #endif |
| 67 | |
Stefan Weil | 077030d | 2011-05-15 09:51:59 +0200 | [diff] [blame] | 68 | /* Declaration of ffs() is missing in MinGW's strings.h. */ |
| 69 | int ffs(int i); |
| 70 | |
Jes Sorensen | 8d963e6 | 2010-06-10 11:42:22 +0200 | [diff] [blame] | 71 | static inline void os_setup_signal_handling(void) {} |
Jes Sorensen | eb505be | 2010-06-10 11:42:28 +0200 | [diff] [blame] | 72 | static inline void os_daemonize(void) {} |
| 73 | static inline void os_setup_post(void) {} |
Stefan Weil | 6650b71 | 2010-10-07 18:55:48 +0200 | [diff] [blame] | 74 | void os_set_line_buffering(void); |
Jes Sorensen | ce798cf | 2010-06-10 11:42:31 +0200 | [diff] [blame] | 75 | static inline void os_set_proc_name(const char *dummy) {} |
Jes Sorensen | 8d963e6 | 2010-06-10 11:42:22 +0200 | [diff] [blame] | 76 | |
Stefan Weil | 5635efc | 2010-06-24 22:41:33 +0200 | [diff] [blame] | 77 | #if !defined(EPROTONOSUPPORT) |
| 78 | # define EPROTONOSUPPORT EINVAL |
| 79 | #endif |
| 80 | |
Jes Sorensen | dc786bc | 2010-10-26 10:39:23 +0200 | [diff] [blame] | 81 | int setenv(const char *name, const char *value, int overwrite); |
| 82 | |
| 83 | typedef struct { |
| 84 | long tv_sec; |
| 85 | long tv_usec; |
| 86 | } qemu_timeval; |
| 87 | int qemu_gettimeofday(qemu_timeval *tp); |
| 88 | |
Jes Sorensen | 39626c0 | 2010-06-10 11:42:16 +0200 | [diff] [blame] | 89 | #endif |