annotate gcc/ada/gsocket.h @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /****************************************************************************
kono
parents:
diff changeset
2 * *
kono
parents:
diff changeset
3 * GNAT COMPILER COMPONENTS *
kono
parents:
diff changeset
4 * *
kono
parents:
diff changeset
5 * G S O C K E T *
kono
parents:
diff changeset
6 * *
kono
parents:
diff changeset
7 * C Header File *
kono
parents:
diff changeset
8 * *
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
9 * Copyright (C) 2004-2018, Free Software Foundation, Inc. *
111
kono
parents:
diff changeset
10 * *
kono
parents:
diff changeset
11 * GNAT is free software; you can redistribute it and/or modify it under *
kono
parents:
diff changeset
12 * terms of the GNU General Public License as published by the Free Soft- *
kono
parents:
diff changeset
13 * ware Foundation; either version 3, or (at your option) any later ver- *
kono
parents:
diff changeset
14 * sion. GNAT is distributed in the hope that it will be useful, but WITH- *
kono
parents:
diff changeset
15 * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
kono
parents:
diff changeset
16 * or FITNESS FOR A PARTICULAR PURPOSE. *
kono
parents:
diff changeset
17 * *
kono
parents:
diff changeset
18 * As a special exception under Section 7 of GPL version 3, you are granted *
kono
parents:
diff changeset
19 * additional permissions described in the GCC Runtime Library Exception, *
kono
parents:
diff changeset
20 * version 3.1, as published by the Free Software Foundation. *
kono
parents:
diff changeset
21 * *
kono
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License and *
kono
parents:
diff changeset
23 * a copy of the GCC Runtime Library Exception along with this program; *
kono
parents:
diff changeset
24 * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see *
kono
parents:
diff changeset
25 * <http://www.gnu.org/licenses/>. *
kono
parents:
diff changeset
26 * *
kono
parents:
diff changeset
27 * GNAT was originally developed by the GNAT team at New York University. *
kono
parents:
diff changeset
28 * Extensive contributions were provided by Ada Core Technologies Inc. *
kono
parents:
diff changeset
29 * *
kono
parents:
diff changeset
30 ****************************************************************************/
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 #if defined(VTHREADS) || defined(__PikeOS__) || defined(__DJGPP__)
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 /* Sockets not supported on these platforms. */
kono
parents:
diff changeset
35 #undef HAVE_SOCKETS
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 #else
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 #define HAVE_SOCKETS
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 #ifndef _XOPEN_SOURCE_EXTENDED
kono
parents:
diff changeset
42 #define _XOPEN_SOURCE_EXTENDED 1
kono
parents:
diff changeset
43 /* For HP-UX */
kono
parents:
diff changeset
44 #endif
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 #ifndef BSD_COMP
kono
parents:
diff changeset
47 #define BSD_COMP 1
kono
parents:
diff changeset
48 /* For Solaris */
kono
parents:
diff changeset
49 #endif
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 #ifndef _ALL_SOURCE
kono
parents:
diff changeset
52 #define _ALL_SOURCE 1
kono
parents:
diff changeset
53 /* For AIX */
kono
parents:
diff changeset
54 #endif
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 /** No system header may be included prior to this point since on some targets
kono
parents:
diff changeset
57 ** we need to redefine FD_SETSIZE.
kono
parents:
diff changeset
58 **/
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 /* Target-specific includes and definitions */
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 #if defined(__vxworks)
kono
parents:
diff changeset
63 #include <vxWorks.h>
kono
parents:
diff changeset
64 #include <ioLib.h>
kono
parents:
diff changeset
65 #include <hostLib.h>
kono
parents:
diff changeset
66 #define SHUT_RD 0
kono
parents:
diff changeset
67 #define SHUT_WR 1
kono
parents:
diff changeset
68 #define SHUT_RDWR 2
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 #elif defined (WINNT)
kono
parents:
diff changeset
71 #define FD_SETSIZE 1024
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 #ifdef __MINGW32__
kono
parents:
diff changeset
74 #include <winsock2.h>
kono
parents:
diff changeset
75 #include <ws2tcpip.h>
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 #undef EACCES
kono
parents:
diff changeset
78 #define EACCES WSAEACCES
kono
parents:
diff changeset
79 #undef EADDRINUSE
kono
parents:
diff changeset
80 #define EADDRINUSE WSAEADDRINUSE
kono
parents:
diff changeset
81 #undef EADDRNOTAVAIL
kono
parents:
diff changeset
82 #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
kono
parents:
diff changeset
83 #undef EAFNOSUPPORT
kono
parents:
diff changeset
84 #define EAFNOSUPPORT WSAEAFNOSUPPORT
kono
parents:
diff changeset
85 #undef EALREADY
kono
parents:
diff changeset
86 #define EALREADY WSAEALREADY
kono
parents:
diff changeset
87 #undef EBADF
kono
parents:
diff changeset
88 #define EBADF WSAEBADF
kono
parents:
diff changeset
89 #undef ECONNABORTED
kono
parents:
diff changeset
90 #define ECONNABORTED WSAECONNABORTED
kono
parents:
diff changeset
91 #undef ECONNREFUSED
kono
parents:
diff changeset
92 #define ECONNREFUSED WSAECONNREFUSED
kono
parents:
diff changeset
93 #undef ECONNRESET
kono
parents:
diff changeset
94 #define ECONNRESET WSAECONNRESET
kono
parents:
diff changeset
95 #undef EDESTADDRREQ
kono
parents:
diff changeset
96 #define EDESTADDRREQ WSAEDESTADDRREQ
kono
parents:
diff changeset
97 #undef EFAULT
kono
parents:
diff changeset
98 #define EFAULT WSAEFAULT
kono
parents:
diff changeset
99 #undef EHOSTDOWN
kono
parents:
diff changeset
100 #define EHOSTDOWN WSAEHOSTDOWN
kono
parents:
diff changeset
101 #undef EHOSTUNREACH
kono
parents:
diff changeset
102 #define EHOSTUNREACH WSAEHOSTUNREACH
kono
parents:
diff changeset
103 #undef EINPROGRESS
kono
parents:
diff changeset
104 #define EINPROGRESS WSAEINPROGRESS
kono
parents:
diff changeset
105 #undef EINTR
kono
parents:
diff changeset
106 #define EINTR WSAEINTR
kono
parents:
diff changeset
107 #undef EINVAL
kono
parents:
diff changeset
108 #define EINVAL WSAEINVAL
kono
parents:
diff changeset
109 #undef EIO
kono
parents:
diff changeset
110 #define EIO WSAEDISCON
kono
parents:
diff changeset
111 #undef EISCONN
kono
parents:
diff changeset
112 #define EISCONN WSAEISCONN
kono
parents:
diff changeset
113 #undef ELOOP
kono
parents:
diff changeset
114 #define ELOOP WSAELOOP
kono
parents:
diff changeset
115 #undef EMFILE
kono
parents:
diff changeset
116 #define EMFILE WSAEMFILE
kono
parents:
diff changeset
117 #undef EMSGSIZE
kono
parents:
diff changeset
118 #define EMSGSIZE WSAEMSGSIZE
kono
parents:
diff changeset
119 #undef ENAMETOOLONG
kono
parents:
diff changeset
120 #define ENAMETOOLONG WSAENAMETOOLONG
kono
parents:
diff changeset
121 #undef ENETDOWN
kono
parents:
diff changeset
122 #define ENETDOWN WSAENETDOWN
kono
parents:
diff changeset
123 #undef ENETRESET
kono
parents:
diff changeset
124 #define ENETRESET WSAENETRESET
kono
parents:
diff changeset
125 #undef ENETUNREACH
kono
parents:
diff changeset
126 #define ENETUNREACH WSAENETUNREACH
kono
parents:
diff changeset
127 #undef ENOBUFS
kono
parents:
diff changeset
128 #define ENOBUFS WSAENOBUFS
kono
parents:
diff changeset
129 #undef ENOPROTOOPT
kono
parents:
diff changeset
130 #define ENOPROTOOPT WSAENOPROTOOPT
kono
parents:
diff changeset
131 #undef ENOTCONN
kono
parents:
diff changeset
132 #define ENOTCONN WSAENOTCONN
kono
parents:
diff changeset
133 #undef ENOTSOCK
kono
parents:
diff changeset
134 #define ENOTSOCK WSAENOTSOCK
kono
parents:
diff changeset
135 #undef EOPNOTSUPP
kono
parents:
diff changeset
136 #define EOPNOTSUPP WSAEOPNOTSUPP
kono
parents:
diff changeset
137 #undef EPFNOSUPPORT
kono
parents:
diff changeset
138 #define EPFNOSUPPORT WSAEPFNOSUPPORT
kono
parents:
diff changeset
139 #undef EPROTONOSUPPORT
kono
parents:
diff changeset
140 #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
kono
parents:
diff changeset
141 #undef EPROTOTYPE
kono
parents:
diff changeset
142 #define EPROTOTYPE WSAEPROTOTYPE
kono
parents:
diff changeset
143 #undef ESHUTDOWN
kono
parents:
diff changeset
144 #define ESHUTDOWN WSAESHUTDOWN
kono
parents:
diff changeset
145 #undef ESOCKTNOSUPPORT
kono
parents:
diff changeset
146 #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
kono
parents:
diff changeset
147 #undef ETIMEDOUT
kono
parents:
diff changeset
148 #define ETIMEDOUT WSAETIMEDOUT
kono
parents:
diff changeset
149 #undef ETOOMANYREFS
kono
parents:
diff changeset
150 #define ETOOMANYREFS WSAETOOMANYREFS
kono
parents:
diff changeset
151 #undef EWOULDBLOCK
kono
parents:
diff changeset
152 #define EWOULDBLOCK WSAEWOULDBLOCK
kono
parents:
diff changeset
153
kono
parents:
diff changeset
154 #define SHUT_RD SD_RECEIVE
kono
parents:
diff changeset
155 #define SHUT_WR SD_SEND
kono
parents:
diff changeset
156 #define SHUT_RDWR SD_BOTH
kono
parents:
diff changeset
157
kono
parents:
diff changeset
158 #endif
kono
parents:
diff changeset
159
kono
parents:
diff changeset
160 #include <windows.h>
kono
parents:
diff changeset
161
kono
parents:
diff changeset
162 #elif defined(VMS)
kono
parents:
diff changeset
163 /* Allow a large number of fds for select. */
kono
parents:
diff changeset
164 #define FD_SETSIZE 4096
kono
parents:
diff changeset
165 #ifndef IN_RTS
kono
parents:
diff changeset
166 /* These DEC C headers are not available when building with GCC. Order is
kono
parents:
diff changeset
167 important. */
kono
parents:
diff changeset
168 #include <time.h>
kono
parents:
diff changeset
169 #include <tcp.h>
kono
parents:
diff changeset
170 #include <in.h>
kono
parents:
diff changeset
171 #include <ioctl.h>
kono
parents:
diff changeset
172 #include <netdb.h>
kono
parents:
diff changeset
173 #endif
kono
parents:
diff changeset
174
kono
parents:
diff changeset
175 #endif
kono
parents:
diff changeset
176
kono
parents:
diff changeset
177 #include <limits.h>
kono
parents:
diff changeset
178 #include <errno.h>
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 #if defined (__vxworks) && ! defined (__RTP__)
kono
parents:
diff changeset
181 #include <sys/times.h>
kono
parents:
diff changeset
182 #else
kono
parents:
diff changeset
183 #include <sys/time.h>
kono
parents:
diff changeset
184 #endif
kono
parents:
diff changeset
185
kono
parents:
diff changeset
186 #if defined(__rtems__)
kono
parents:
diff changeset
187 #include <unistd.h>
kono
parents:
diff changeset
188 /* Required, for read(), write(), and close() */
kono
parents:
diff changeset
189 #endif
kono
parents:
diff changeset
190
kono
parents:
diff changeset
191 /*
kono
parents:
diff changeset
192 * RTEMS has these .h files but not until you have built and installed RTEMS.
kono
parents:
diff changeset
193 * When building a C/C++ toolset, you also build the newlib C library, so the
kono
parents:
diff changeset
194 * build procedure for an RTEMS GNAT toolset requires that you build a C/C++
kono
parents:
diff changeset
195 * toolset, then build and install RTEMS with --enable-multilib, and finally
kono
parents:
diff changeset
196 * build the Ada part of the toolset.
kono
parents:
diff changeset
197 */
kono
parents:
diff changeset
198 #if !(defined (VMS) || defined (__MINGW32__))
kono
parents:
diff changeset
199 #include <sys/socket.h>
kono
parents:
diff changeset
200 #include <netinet/in.h>
kono
parents:
diff changeset
201 #include <netinet/tcp.h>
kono
parents:
diff changeset
202 #include <sys/ioctl.h>
kono
parents:
diff changeset
203 #include <netdb.h>
kono
parents:
diff changeset
204 #include <unistd.h>
kono
parents:
diff changeset
205 #endif
kono
parents:
diff changeset
206
kono
parents:
diff changeset
207 #ifdef __ANDROID__
kono
parents:
diff changeset
208 #include <unistd.h>
kono
parents:
diff changeset
209 #include <sys/select.h>
kono
parents:
diff changeset
210 #endif
kono
parents:
diff changeset
211
kono
parents:
diff changeset
212 #if defined (_AIX) || defined (__FreeBSD__) || defined (__hpux__) || \
kono
parents:
diff changeset
213 defined (_WIN32) || defined (__APPLE__) || defined (__ANDROID__) || \
kono
parents:
diff changeset
214 defined (__DragonFly__) || defined (__NetBSD__) || defined (__OpenBSD__)
kono
parents:
diff changeset
215 # define HAVE_THREAD_SAFE_GETxxxBYyyy 1
kono
parents:
diff changeset
216
kono
parents:
diff changeset
217 #elif defined (__linux__) || defined (__GLIBC__) || \
kono
parents:
diff changeset
218 (defined (__sun__) && !defined (__vxworks)) || \
kono
parents:
diff changeset
219 defined (__rtems__)
kono
parents:
diff changeset
220 # define HAVE_GETxxxBYyyy_R 1
kono
parents:
diff changeset
221 #endif
kono
parents:
diff changeset
222
kono
parents:
diff changeset
223 /*
kono
parents:
diff changeset
224 * Properties of the unerlying NetDB library:
kono
parents:
diff changeset
225 * Need_Netdb_Buffer __gnat_getXXXbyYYY expects a caller-supplied buffer
kono
parents:
diff changeset
226 * Need_Netdb_Lock __gnat_getXXXbyYYY expects the caller to ensure
kono
parents:
diff changeset
227 * mutual exclusion
kono
parents:
diff changeset
228 *
kono
parents:
diff changeset
229 * See "Handling of gethostbyname, gethostbyaddr, getservbyname and
kono
parents:
diff changeset
230 * getservbyport" in socket.c for details.
kono
parents:
diff changeset
231 */
kono
parents:
diff changeset
232
kono
parents:
diff changeset
233 #if defined (HAVE_GETxxxBYyyy_R)
kono
parents:
diff changeset
234 # define Need_Netdb_Buffer 1
kono
parents:
diff changeset
235 # define Need_Netdb_Lock 0
kono
parents:
diff changeset
236
kono
parents:
diff changeset
237 #else
kono
parents:
diff changeset
238 # define Need_Netdb_Buffer 0
kono
parents:
diff changeset
239 # if !defined (HAVE_THREAD_SAFE_GETxxxBYyyy)
kono
parents:
diff changeset
240 # define Need_Netdb_Lock 1
kono
parents:
diff changeset
241 # else
kono
parents:
diff changeset
242 # define Need_Netdb_Lock 0
kono
parents:
diff changeset
243 # endif
kono
parents:
diff changeset
244 #endif
kono
parents:
diff changeset
245
kono
parents:
diff changeset
246 #if defined (__FreeBSD__) || defined (__vxworks) || defined(__rtems__) \
kono
parents:
diff changeset
247 || defined (__DragonFly__) || defined (__NetBSD__) || defined (__OpenBSD__)
kono
parents:
diff changeset
248 # define Has_Sockaddr_Len 1
kono
parents:
diff changeset
249 #else
kono
parents:
diff changeset
250 # define Has_Sockaddr_Len 0
kono
parents:
diff changeset
251 #endif
kono
parents:
diff changeset
252
kono
parents:
diff changeset
253 #if !(defined (__vxworks) || defined (_WIN32) || defined (__hpux__) || defined (VMS))
kono
parents:
diff changeset
254 # define HAVE_INET_PTON
kono
parents:
diff changeset
255 #endif
kono
parents:
diff changeset
256
kono
parents:
diff changeset
257 #endif /* defined(VTHREADS) */