1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#ifndef QEMU_OS_WIN32_H
27#define QEMU_OS_WIN32_H
28
29#include <winsock2.h>
30#include <windows.h>
31#include <ws2tcpip.h>
32
33#if defined(_WIN64)
34
35
36
37
38# undef setjmp
39# define setjmp(env) _setjmp(env, NULL)
40#endif
41
42
43
44
45
46#define sigjmp_buf jmp_buf
47#define sigsetjmp(env, savemask) setjmp(env)
48#define siglongjmp(env, val) longjmp(env, val)
49
50
51#ifndef CONFIG_LOCALTIME_R
52#undef gmtime_r
53struct tm *gmtime_r(const time_t *timep, struct tm *result);
54#undef localtime_r
55struct tm *localtime_r(const time_t *timep, struct tm *result);
56#endif
57
58static inline void os_setup_signal_handling(void) {}
59static inline void os_daemonize(void) {}
60static inline void os_setup_post(void) {}
61void os_set_line_buffering(void);
62static inline void os_set_proc_name(const char *dummy) {}
63
64int getpagesize(void);
65
66#if !defined(EPROTONOSUPPORT)
67# define EPROTONOSUPPORT EINVAL
68#endif
69
70int setenv(const char *name, const char *value, int overwrite);
71
72typedef struct {
73 long tv_sec;
74 long tv_usec;
75} qemu_timeval;
76int qemu_gettimeofday(qemu_timeval *tp);
77
78static inline bool is_daemonized(void)
79{
80 return false;
81}
82
83static inline int os_mlock(void)
84{
85 return -ENOSYS;
86}
87
88#define fsync _commit
89
90#if !defined(lseek)
91# define lseek _lseeki64
92#endif
93
94int qemu_ftruncate64(int, int64_t);
95
96#if !defined(ftruncate)
97# define ftruncate qemu_ftruncate64
98#endif
99
100static inline char *realpath(const char *path, char *resolved_path)
101{
102 _fullpath(resolved_path, path, _MAX_PATH);
103 return resolved_path;
104}
105
106
107
108
109
110
111#undef connect
112#define connect qemu_connect_wrap
113int qemu_connect_wrap(int sockfd, const struct sockaddr *addr,
114 socklen_t addrlen);
115
116#undef listen
117#define listen qemu_listen_wrap
118int qemu_listen_wrap(int sockfd, int backlog);
119
120#undef bind
121#define bind qemu_bind_wrap
122int qemu_bind_wrap(int sockfd, const struct sockaddr *addr,
123 socklen_t addrlen);
124
125#undef socket
126#define socket qemu_socket_wrap
127int qemu_socket_wrap(int domain, int type, int protocol);
128
129#undef accept
130#define accept qemu_accept_wrap
131int qemu_accept_wrap(int sockfd, struct sockaddr *addr,
132 socklen_t *addrlen);
133
134#undef shutdown
135#define shutdown qemu_shutdown_wrap
136int qemu_shutdown_wrap(int sockfd, int how);
137
138#undef ioctlsocket
139#define ioctlsocket qemu_ioctlsocket_wrap
140int qemu_ioctlsocket_wrap(int fd, int req, void *val);
141
142#undef closesocket
143#define closesocket qemu_closesocket_wrap
144int qemu_closesocket_wrap(int fd);
145
146#undef getsockopt
147#define getsockopt qemu_getsockopt_wrap
148int qemu_getsockopt_wrap(int sockfd, int level, int optname,
149 void *optval, socklen_t *optlen);
150
151#undef setsockopt
152#define setsockopt qemu_setsockopt_wrap
153int qemu_setsockopt_wrap(int sockfd, int level, int optname,
154 const void *optval, socklen_t optlen);
155
156#undef getpeername
157#define getpeername qemu_getpeername_wrap
158int qemu_getpeername_wrap(int sockfd, struct sockaddr *addr,
159 socklen_t *addrlen);
160
161#undef getsockname
162#define getsockname qemu_getsockname_wrap
163int qemu_getsockname_wrap(int sockfd, struct sockaddr *addr,
164 socklen_t *addrlen);
165
166#undef send
167#define send qemu_send_wrap
168ssize_t qemu_send_wrap(int sockfd, const void *buf, size_t len, int flags);
169
170#undef sendto
171#define sendto qemu_sendto_wrap
172ssize_t qemu_sendto_wrap(int sockfd, const void *buf, size_t len, int flags,
173 const struct sockaddr *addr, socklen_t addrlen);
174
175#undef recv
176#define recv qemu_recv_wrap
177ssize_t qemu_recv_wrap(int sockfd, void *buf, size_t len, int flags);
178
179#undef recvfrom
180#define recvfrom qemu_recvfrom_wrap
181ssize_t qemu_recvfrom_wrap(int sockfd, void *buf, size_t len, int flags,
182 struct sockaddr *addr, socklen_t *addrlen);
183
184#endif
185