Go to the documentation of this file.
21 #ifndef GRPC_CORE_LIB_IOMGR_PORT_H
22 #define GRPC_CORE_LIB_IOMGR_PORT_H
25 #ifndef GRPC_CUSTOM_SOCKET
26 #define GRPC_CUSTOM_SOCKET
32 #define GRPC_ARES_RESOLVE_LOCALHOST_MANUALLY 1
34 #if defined(GRPC_CUSTOM_SOCKET)
36 #elif defined(GPR_MANYLINUX1)
37 #define GRPC_HAVE_ARPA_NAMESER 1
38 #define GRPC_HAVE_IFADDRS 1
39 #define GRPC_HAVE_IPV6_RECVPKTINFO 1
40 #define GRPC_HAVE_IP_PKTINFO 1
41 #define GRPC_HAVE_MSG_NOSIGNAL 1
42 #define GRPC_HAVE_UNIX_SOCKET 1
43 #define GRPC_POSIX_FORK 1
44 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
45 #define GRPC_POSIX_SOCKET 1
46 #define GRPC_POSIX_SOCKETUTILS 1
47 #define GRPC_POSIX_WAKEUP_FD 1
48 #define GRPC_LINUX_EPOLL 1
49 #elif defined(GPR_WINDOWS)
50 #define GRPC_WINSOCK_SOCKET 1
51 #define GRPC_WINDOWS_SOCKETUTILS 1
52 #define GRPC_WINDOWS_SOCKET_ARES_EV_DRIVER 1
53 #elif defined(GPR_ANDROID)
54 #define GRPC_HAVE_IPV6_RECVPKTINFO 1
55 #define GRPC_HAVE_IP_PKTINFO 1
56 #define GRPC_HAVE_MSG_NOSIGNAL 1
57 #define GRPC_HAVE_UNIX_SOCKET 1
58 #define GRPC_LINUX_EVENTFD 1
59 #define GRPC_POSIX_SOCKET 1
60 #define GRPC_POSIX_SOCKETUTILS 1
61 #define GRPC_POSIX_WAKEUP_FD 1
62 #elif defined(GPR_LINUX)
63 #define GRPC_HAVE_ARPA_NAMESER 1
64 #define GRPC_HAVE_IFADDRS 1
65 #define GRPC_HAVE_IPV6_RECVPKTINFO 1
66 #define GRPC_HAVE_IP_PKTINFO 1
67 #define GRPC_HAVE_MSG_NOSIGNAL 1
68 #define GRPC_HAVE_UNIX_SOCKET 1
71 #define GRPC_HAVE_TCP_INQ 1
72 #ifdef LINUX_VERSION_CODE
73 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)
74 #define GRPC_LINUX_ERRQUEUE 1
77 #define GRPC_LINUX_MULTIPOLL_WITH_EPOLL 1
78 #define GRPC_POSIX_FORK 1
79 #define GRPC_POSIX_HOST_NAME_MAX 1
80 #define GRPC_POSIX_SOCKET 1
81 #define GRPC_POSIX_WAKEUP_FD 1
83 #if __GLIBC_PREREQ(2, 4)
84 #define GRPC_LINUX_EPOLL 1
86 #if __GLIBC_PREREQ(2, 9)
87 #define GRPC_LINUX_EPOLL_CREATE1 1
88 #define GRPC_LINUX_EVENTFD 1
90 #if __GLIBC_PREREQ(2, 10)
91 #define GRPC_LINUX_SOCKETUTILS 1
94 #ifdef LINUX_VERSION_CODE
95 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
96 #define GRPC_HAVE_TCP_USER_TIMEOUT
98 #if !(__GLIBC_PREREQ(2, 17))
103 #define GRPC_LINUX_TCP_H 1
109 #define GRPC_LINUX_EPOLL 1
110 #define GRPC_LINUX_EPOLL_CREATE1 1
111 #define GRPC_LINUX_EVENTFD 1
112 #define GRPC_MSG_IOVLEN_TYPE int
114 #ifndef GRPC_LINUX_EVENTFD
115 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
117 #ifndef GRPC_LINUX_SOCKETUTILS
118 #define GRPC_POSIX_SOCKETUTILS
120 #elif defined(GPR_APPLE)
121 #define GRPC_HAVE_ARPA_NAMESER 1
122 #define GRPC_HAVE_IFADDRS 1
123 #define GRPC_HAVE_SO_NOSIGPIPE 1
124 #define GRPC_HAVE_UNIX_SOCKET 1
125 #define GRPC_MSG_IOVLEN_TYPE int
126 #define GRPC_POSIX_FORK 1
127 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
129 #define GRPC_CFSTREAM_IOMGR 1
130 #define GRPC_CFSTREAM_CLIENT 1
131 #define GRPC_CFSTREAM_ENDPOINT 1
132 #define GRPC_POSIX_SOCKET_ARES_EV_DRIVER 1
133 #define GRPC_POSIX_SOCKET_EV 1
134 #define GRPC_POSIX_SOCKET_EV_EPOLL1 1
135 #define GRPC_POSIX_SOCKET_EV_EPOLLEX 1
136 #define GRPC_POSIX_SOCKET_EV_POLL 1
137 #define GRPC_POSIX_SOCKET_IF_NAMETOINDEX 1
138 #define GRPC_POSIX_SOCKET_RESOLVE_ADDRESS 1
139 #define GRPC_POSIX_SOCKET_SOCKADDR 1
140 #define GRPC_POSIX_SOCKET_SOCKET_FACTORY 1
141 #define GRPC_POSIX_SOCKET_TCP 1
142 #define GRPC_POSIX_SOCKET_TCP_CLIENT 1
143 #define GRPC_POSIX_SOCKET_TCP_SERVER 1
144 #define GRPC_POSIX_SOCKET_TCP_SERVER_UTILS_COMMON 1
145 #define GRPC_POSIX_SOCKET_UDP_SERVER 1
146 #define GRPC_POSIX_SOCKET_UTILS_COMMON 1
148 #define GRPC_POSIX_SOCKET 1
150 #define GRPC_POSIX_SOCKETUTILS 1
151 #define GRPC_POSIX_SYSCONF 1
152 #define GRPC_POSIX_WAKEUP_FD 1
153 #elif defined(GPR_FREEBSD)
154 #define GRPC_HAVE_ARPA_NAMESER 1
155 #define GRPC_HAVE_IFADDRS 1
156 #define GRPC_HAVE_IPV6_RECVPKTINFO 1
157 #define GRPC_HAVE_SO_NOSIGPIPE 1
158 #define GRPC_HAVE_UNIX_SOCKET 1
159 #define GRPC_POSIX_FORK 1
160 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
161 #define GRPC_POSIX_SOCKET 1
162 #define GRPC_POSIX_SOCKETUTILS 1
163 #define GRPC_POSIX_WAKEUP_FD 1
164 #elif defined(GPR_OPENBSD)
165 #define GRPC_HAVE_IFADDRS 1
166 #define GRPC_HAVE_IPV6_RECVPKTINFO 1
167 #define GRPC_HAVE_UNIX_SOCKET 1
168 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
169 #define GRPC_POSIX_SOCKET 1
170 #define GRPC_POSIX_SOCKETUTILS 1
171 #define GRPC_POSIX_WAKEUP_FD 1
172 #elif defined(GPR_SOLARIS)
173 #define GRPC_HAVE_UNIX_SOCKET 1
174 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
175 #define GRPC_POSIX_SOCKET 1
176 #define GRPC_POSIX_SOCKETUTILS 1
177 #define GRPC_POSIX_WAKEUP_FD 1
178 #elif defined(GPR_AIX)
179 #define GRPC_HAVE_UNIX_SOCKET 1
180 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
181 #define GRPC_POSIX_SOCKET 1
182 #define GRPC_POSIX_SOCKETUTILS 1
183 #define GRPC_POSIX_WAKEUP_FD 1
184 #elif defined(GPR_NACL)
185 #define GRPC_HAVE_ARPA_NAMESER 1
186 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
187 #define GRPC_POSIX_SOCKET 1
188 #define GRPC_POSIX_SOCKETUTILS 1
189 #define GRPC_POSIX_WAKEUP_FD 1
190 #elif defined(GPR_FUCHSIA)
191 #define GRPC_HAVE_IFADDRS 1
192 #define GRPC_HAVE_IPV6_RECVPKTINFO 1
193 #define GRPC_HAVE_IP_PKTINFO 1
196 #undef GRPC_HAVE_MSG_NOSIGNAL
197 #define GRPC_HAVE_UNIX_SOCKET 1
198 #define GRPC_POSIX_WAKEUP_FD 1
200 #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
201 #define GRPC_POSIX_SOCKET 1
202 #define GRPC_POSIX_SOCKETADDR 1
204 #define GRPC_POSIX_SOCKETUTILS 1
205 #define GRPC_TIMER_USE_GENERIC 1
206 #elif !defined(GPR_NO_AUTODETECT_PLATFORM)
207 #error "Platform not recognized"
210 #if defined(GRPC_POSIX_SOCKET) + defined(GRPC_WINSOCK_SOCKET) + \
211 defined(GRPC_CUSTOM_SOCKET) + defined(GRPC_CFSTREAM) != \
214 "Must define exactly one of GRPC_POSIX_SOCKET, GRPC_WINSOCK_SOCKET, GRPC_CUSTOM_SOCKET"
217 #ifdef GRPC_POSIX_SOCKET
218 #define GRPC_POSIX_SOCKET_ARES_EV_DRIVER 1
219 #define GRPC_POSIX_SOCKET_EV 1
220 #define GRPC_POSIX_SOCKET_EV_EPOLLEX 1
221 #define GRPC_POSIX_SOCKET_EV_POLL 1
222 #define GRPC_POSIX_SOCKET_EV_EPOLL1 1
223 #define GRPC_POSIX_SOCKET_IF_NAMETOINDEX 1
224 #define GRPC_POSIX_SOCKET_IOMGR 1
225 #define GRPC_POSIX_SOCKET_RESOLVE_ADDRESS 1
226 #define GRPC_POSIX_SOCKET_SOCKADDR 1
227 #define GRPC_POSIX_SOCKET_SOCKET_FACTORY 1
228 #define GRPC_POSIX_SOCKET_TCP 1
229 #define GRPC_POSIX_SOCKET_TCP_CLIENT 1
230 #define GRPC_POSIX_SOCKET_TCP_SERVER 1
231 #define GRPC_POSIX_SOCKET_TCP_SERVER_UTILS_COMMON 1
232 #define GRPC_POSIX_SOCKET_UDP_SERVER 1
233 #define GRPC_POSIX_SOCKET_UTILS_COMMON 1
236 #if defined(GRPC_POSIX_HOST_NAME_MAX) && defined(GRPC_POSIX_SYSCONF)
237 #error "Cannot define both GRPC_POSIX_HOST_NAME_MAX and GRPC_POSIX_SYSCONF"
239 #if !defined(GRPC_POSIX_HOST_NAME_MAX) && !defined(GRPC_POSIX_SYSCONF)
240 #define GRPC_GETHOSTNAME_FALLBACK 1