[mini] Add new JIT flag JIT_FLAG_DISCARD_RESULTS to reduce the noise when profiling...
[mono.git] / mono / io-layer / socket-wrappers.h
1 /*
2  * Special header file to be included only in selected C files.
3  * We need to use the _wapi_ equivalents of the socket API when
4  * working with io-layer handles. On windows we define the wrappers to use
5  * the normal win32 functions.
6  */
7
8 #include <config.h>
9 #ifdef HAVE_SYS_SELECT_H
10 #  include <sys/select.h>
11 #endif
12 #ifdef HAVE_SYS_TIME_H
13 #  include <sys/time.h>
14 #endif
15 #ifdef HAVE_SYS_SOCKET_H
16 #  include <sys/socket.h>
17 #endif
18
19 #ifndef HAVE_SOCKLEN_T
20 #define socklen_t int
21 #endif
22
23 #ifdef HOST_WIN32
24 #define _wapi_accept accept 
25 #define _wapi_bind bind 
26 #define _wapi_connect connect 
27 #define _wapi_getpeername getpeername 
28 #define _wapi_getsockname getsockname 
29 #define _wapi_getsockopt getsockopt 
30 #define _wapi_listen listen 
31 #define _wapi_recv recv 
32 #define _wapi_recvfrom recvfrom 
33 #define _wapi_send send 
34 #define _wapi_sendto sendto 
35 #define _wapi_setsockopt setsockopt 
36 #define _wapi_shutdown shutdown 
37 #define _wapi_socket WSASocket 
38 #define _wapi_select select 
39
40 /* No need to wrap FD_ZERO because it doesnt involve file
41  * descriptors
42 */
43 #define _wapi_FD_CLR FD_CLR
44 #define _wapi_FD_ISSET FD_ISSET
45 #define _wapi_FD_SET FD_SET
46
47 #define _wapi_cleanup_networking() ;
48 #else
49
50 #define WSA_FLAG_OVERLAPPED           0x01
51
52 extern guint32 _wapi_accept(guint32 handle, struct sockaddr *addr,
53                             socklen_t *addrlen);
54 extern int _wapi_bind(guint32 handle, struct sockaddr *my_addr,
55                       socklen_t addrlen);
56 extern int _wapi_connect(guint32 handle, const struct sockaddr *serv_addr,
57                          socklen_t addrlen);
58 extern int _wapi_getpeername(guint32 handle, struct sockaddr *name,
59                              socklen_t *namelen);
60 extern int _wapi_getsockname(guint32 handle, struct sockaddr *name,
61                              socklen_t *namelen);
62 extern int _wapi_getsockopt(guint32 handle, int level, int optname,
63                             void *optval, socklen_t *optlen);
64 extern int _wapi_listen(guint32 handle, int backlog);
65 extern int _wapi_recv(guint32 handle, void *buf, size_t len, int recv_flags);
66 extern int _wapi_recvfrom(guint32 handle, void *buf, size_t len,
67                           int recv_flags, struct sockaddr *from,
68                           socklen_t *fromlen);
69 extern int _wapi_send(guint32 handle, const void *msg, size_t len,
70                       int send_flags);
71 extern int _wapi_sendto(guint32 handle, const void *msg, size_t len,
72                         int send_flags, const struct sockaddr *to,
73                         socklen_t tolen);
74 extern int _wapi_setsockopt(guint32 handle, int level, int optname,
75                             const void *optval, socklen_t optlen);
76 extern int _wapi_shutdown(guint32 handle, int how);
77 extern guint32 _wapi_socket(int domain, int type, int protocol, void *unused,
78                             guint32 unused2, guint32 flags);
79
80 #ifdef HAVE_SYS_SELECT_H
81 extern int _wapi_select(int nfds, fd_set *readfds, fd_set *writefds,
82                         fd_set *exceptfds, struct timeval *timeout);
83
84 extern void _wapi_FD_CLR(guint32 handle, fd_set *set);
85 extern int _wapi_FD_ISSET(guint32 handle, fd_set *set);
86 extern void _wapi_FD_SET(guint32 handle, fd_set *set);
87 #endif
88
89 extern void _wapi_cleanup_networking (void);
90 #endif /* HOST_WIN32 */
91