2 ------------------------------------------------------------------------------
4 -- GNAT COMPILER COMPONENTS --
6 -- S Y S T E M . O S _ C O N S T A N T S --
10 -- Copyright (C) 2000-2011, Free Software Foundation, Inc. --
12 -- GNAT is free software; you can redistribute it and/or modify it under --
13 -- terms of the GNU General Public License as published by the Free Soft- --
14 -- ware Foundation; either version 3, or (at your option) any later ver- --
15 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
16 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
17 -- or FITNESS FOR A PARTICULAR PURPOSE. --
19 -- As a special exception under Section 7 of GPL version 3, you are granted --
20 -- additional permissions described in the GCC Runtime Library Exception, --
21 -- version 3.1, as published by the Free Software Foundation. --
23 -- You should have received a copy of the GNU General Public License and --
24 -- a copy of the GCC Runtime Library Exception along with this program; --
25 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
26 -- <http://www.gnu.org/licenses/>. --
28 -- GNAT was originally developed by the GNAT team at New York University. --
29 -- Extensive contributions were provided by Ada Core Technologies Inc. --
31 ------------------------------------------------------------------------------
33 pragma Style_Checks ("M32766");
39 ** This template file is used while building the GNAT runtime library to
40 ** generate package System.OS_Constants (s-oscons.ads).
42 ** The generation process is:
43 ** 1. the platform-independent extraction tool xoscons is built with the
44 ** base native compiler
45 ** 2. this template is processed by the cross C compiler to produce
46 ** a list of constant values
47 ** 3. the comments in this template and the list of values are processed
48 ** by xoscons to generate s-oscons.ads.
50 ** Any comment occurring in this file whose start and end markers are on
51 ** a line by themselves (see above) is copied verbatim to s-oscons.ads.
52 ** All other comments are ignored. Note that the build process first passes
53 ** this file through the C preprocessor, so comments that occur in a section
54 ** that is conditioned by a #if directive will be copied to the output only
57 ** Two methods are supported to generate the list of constant values,
60 ** The default one assumes that the template can be compiled by the newly-
61 ** built cross compiler. It uses markup produced in the (pseudo-)assembly
64 ** xgcc -DTARGET=\"$target\" -C -E s-oscons-tmplt.c > s-oscons-tmplt.i
65 ** xgcc -S s-oscons-tmplt.i
68 ** Alternatively, if s-oscons-tmplt.c must be compiled with a proprietary
69 ** compiler (e.g. the native DEC CC on OpenVMS), the NATIVE macro should
70 ** be defined, and the resulting program executed:
72 ** $ CC/DEFINE=("TARGET=""OpenVMS""",NATIVE)
73 ** /PREPROCESS_ONLY /COMMENTS=AS_IS s-oscons-tmplt
74 ** $ CC/DEFINE=("TARGET=""OpenVMS""",NATIVE) s-oscons-tmplt
75 ** $ LINK s-oscons-tmplt
76 ** $ DEFINE/USER SYS$OUTPUT s-oscons-tmplt.s
77 ** $ RUN s-oscons-tmplt
81 #if defined (__linux__) && !defined (_XOPEN_SOURCE)
82 /** For Linux _XOPEN_SOURCE must be defined, otherwise IOV_MAX is not defined
84 #define _XOPEN_SOURCE 500
86 #elif defined (__mips) && defined (__sgi)
87 /** For IRIX 6, _XOPEN5 must be defined and _XOPEN_IOV_MAX must be used as
88 ** IOV_MAX, otherwise IOV_MAX is not defined. IRIX 5 has neither.
92 #define IOV_MAX _XOPEN_IOV_MAX
101 #if defined (__alpha__) && defined (__osf__)
102 /** Tru64 is unable to do vector IO operations with default value of IOV_MAX,
103 ** so its value is redefined to a small one which is known to work properly.
110 /** VMS is unable to do vector IO operations with default value of IOV_MAX,
111 ** so its value is redefined to a small one which is known to work properly.
117 #if ! (defined (__vxworks) || defined (__VMS) || defined (__MINGW32__) || \
118 defined (__nucleus__))
119 # define HAVE_TERMIOS
122 #if defined (__vxworks)
125 ** For VxWorks, always include vxWorks.h (gsocket.h provides it only for
126 ** the case of runtime libraries that support sockets).
129 # include <vxWorks.h>
136 # if defined (TARGET)
137 # error TARGET may not be defined when generating the dummy version
139 # define TARGET "batch runtime compilation (dummy values)"
142 # if !(defined (HAVE_SOCKETS) && defined (HAVE_TERMIOS))
143 # error Features missing on platform
151 # error Please define TARGET
159 # include <termios.h>
167 # include <pthread.h>
175 # define _VAL(x) counter++
180 #define CND(name,comment) \
181 printf ("\n->CND:$%d:" #name ":$%d:" comment, __LINE__, ((int) _VAL (name)));
183 #define CNS(name,comment) \
184 printf ("\n->CNS:$%d:" #name ":" name ":" comment, __LINE__);
186 #define C(sname,type,value,comment)\
187 printf ("\n->C:$%d:" sname ":" #type ":" value ":" comment, __LINE__);
190 printf ("\n->TXT:$%d:" text, __LINE__);
194 #define CND(name, comment) \
195 asm volatile("\n->CND:%0:" #name ":%1:" comment \
196 : : "i" (__LINE__), "i" ((int) name));
197 /* Decimal constant in the range of type "int" */
199 #define CNS(name, comment) \
200 asm volatile("\n->CNS:%0:" #name ":" name ":" comment \
202 /* General expression named number */
204 #define C(sname, type, value, comment) \
205 asm volatile("\n->C:%0:" sname ":" #type ":" value ":" comment \
210 asm volatile("\n->TXT:%0:" text \
216 #define CST(name,comment) C(#name,String,name,comment)
218 #define STR(x) STR1(x)
222 unsigned int _CRT_fmode = _O_BINARY;
229 -- This package provides target dependent definitions of constant for use
230 -- by the GNAT runtime library. This package should not be directly with'd
231 -- by an application program.
233 -- This file is generated automatically, do not modify it by hand! Instead,
234 -- make changes to s-oscons-tmplt.c and rebuild the GNAT runtime library.
238 ** Do not change the format of the line below without also updating the
241 TXT("-- This is the version for " TARGET)
246 ** The type definitions for struct hostent components uses Interfaces.C
249 TXT("with Interfaces.C;")
253 package System.OS_Constants is
259 ** General constants (all platforms)
264 -----------------------------
265 -- Platform identification --
266 -----------------------------
268 type OS_Type is (Windows, VMS, Other_OS);
270 #if defined (__MINGW32__)
271 # define TARGET_OS "Windows"
272 #elif defined (__VMS)
273 # define TARGET_OS "VMS"
275 # define TARGET_OS "Other_OS"
277 C("Target_OS", OS_Type, TARGET_OS, "")
278 #define Target_Name TARGET
289 # define IOV_MAX INT_MAX
291 CND(IOV_MAX, "Maximum writev iovcnt")
295 ---------------------
296 -- File open modes --
297 ---------------------
304 CND(O_RDWR, "Read/write")
309 CND(O_NOCTTY, "Don't change ctrl tty")
314 CND(O_NDELAY, "Nonblocking")
318 ----------------------
319 -- Fcntl operations --
320 ----------------------
327 CND(F_GETFL, "Get flags")
332 CND(F_SETFL, "Set flags")
345 CND(FNDELAY, "Nonblocking")
349 ----------------------
350 -- Ioctl operations --
351 ----------------------
358 CND(FIONBIO, "Set/clear non-blocking io")
363 CND(FIONREAD, "How many bytes to read")
371 -- The following constants are defined from <errno.h>
377 CND(EAGAIN, "Try again")
382 CND(ENOENT, "File not found")
387 CND(ENOMEM, "Out of memory")
392 -- The following constants are defined from <winsock2.h> (WSA*)
397 ** For sockets-related errno values on Windows, gsocket.h redefines
406 CND(EACCES, "Permission denied")
409 # define EADDRINUSE -1
411 CND(EADDRINUSE, "Address already in use")
413 #ifndef EADDRNOTAVAIL
414 # define EADDRNOTAVAIL -1
416 CND(EADDRNOTAVAIL, "Cannot assign address")
419 # define EAFNOSUPPORT -1
421 CND(EAFNOSUPPORT, "Addr family not supported")
426 CND(EALREADY, "Operation in progress")
431 CND(EBADF, "Bad file descriptor")
434 # define ECONNABORTED -1
436 CND(ECONNABORTED, "Connection aborted")
439 # define ECONNREFUSED -1
441 CND(ECONNREFUSED, "Connection refused")
444 # define ECONNRESET -1
446 CND(ECONNRESET, "Connection reset by peer")
449 # define EDESTADDRREQ -1
451 CND(EDESTADDRREQ, "Destination addr required")
456 CND(EFAULT, "Bad address")
459 # define EHOSTDOWN -1
461 CND(EHOSTDOWN, "Host is down")
464 # define EHOSTUNREACH -1
466 CND(EHOSTUNREACH, "No route to host")
469 # define EINPROGRESS -1
471 CND(EINPROGRESS, "Operation now in progress")
476 CND(EINTR, "Interrupted system call")
481 CND(EINVAL, "Invalid argument")
486 CND(EIO, "Input output error")
491 CND(EISCONN, "Socket already connected")
496 CND(ELOOP, "Too many symbolic links")
501 CND(EMFILE, "Too many open files")
506 CND(EMSGSIZE, "Message too long")
509 # define ENAMETOOLONG -1
511 CND(ENAMETOOLONG, "Name too long")
516 CND(ENETDOWN, "Network is down")
519 # define ENETRESET -1
521 CND(ENETRESET, "Disconn. on network reset")
524 # define ENETUNREACH -1
526 CND(ENETUNREACH, "Network is unreachable")
531 CND(ENOBUFS, "No buffer space available")
534 # define ENOPROTOOPT -1
536 CND(ENOPROTOOPT, "Protocol not available")
541 CND(ENOTCONN, "Socket not connected")
546 CND(ENOTSOCK, "Operation on non socket")
549 # define EOPNOTSUPP -1
551 CND(EOPNOTSUPP, "Operation not supported")
556 CND(EPIPE, "Broken pipe")
559 # define EPFNOSUPPORT -1
561 CND(EPFNOSUPPORT, "Unknown protocol family")
563 #ifndef EPROTONOSUPPORT
564 # define EPROTONOSUPPORT -1
566 CND(EPROTONOSUPPORT, "Unknown protocol")
569 # define EPROTOTYPE -1
571 CND(EPROTOTYPE, "Unknown protocol type")
576 CND(ERANGE, "Result too large")
579 # define ESHUTDOWN -1
581 CND(ESHUTDOWN, "Cannot send once shutdown")
583 #ifndef ESOCKTNOSUPPORT
584 # define ESOCKTNOSUPPORT -1
586 CND(ESOCKTNOSUPPORT, "Socket type not supported")
589 # define ETIMEDOUT -1
591 CND(ETIMEDOUT, "Connection timed out")
594 # define ETOOMANYREFS -1
596 CND(ETOOMANYREFS, "Too many references")
599 # define EWOULDBLOCK -1
601 CND(EWOULDBLOCK, "Operation would block")
604 ** Terminal I/O constants
611 ----------------------
612 -- Terminal control --
613 ----------------------
620 CND(TCSANOW, "Immediate")
625 CND(TCIFLUSH, "Flush input")
635 CND(CRTSCTS, "Hardware flow control")
645 CND(CS5, "5 data bits")
650 CND(CS6, "6 data bits")
655 CND(CS7, "7 data bits")
660 CND(CS8, "8 data bits")
665 CND(CSTOPB, "2 stop bits")
670 CND(PARENB, "Parity enable")
675 CND(PARODD, "Parity odd")
725 CND(B1200, "1200 bps")
730 CND(B1800, "1800 bps")
735 CND(B2400, "2400 bps")
740 CND(B4800, "4800 bps")
745 CND(B9600, "9600 bps")
750 CND(B19200, "19200 bps")
755 CND(B38400, "38400 bps")
760 CND(B57600, "57600 bps")
765 CND(B115200, "115200 bps")
770 CND(B230400, "230400 bps")
775 CND(B460800, "460800 bps")
780 CND(B500000, "500000 bps")
785 CND(B576000, "576000 bps")
790 CND(B921600, "921600 bps")
795 CND(B1000000, "1000000 bps")
800 CND(B1152000, "1152000 bps")
805 CND(B1500000, "1500000 bps")
810 CND(B2000000, "2000000 bps")
815 CND(B2500000, "2500000 bps")
820 CND(B3000000, "3000000 bps")
825 CND(B3500000, "3500000 bps")
830 CND(B4000000, "4000000 bps")
834 ---------------------------------
835 -- Terminal control characters --
836 ---------------------------------
843 CND(VINTR, "Interrupt")
868 CND(VTIME, "Read timeout")
873 CND(VMIN, "Read min chars")
883 CND(VSTART, "Flow control start")
888 CND(VSTOP, "Flow control stop")
893 CND(VSUSP, "Suspend")
903 CND(VREPRINT, "Reprint unread")
908 CND(VDISCARD, "Discard pending")
913 CND(VWERASE, "Word erase")
918 CND(VLNEXT, "Literal next")
923 CND(VEOL2, "Alternative EOL")
925 #endif /* HAVE_TERMIOS */
944 CND(AF_INET, "IPv4 address family")
947 ** RTEMS lies and defines AF_INET6 even though there is no IPV6 support.
948 ** Its TCP/IP stack is in transition. It has newer .h files but no IPV6 yet.
950 #if defined(__rtems__)
955 ** Tru64 UNIX V4.0F defines AF_INET6 without IPv6 support, specifically
956 ** without struct sockaddr_in6. We use _SS_MAXSIZE (used for the definition
957 ** of struct sockaddr_storage on Tru64 UNIX V5.1) to detect this.
959 #if defined(__osf__) && !defined(_SS_MAXSIZE)
966 # define HAVE_AF_INET6 1
968 CND(AF_INET6, "IPv6 address family")
979 # define SOCK_STREAM -1
981 CND(SOCK_STREAM, "Stream socket")
984 # define SOCK_DGRAM -1
986 CND(SOCK_DGRAM, "Datagram socket")
996 #ifndef HOST_NOT_FOUND
997 # define HOST_NOT_FOUND -1
999 CND(HOST_NOT_FOUND, "Unknown host")
1002 # define TRY_AGAIN -1
1004 CND(TRY_AGAIN, "Host name lookup failure")
1009 CND(NO_DATA, "No data record for name")
1012 # define NO_RECOVERY -1
1014 CND(NO_RECOVERY, "Non recoverable errors")
1018 --------------------
1019 -- Shutdown modes --
1020 --------------------
1027 CND(SHUT_RD, "No more recv")
1032 CND(SHUT_WR, "No more send")
1035 # define SHUT_RDWR -1
1037 CND(SHUT_RDWR, "No more recv/send")
1041 ---------------------
1042 -- Protocol levels --
1043 ---------------------
1048 # define SOL_SOCKET -1
1050 CND(SOL_SOCKET, "Options for socket level")
1053 # define IPPROTO_IP -1
1055 CND(IPPROTO_IP, "Dummy protocol for IP")
1058 # define IPPROTO_UDP -1
1060 CND(IPPROTO_UDP, "UDP")
1063 # define IPPROTO_TCP -1
1065 CND(IPPROTO_TCP, "TCP")
1078 CND(MSG_OOB, "Process out-of-band data")
1081 # define MSG_PEEK -1
1083 CND(MSG_PEEK, "Peek at incoming data")
1088 CND(MSG_EOR, "Send end of record")
1092 /* The value of MSG_WAITALL is 8. Nevertheless winsock.h doesn't
1093 define it, but it is still usable as we link to winsock2 API. */
1094 # define MSG_WAITALL (1 << 3)
1096 # define MSG_WAITALL -1
1099 CND(MSG_WAITALL, "Wait for full reception")
1101 #ifndef MSG_NOSIGNAL
1102 # define MSG_NOSIGNAL -1
1104 CND(MSG_NOSIGNAL, "No SIGPIPE on send")
1107 # define MSG_Forced_Flags "MSG_NOSIGNAL"
1109 # define MSG_Forced_Flags "0"
1111 CNS(MSG_Forced_Flags, "")
1113 -- Flags set on all send(2) calls
1118 --------------------
1119 -- Socket options --
1120 --------------------
1125 # define TCP_NODELAY -1
1127 CND(TCP_NODELAY, "Do not coalesce packets")
1129 #ifndef SO_REUSEADDR
1130 # define SO_REUSEADDR -1
1132 CND(SO_REUSEADDR, "Bind reuse local address")
1134 #ifndef SO_REUSEPORT
1135 # define SO_REUSEPORT -1
1137 CND(SO_REUSEPORT, "Bind reuse port number")
1139 #ifndef SO_KEEPALIVE
1140 # define SO_KEEPALIVE -1
1142 CND(SO_KEEPALIVE, "Enable keep-alive msgs")
1145 # define SO_LINGER -1
1147 CND(SO_LINGER, "Defer close to flush data")
1149 #ifndef SO_BROADCAST
1150 # define SO_BROADCAST -1
1152 CND(SO_BROADCAST, "Can send broadcast msgs")
1155 # define SO_SNDBUF -1
1157 CND(SO_SNDBUF, "Set/get send buffer size")
1160 # define SO_RCVBUF -1
1162 CND(SO_RCVBUF, "Set/get recv buffer size")
1165 # define SO_SNDTIMEO -1
1167 CND(SO_SNDTIMEO, "Emission timeout")
1170 # define SO_RCVTIMEO -1
1172 CND(SO_RCVTIMEO, "Reception timeout")
1175 # define SO_ERROR -1
1177 CND(SO_ERROR, "Get/clear error status")
1179 #ifndef IP_MULTICAST_IF
1180 # define IP_MULTICAST_IF -1
1182 CND(IP_MULTICAST_IF, "Set/get mcast interface")
1184 #ifndef IP_MULTICAST_TTL
1185 # define IP_MULTICAST_TTL -1
1187 CND(IP_MULTICAST_TTL, "Set/get multicast TTL")
1189 #ifndef IP_MULTICAST_LOOP
1190 # define IP_MULTICAST_LOOP -1
1192 CND(IP_MULTICAST_LOOP, "Set/get mcast loopback")
1194 #ifndef IP_ADD_MEMBERSHIP
1195 # define IP_ADD_MEMBERSHIP -1
1197 CND(IP_ADD_MEMBERSHIP, "Join a multicast group")
1199 #ifndef IP_DROP_MEMBERSHIP
1200 # define IP_DROP_MEMBERSHIP -1
1202 CND(IP_DROP_MEMBERSHIP, "Leave a multicast group")
1205 # define IP_PKTINFO -1
1207 CND(IP_PKTINFO, "Get datagram info")
1211 ----------------------
1212 -- Type definitions --
1213 ----------------------
1220 -- Sizes (in bytes) of the components of struct timeval
1222 #define SIZEOF_tv_sec (sizeof tv.tv_sec)
1223 CND(SIZEOF_tv_sec, "tv_sec")
1224 #define SIZEOF_tv_usec (sizeof tv.tv_usec)
1225 CND(SIZEOF_tv_usec, "tv_usec")
1228 -- Maximum allowed value for tv_sec
1232 ** On Solaris and IRIX, field tv_sec in struct timeval has an undocumented
1233 ** hard-wired limit of 100 million.
1234 ** On IA64 HP-UX the limit is 2**31 - 1.
1236 #if defined (sun) || (defined (__mips) && defined (__sgi))
1237 # define MAX_tv_sec "100_000_000"
1239 #elif defined (__hpux__)
1240 # define MAX_tv_sec "16#7fffffff#"
1243 # define MAX_tv_sec "2 ** (SIZEOF_tv_sec * 8 - 1) - 1"
1249 -- Sizes of various data types
1252 #define SIZEOF_sockaddr_in (sizeof (struct sockaddr_in))
1253 CND(SIZEOF_sockaddr_in, "struct sockaddr_in")
1254 #ifdef HAVE_AF_INET6
1255 # define SIZEOF_sockaddr_in6 (sizeof (struct sockaddr_in6))
1257 # define SIZEOF_sockaddr_in6 0
1259 CND(SIZEOF_sockaddr_in6, "struct sockaddr_in6")
1261 #define SIZEOF_fd_set (sizeof (fd_set))
1262 CND(SIZEOF_fd_set, "fd_set");
1264 #define SIZEOF_struct_hostent (sizeof (struct hostent))
1265 CND(SIZEOF_struct_hostent, "struct hostent");
1267 #define SIZEOF_struct_servent (sizeof (struct servent))
1268 CND(SIZEOF_struct_servent, "struct servent");
1271 -- Fields of struct msghdr
1274 #if defined (__sun__) || defined (__hpux__)
1275 # define msg_iovlen_t "int"
1277 # define msg_iovlen_t "size_t"
1280 TXT(" subtype Msg_Iovlen_T is Interfaces.C." msg_iovlen_t ";")
1284 ----------------------------------------
1285 -- Properties of supported interfaces --
1286 ----------------------------------------
1290 CND(Need_Netdb_Buffer, "Need buffer for Netdb ops")
1291 CND(Need_Netdb_Lock, "Need lock for Netdb ops")
1292 CND(Has_Sockaddr_Len, "Sockaddr has sa_len field")
1295 ** Do not change the format of the line below without also updating the
1298 C("Thread_Blocking_IO", Boolean, "True", "")
1300 -- Set False for contexts where socket i/o are process blocking
1304 #ifdef HAVE_INET_PTON
1305 # define Inet_Pton_Linkname "inet_pton"
1307 # define Inet_Pton_Linkname "__gnat_inet_pton"
1309 CST(Inet_Pton_Linkname, "")
1311 #endif /* HAVE_SOCKETS */
1314 ** System-specific constants follow
1315 ** Each section should be activated if compiling for the corresponding
1316 ** platform *or* generating the dummy version for runtime test compilation.
1319 #if defined (__vxworks) || defined (DUMMY)
1323 --------------------------------
1324 -- VxWorks-specific constants --
1325 --------------------------------
1327 -- These constants may be used only within the VxWorks version of
1328 -- GNAT.Sockets.Thin.
1331 CND(OK, "VxWorks generic success")
1332 CND(ERROR, "VxWorks generic error")
1336 #if defined (__MINGW32__) || defined (DUMMY)
1339 ------------------------------
1340 -- MinGW-specific constants --
1341 ------------------------------
1343 -- These constants may be used only within the MinGW version of
1344 -- GNAT.Sockets.Thin.
1347 CND(WSASYSNOTREADY, "System not ready")
1348 CND(WSAVERNOTSUPPORTED, "Version not supported")
1349 CND(WSANOTINITIALISED, "Winsock not initialized")
1350 CND(WSAEDISCON, "Disconnected")
1358 #if defined (__APPLE__) || defined (__linux__) || defined (DUMMY)
1361 -- Sizes of pthread data types (on Darwin these are padding)
1364 #if defined (__APPLE__) || defined (DUMMY)
1365 #define PTHREAD_SIZE __PTHREAD_SIZE__
1366 #define PTHREAD_ATTR_SIZE __PTHREAD_ATTR_SIZE__
1367 #define PTHREAD_MUTEXATTR_SIZE __PTHREAD_MUTEXATTR_SIZE__
1368 #define PTHREAD_MUTEX_SIZE __PTHREAD_MUTEX_SIZE__
1369 #define PTHREAD_CONDATTR_SIZE __PTHREAD_CONDATTR_SIZE__
1370 #define PTHREAD_COND_SIZE __PTHREAD_COND_SIZE__
1371 #define PTHREAD_RWLOCKATTR_SIZE __PTHREAD_RWLOCKATTR_SIZE__
1372 #define PTHREAD_RWLOCK_SIZE __PTHREAD_RWLOCK_SIZE__
1373 #define PTHREAD_ONCE_SIZE __PTHREAD_ONCE_SIZE__
1375 #define PTHREAD_SIZE (sizeof (pthread_t))
1376 #define PTHREAD_ATTR_SIZE (sizeof (pthread_attr_t))
1377 #define PTHREAD_MUTEXATTR_SIZE (sizeof (pthread_mutexattr_t))
1378 #define PTHREAD_MUTEX_SIZE (sizeof (pthread_mutex_t))
1379 #define PTHREAD_CONDATTR_SIZE (sizeof (pthread_condattr_t))
1380 #define PTHREAD_COND_SIZE (sizeof (pthread_cond_t))
1381 #define PTHREAD_RWLOCKATTR_SIZE (sizeof (pthread_rwlockattr_t))
1382 #define PTHREAD_RWLOCK_SIZE (sizeof (pthread_rwlock_t))
1383 #define PTHREAD_ONCE_SIZE (sizeof (pthread_once_t))
1386 CND(PTHREAD_SIZE, "pthread_t")
1388 CND(PTHREAD_ATTR_SIZE, "pthread_attr_t")
1390 CND(PTHREAD_MUTEXATTR_SIZE, "pthread_mutexattr_t")
1392 CND(PTHREAD_MUTEX_SIZE, "pthread_mutex_t")
1394 CND(PTHREAD_CONDATTR_SIZE, "pthread_condattr_t")
1396 CND(PTHREAD_COND_SIZE, "pthread_cond_t")
1398 CND(PTHREAD_RWLOCKATTR_SIZE, "pthread_rwlockattr_t")
1400 CND(PTHREAD_RWLOCK_SIZE, "pthread_rwlock_t")
1402 CND(PTHREAD_ONCE_SIZE, "pthread_once_t")
1408 end System.OS_Constants;