pthread_linux_arm64.go (85969B)
1 // Code generated by 'ccgo pthread/gen.c -crt-import-path "" -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -header -hide _OSSwapInt16,_OSSwapInt32,_OSSwapInt64 -o pthread/pthread_linux_arm64.go -pkgname pthread', DO NOT EDIT. 2 3 package pthread 4 5 import ( 6 "math" 7 "reflect" 8 "sync/atomic" 9 "unsafe" 10 ) 11 12 var _ = math.Pi 13 var _ reflect.Kind 14 var _ atomic.Value 15 var _ unsafe.Pointer 16 17 const ( 18 CLOCK_BOOTTIME = 7 19 CLOCK_BOOTTIME_ALARM = 9 20 CLOCK_MONOTONIC = 1 21 CLOCK_MONOTONIC_COARSE = 6 22 CLOCK_MONOTONIC_RAW = 4 23 CLOCK_PROCESS_CPUTIME_ID = 2 24 CLOCK_REALTIME = 0 25 CLOCK_REALTIME_ALARM = 8 26 CLOCK_REALTIME_COARSE = 5 27 CLOCK_TAI = 11 28 CLOCK_THREAD_CPUTIME_ID = 3 29 PTHREAD_BARRIER_SERIAL_THREAD = -1 30 PTHREAD_ONCE_INIT = 0 31 SCHED_FIFO = 1 32 SCHED_OTHER = 0 33 SCHED_RR = 2 34 TIMER_ABSTIME = 1 35 TIME_UTC = 1 36 X_ATFILE_SOURCE = 1 37 X_BITS_CPU_SET_H = 1 38 X_BITS_ENDIANNESS_H = 1 39 X_BITS_ENDIAN_H = 1 40 X_BITS_PTHREADTYPES_ARCH_H = 1 41 X_BITS_PTHREADTYPES_COMMON_H = 1 42 X_BITS_SCHED_H = 1 43 X_BITS_SETJMP_H = 1 44 X_BITS_TIME64_H = 1 45 X_BITS_TIME_H = 1 46 X_BITS_TYPESIZES_H = 1 47 X_BITS_TYPES_H = 1 48 X_BITS_TYPES_LOCALE_T_H = 1 49 X_BITS_TYPES_STRUCT_SCHED_PARAM = 1 50 X_BITS_TYPES___LOCALE_T_H = 1 51 X_BSD_SIZE_T_ = 0 52 X_BSD_SIZE_T_DEFINED_ = 0 53 X_DEFAULT_SOURCE = 1 54 X_FEATURES_H = 1 55 X_FILE_OFFSET_BITS = 64 56 X_GCC_SIZE_T = 0 57 X_LP64 = 1 58 X_POSIX_C_SOURCE = 200809 59 X_POSIX_SOURCE = 1 60 X_PTHREAD_H = 1 61 X_RWLOCK_INTERNAL_H = 0 62 X_SCHED_H = 1 63 X_SIZET_ = 0 64 X_SIZE_T = 0 65 X_SIZE_T_ = 0 66 X_SIZE_T_DECLARED = 0 67 X_SIZE_T_DEFINED = 0 68 X_SIZE_T_DEFINED_ = 0 69 X_STDC_PREDEF_H = 1 70 X_STRUCT_TIMESPEC = 1 71 X_SYS_CDEFS_H = 1 72 X_SYS_SIZE_T_H = 0 73 X_THREAD_MUTEX_INTERNAL_H = 1 74 X_THREAD_SHARED_TYPES_H = 1 75 X_TIME_H = 1 76 X_T_SIZE = 0 77 X_T_SIZE_ = 0 78 Linux = 1 79 Unix = 1 80 ) 81 82 // Read-write lock types. 83 const ( /* pthread.h:100:1: */ 84 PTHREAD_RWLOCK_PREFER_READER_NP = 0 85 PTHREAD_RWLOCK_PREFER_WRITER_NP = 1 86 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP = 2 87 PTHREAD_RWLOCK_DEFAULT_NP = 0 88 ) 89 90 // Read-write lock initializers. 91 92 // Scheduler inheritance. 93 const ( /* pthread.h:120:1: */ 94 PTHREAD_INHERIT_SCHED = 0 95 PTHREAD_EXPLICIT_SCHED = 1 96 ) 97 98 // Scope handling. 99 const ( /* pthread.h:130:1: */ 100 PTHREAD_SCOPE_SYSTEM = 0 101 PTHREAD_SCOPE_PROCESS = 1 102 ) 103 104 // Process shared or private flag. 105 const ( /* pthread.h:140:1: */ 106 PTHREAD_PROCESS_PRIVATE = 0 107 PTHREAD_PROCESS_SHARED = 1 108 ) 109 110 // Cancellation 111 const ( /* pthread.h:164:1: */ 112 PTHREAD_CANCEL_ENABLE = 0 113 PTHREAD_CANCEL_DISABLE = 1 114 ) 115 const ( /* pthread.h:171:1: */ 116 PTHREAD_CANCEL_DEFERRED = 0 117 PTHREAD_CANCEL_ASYNCHRONOUS = 1 118 ) 119 120 // Determine the wordsize from the preprocessor defines. 121 // 122 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 123 // This file is part of the GNU C Library. 124 // 125 // The GNU C Library is free software; you can redistribute it and/or 126 // modify it under the terms of the GNU Lesser General Public 127 // License as published by the Free Software Foundation; either 128 // version 2.1 of the License, or (at your option) any later version. 129 // 130 // The GNU C Library is distributed in the hope that it will be useful, 131 // but WITHOUT ANY WARRANTY; without even the implied warranty of 132 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 133 // Lesser General Public License for more details. 134 // 135 // You should have received a copy of the GNU Lesser General Public 136 // License along with the GNU C Library; if not, see 137 // <https://www.gnu.org/licenses/>. 138 139 // NB: Include guard matches what <linux/time.h> uses. 140 141 // Detach state. 142 const ( /* pthread.h:33:1: */ 143 PTHREAD_CREATE_JOINABLE = 0 144 PTHREAD_CREATE_DETACHED = 1 145 ) 146 147 // Mutex types. 148 const ( /* pthread.h:43:1: */ 149 PTHREAD_MUTEX_TIMED_NP = 0 150 PTHREAD_MUTEX_RECURSIVE_NP = 1 151 PTHREAD_MUTEX_ERRORCHECK_NP = 2 152 PTHREAD_MUTEX_ADAPTIVE_NP = 3 153 PTHREAD_MUTEX_NORMAL = 0 154 PTHREAD_MUTEX_RECURSIVE = 1 155 PTHREAD_MUTEX_ERRORCHECK = 2 156 PTHREAD_MUTEX_DEFAULT = 0 157 ) 158 159 // Robust mutex or not flags. 160 const ( /* pthread.h:65:1: */ 161 PTHREAD_MUTEX_STALLED = 0 162 PTHREAD_MUTEX_STALLED_NP = 0 163 PTHREAD_MUTEX_ROBUST = 1 164 PTHREAD_MUTEX_ROBUST_NP = 1 165 ) 166 167 // Mutex protocols. 168 const ( /* pthread.h:77:1: */ 169 PTHREAD_PRIO_NONE = 0 170 PTHREAD_PRIO_INHERIT = 1 171 PTHREAD_PRIO_PROTECT = 2 172 ) 173 174 type Ptrdiff_t = int64 /* <builtin>:3:26 */ 175 176 type Size_t = uint64 /* <builtin>:9:23 */ 177 178 type Wchar_t = uint32 /* <builtin>:15:24 */ 179 180 type X__int128_t = struct { 181 Flo int64 182 Fhi int64 183 } /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128 184 type X__uint128_t = struct { 185 Flo uint64 186 Fhi uint64 187 } /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128 188 189 type X__builtin_va_list = uintptr /* <builtin>:46:14 */ 190 type X__float128 = float64 /* <builtin>:47:21 */ 191 192 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 193 // This file is part of the GNU C Library. 194 // 195 // The GNU C Library is free software; you can redistribute it and/or 196 // modify it under the terms of the GNU Lesser General Public 197 // License as published by the Free Software Foundation; either 198 // version 2.1 of the License, or (at your option) any later version. 199 // 200 // The GNU C Library is distributed in the hope that it will be useful, 201 // but WITHOUT ANY WARRANTY; without even the implied warranty of 202 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 203 // Lesser General Public License for more details. 204 // 205 // You should have received a copy of the GNU Lesser General Public 206 // License along with the GNU C Library; if not, see 207 // <https://www.gnu.org/licenses/>. 208 209 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 210 // This file is part of the GNU C Library. 211 // 212 // The GNU C Library is free software; you can redistribute it and/or 213 // modify it under the terms of the GNU Lesser General Public 214 // License as published by the Free Software Foundation; either 215 // version 2.1 of the License, or (at your option) any later version. 216 // 217 // The GNU C Library is distributed in the hope that it will be useful, 218 // but WITHOUT ANY WARRANTY; without even the implied warranty of 219 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 220 // Lesser General Public License for more details. 221 // 222 // You should have received a copy of the GNU Lesser General Public 223 // License along with the GNU C Library; if not, see 224 // <https://www.gnu.org/licenses/>. 225 226 // These are defined by the user (or the compiler) 227 // to specify the desired environment: 228 // 229 // __STRICT_ANSI__ ISO Standard C. 230 // _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. 231 // _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. 232 // _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X. 233 // __STDC_WANT_LIB_EXT2__ 234 // Extensions to ISO C99 from TR 27431-2:2010. 235 // __STDC_WANT_IEC_60559_BFP_EXT__ 236 // Extensions to ISO C11 from TS 18661-1:2014. 237 // __STDC_WANT_IEC_60559_FUNCS_EXT__ 238 // Extensions to ISO C11 from TS 18661-4:2015. 239 // __STDC_WANT_IEC_60559_TYPES_EXT__ 240 // Extensions to ISO C11 from TS 18661-3:2015. 241 // 242 // _POSIX_SOURCE IEEE Std 1003.1. 243 // _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; 244 // if >=199309L, add IEEE Std 1003.1b-1993; 245 // if >=199506L, add IEEE Std 1003.1c-1995; 246 // if >=200112L, all of IEEE 1003.1-2004 247 // if >=200809L, all of IEEE 1003.1-2008 248 // _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if 249 // Single Unix conformance is wanted, to 600 for the 250 // sixth revision, to 700 for the seventh revision. 251 // _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. 252 // _LARGEFILE_SOURCE Some more functions for correct standard I/O. 253 // _LARGEFILE64_SOURCE Additional functionality from LFS for large files. 254 // _FILE_OFFSET_BITS=N Select default filesystem interface. 255 // _ATFILE_SOURCE Additional *at interfaces. 256 // _GNU_SOURCE All of the above, plus GNU extensions. 257 // _DEFAULT_SOURCE The default set of features (taking precedence over 258 // __STRICT_ANSI__). 259 // 260 // _FORTIFY_SOURCE Add security hardening to many library functions. 261 // Set to 1 or 2; 2 performs stricter checks than 1. 262 // 263 // _REENTRANT, _THREAD_SAFE 264 // Obsolete; equivalent to _POSIX_C_SOURCE=199506L. 265 // 266 // The `-ansi' switch to the GNU C compiler, and standards conformance 267 // options such as `-std=c99', define __STRICT_ANSI__. If none of 268 // these are defined, or if _DEFAULT_SOURCE is defined, the default is 269 // to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to 270 // 200809L, as well as enabling miscellaneous functions from BSD and 271 // SVID. If more than one of these are defined, they accumulate. For 272 // example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together 273 // give you ISO C, 1003.1, and 1003.2, but nothing else. 274 // 275 // These are defined by this file and are used by the 276 // header files to decide what to declare or define: 277 // 278 // __GLIBC_USE (F) Define things from feature set F. This is defined 279 // to 1 or 0; the subsequent macros are either defined 280 // or undefined, and those tests should be moved to 281 // __GLIBC_USE. 282 // __USE_ISOC11 Define ISO C11 things. 283 // __USE_ISOC99 Define ISO C99 things. 284 // __USE_ISOC95 Define ISO C90 AMD1 (C95) things. 285 // __USE_ISOCXX11 Define ISO C++11 things. 286 // __USE_POSIX Define IEEE Std 1003.1 things. 287 // __USE_POSIX2 Define IEEE Std 1003.2 things. 288 // __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. 289 // __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. 290 // __USE_XOPEN Define XPG things. 291 // __USE_XOPEN_EXTENDED Define X/Open Unix things. 292 // __USE_UNIX98 Define Single Unix V2 things. 293 // __USE_XOPEN2K Define XPG6 things. 294 // __USE_XOPEN2KXSI Define XPG6 XSI things. 295 // __USE_XOPEN2K8 Define XPG7 things. 296 // __USE_XOPEN2K8XSI Define XPG7 XSI things. 297 // __USE_LARGEFILE Define correct standard I/O things. 298 // __USE_LARGEFILE64 Define LFS things with separate names. 299 // __USE_FILE_OFFSET64 Define 64bit interface as default. 300 // __USE_MISC Define things from 4.3BSD or System V Unix. 301 // __USE_ATFILE Define *at interfaces and AT_* constants for them. 302 // __USE_GNU Define GNU extensions. 303 // __USE_FORTIFY_LEVEL Additional security measures used, according to level. 304 // 305 // The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are 306 // defined by this file unconditionally. `__GNU_LIBRARY__' is provided 307 // only for compatibility. All new code should use the other symbols 308 // to test for features. 309 // 310 // All macros listed above as possibly being defined by this file are 311 // explicitly undefined if they are not explicitly defined. 312 // Feature-test macros that are not defined by the user or compiler 313 // but are implied by the other feature-test macros defined (or by the 314 // lack of any definitions) are defined by the file. 315 // 316 // ISO C feature test macros depend on the definition of the macro 317 // when an affected header is included, not when the first system 318 // header is included, and so they are handled in 319 // <bits/libc-header-start.h>, which does not have a multiple include 320 // guard. Feature test macros that can be handled from the first 321 // system header included are handled here. 322 323 // Undefine everything, so we get a clean slate. 324 325 // Suppress kernel-name space pollution unless user expressedly asks 326 // for it. 327 328 // Convenience macro to test the version of gcc. 329 // Use like this: 330 // #if __GNUC_PREREQ (2,8) 331 // ... code requiring gcc 2.8 or later ... 332 // #endif 333 // Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was 334 // added in 2.0. 335 336 // Similarly for clang. Features added to GCC after version 4.2 may 337 // or may not also be available in clang, and clang's definitions of 338 // __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such 339 // features can be queried via __has_extension/__has_feature. 340 341 // Whether to use feature set F. 342 343 // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for 344 // _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not 345 // issue a warning; the expectation is that the source is being 346 // transitioned to use the new macro. 347 348 // If _GNU_SOURCE was defined by the user, turn on all the other features. 349 350 // If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined, 351 // define _DEFAULT_SOURCE. 352 353 // This is to enable the ISO C2X extension. 354 355 // This is to enable the ISO C11 extension. 356 357 // This is to enable the ISO C99 extension. 358 359 // This is to enable the ISO C90 Amendment 1:1995 extension. 360 361 // If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE 362 // is defined, use POSIX.1-2008 (or another version depending on 363 // _XOPEN_SOURCE). 364 365 // Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be 366 // defined in all multithreaded code. GNU libc has not required this 367 // for many years. We now treat them as compatibility synonyms for 368 // _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with 369 // comprehensive support for multithreaded code. Using them never 370 // lowers the selected level of POSIX conformance, only raises it. 371 372 // The function 'gets' existed in C89, but is impossible to use 373 // safely. It has been removed from ISO C11 and ISO C++14. Note: for 374 // compatibility with various implementations of <cstdio>, this test 375 // must consider only the value of __cplusplus when compiling C++. 376 377 // GNU formerly extended the scanf functions with modified format 378 // specifiers %as, %aS, and %a[...] that allocate a buffer for the 379 // input using malloc. This extension conflicts with ISO C99, which 380 // defines %a as a standalone format specifier that reads a floating- 381 // point number; moreover, POSIX.1-2008 provides the same feature 382 // using the modifier letter 'm' instead (%ms, %mS, %m[...]). 383 // 384 // We now follow C99 unless GNU extensions are active and the compiler 385 // is specifically in C89 or C++98 mode (strict or not). For 386 // instance, with GCC, -std=gnu11 will have C99-compliant scanf with 387 // or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the 388 // old extension. 389 390 // Get definitions of __STDC_* predefined macros, if the compiler has 391 // not preincluded this header automatically. 392 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 393 // This file is part of the GNU C Library. 394 // 395 // The GNU C Library is free software; you can redistribute it and/or 396 // modify it under the terms of the GNU Lesser General Public 397 // License as published by the Free Software Foundation; either 398 // version 2.1 of the License, or (at your option) any later version. 399 // 400 // The GNU C Library is distributed in the hope that it will be useful, 401 // but WITHOUT ANY WARRANTY; without even the implied warranty of 402 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 403 // Lesser General Public License for more details. 404 // 405 // You should have received a copy of the GNU Lesser General Public 406 // License along with the GNU C Library; if not, see 407 // <https://www.gnu.org/licenses/>. 408 409 // This macro indicates that the installed library is the GNU C Library. 410 // For historic reasons the value now is 6 and this will stay from now 411 // on. The use of this variable is deprecated. Use __GLIBC__ and 412 // __GLIBC_MINOR__ now (see below) when you want to test for a specific 413 // GNU C library version and use the values in <gnu/lib-names.h> to get 414 // the sonames of the shared libraries. 415 416 // Major and minor version number of the GNU C library package. Use 417 // these macros to test for features in specific releases. 418 419 // This is here only because every header file already includes this one. 420 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 421 // This file is part of the GNU C Library. 422 // 423 // The GNU C Library is free software; you can redistribute it and/or 424 // modify it under the terms of the GNU Lesser General Public 425 // License as published by the Free Software Foundation; either 426 // version 2.1 of the License, or (at your option) any later version. 427 // 428 // The GNU C Library is distributed in the hope that it will be useful, 429 // but WITHOUT ANY WARRANTY; without even the implied warranty of 430 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 431 // Lesser General Public License for more details. 432 // 433 // You should have received a copy of the GNU Lesser General Public 434 // License along with the GNU C Library; if not, see 435 // <https://www.gnu.org/licenses/>. 436 437 // We are almost always included from features.h. 438 439 // The GNU libc does not support any K&R compilers or the traditional mode 440 // of ISO C compilers anymore. Check for some of the combinations not 441 // anymore supported. 442 443 // Some user header file might have defined this before. 444 445 // All functions, except those with callbacks or those that 446 // synchronize memory, are leaf functions. 447 448 // GCC can always grok prototypes. For C++ programs we add throw() 449 // to help it optimize the function calls. But this works only with 450 // gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions 451 // as non-throwing using a function attribute since programs can use 452 // the -fexceptions options for C code as well. 453 454 // Compilers that are not clang may object to 455 // #if defined __clang__ && __has_extension(...) 456 // even though they do not need to evaluate the right-hand side of the &&. 457 458 // These two macros are not used in glibc anymore. They are kept here 459 // only because some other projects expect the macros to be defined. 460 461 // For these things, GCC behaves the ANSI way normally, 462 // and the non-ANSI way under -traditional. 463 464 // This is not a typedef so `const __ptr_t' does the right thing. 465 466 // C++ needs to know that types and declarations are C, not C++. 467 468 // Fortify support. 469 470 // Support for flexible arrays. 471 // Headers that should use flexible arrays only if they're "real" 472 // (e.g. only if they won't affect sizeof()) should test 473 // #if __glibc_c99_flexarr_available. 474 475 // __asm__ ("xyz") is used throughout the headers to rename functions 476 // at the assembly language level. This is wrapped by the __REDIRECT 477 // macro, in order to support compilers that can do this some other 478 // way. When compilers don't support asm-names at all, we have to do 479 // preprocessor tricks instead (which don't have exactly the right 480 // semantics, but it's the best we can do). 481 // 482 // Example: 483 // int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); 484 485 // 486 // #elif __SOME_OTHER_COMPILER__ 487 // 488 // # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias) 489 490 // GCC has various useful declarations that can be made with the 491 // `__attribute__' syntax. All of the ways we use this do fine if 492 // they are omitted for compilers that don't understand it. 493 494 // At some point during the gcc 2.96 development the `malloc' attribute 495 // for functions was introduced. We don't want to use it unconditionally 496 // (although this would be possible) since it generates warnings. 497 498 // Tell the compiler which arguments to an allocation function 499 // indicate the size of the allocation. 500 501 // At some point during the gcc 2.96 development the `pure' attribute 502 // for functions was introduced. We don't want to use it unconditionally 503 // (although this would be possible) since it generates warnings. 504 505 // This declaration tells the compiler that the value is constant. 506 507 // At some point during the gcc 3.1 development the `used' attribute 508 // for functions was introduced. We don't want to use it unconditionally 509 // (although this would be possible) since it generates warnings. 510 511 // Since version 3.2, gcc allows marking deprecated functions. 512 513 // Since version 4.5, gcc also allows one to specify the message printed 514 // when a deprecated function is used. clang claims to be gcc 4.2, but 515 // may also support this feature. 516 517 // At some point during the gcc 2.8 development the `format_arg' attribute 518 // for functions was introduced. We don't want to use it unconditionally 519 // (although this would be possible) since it generates warnings. 520 // If several `format_arg' attributes are given for the same function, in 521 // gcc-3.0 and older, all but the last one are ignored. In newer gccs, 522 // all designated arguments are considered. 523 524 // At some point during the gcc 2.97 development the `strfmon' format 525 // attribute for functions was introduced. We don't want to use it 526 // unconditionally (although this would be possible) since it 527 // generates warnings. 528 529 // The nonull function attribute allows to mark pointer parameters which 530 // must not be NULL. 531 532 // If fortification mode, we warn about unused results of certain 533 // function calls which can lead to problems. 534 535 // Forces a function to be always inlined. 536 // The Linux kernel defines __always_inline in stddef.h (283d7573), and 537 // it conflicts with this definition. Therefore undefine it first to 538 // allow either header to be included first. 539 540 // Associate error messages with the source location of the call site rather 541 // than with the source location inside the function. 542 543 // GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 544 // inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ 545 // or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions 546 // older than 4.3 may define these macros and still not guarantee GNU inlining 547 // semantics. 548 // 549 // clang++ identifies itself as gcc-4.2, but has support for GNU inlining 550 // semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and 551 // __GNUC_GNU_INLINE__ macro definitions. 552 553 // GCC 4.3 and above allow passing all anonymous arguments of an 554 // __extern_always_inline function to some other vararg function. 555 556 // It is possible to compile containing GCC extensions even if GCC is 557 // run in pedantic mode if the uses are carefully marked using the 558 // `__extension__' keyword. But this is not generally available before 559 // version 2.8. 560 561 // __restrict is known in EGCS 1.2 and above. 562 563 // ISO C99 also allows to declare arrays as non-overlapping. The syntax is 564 // array_name[restrict] 565 // GCC 3.1 supports this. 566 567 // Describes a char array whose address can safely be passed as the first 568 // argument to strncpy and strncat, as the char array is not necessarily 569 // a NUL-terminated string. 570 571 // Undefine (also defined in libc-symbols.h). 572 // Copies attributes from the declaration or type referenced by 573 // the argument. 574 575 // Determine the wordsize from the preprocessor defines. 576 // 577 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 578 // This file is part of the GNU C Library. 579 // 580 // The GNU C Library is free software; you can redistribute it and/or 581 // modify it under the terms of the GNU Lesser General Public 582 // License as published by the Free Software Foundation; either 583 // version 2.1 of the License, or (at your option) any later version. 584 // 585 // The GNU C Library is distributed in the hope that it will be useful, 586 // but WITHOUT ANY WARRANTY; without even the implied warranty of 587 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 588 // Lesser General Public License for more details. 589 // 590 // You should have received a copy of the GNU Lesser General Public 591 // License along with the GNU C Library; if not, see 592 // <https://www.gnu.org/licenses/>. 593 594 // Properties of long double type. ldbl-128 version. 595 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 596 // This file is part of the GNU C Library. 597 // 598 // The GNU C Library is free software; you can redistribute it and/or 599 // modify it under the terms of the GNU Lesser General Public 600 // License published by the Free Software Foundation; either 601 // version 2.1 of the License, or (at your option) any later version. 602 // 603 // The GNU C Library is distributed in the hope that it will be useful, 604 // but WITHOUT ANY WARRANTY; without even the implied warranty of 605 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 606 // Lesser General Public License for more details. 607 // 608 // You should have received a copy of the GNU Lesser General Public 609 // License along with the GNU C Library; if not, see 610 // <https://www.gnu.org/licenses/>. 611 612 // long double is distinct from double, so there is nothing to 613 // define here. 614 615 // __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is 616 // intended for use in preprocessor macros. 617 // 618 // Note: MESSAGE must be a _single_ string; concatenation of string 619 // literals is not supported. 620 621 // Generic selection (ISO C11) is a C-only feature, available in GCC 622 // since version 4.9. Previous versions do not provide generic 623 // selection, even though they might set __STDC_VERSION__ to 201112L, 624 // when in -std=c11 mode. Thus, we must check for !defined __GNUC__ 625 // when testing __STDC_VERSION__ for generic selection support. 626 // On the other hand, Clang also defines __GNUC__, so a clang-specific 627 // check is required to enable the use of generic selection. 628 629 // If we don't have __REDIRECT, prototypes will be missing if 630 // __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. 631 632 // Decide whether we can define 'extern inline' functions in headers. 633 634 // This is here only because every header file already includes this one. 635 // Get the definitions of all the appropriate `__stub_FUNCTION' symbols. 636 // <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub 637 // that will always return failure (and set errno to ENOSYS). 638 // This file is automatically generated. 639 // This file selects the right generated file of `__stub_FUNCTION' macros 640 // based on the architecture being compiled for. 641 642 // Determine the wordsize from the preprocessor defines. 643 // 644 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 645 // This file is part of the GNU C Library. 646 // 647 // The GNU C Library is free software; you can redistribute it and/or 648 // modify it under the terms of the GNU Lesser General Public 649 // License as published by the Free Software Foundation; either 650 // version 2.1 of the License, or (at your option) any later version. 651 // 652 // The GNU C Library is distributed in the hope that it will be useful, 653 // but WITHOUT ANY WARRANTY; without even the implied warranty of 654 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 655 // Lesser General Public License for more details. 656 // 657 // You should have received a copy of the GNU Lesser General Public 658 // License along with the GNU C Library; if not, see 659 // <https://www.gnu.org/licenses/>. 660 661 // This file is automatically generated. 662 // It defines a symbol `__stub_FUNCTION' for each function 663 // in the C library which is a stub, meaning it will fail 664 // every time called, usually setting errno to ENOSYS. 665 666 // Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface. 667 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 668 // This file is part of the GNU C Library. 669 // 670 // The GNU C Library is free software; you can redistribute it and/or 671 // modify it under the terms of the GNU Lesser General Public 672 // License as published by the Free Software Foundation; either 673 // version 2.1 of the License, or (at your option) any later version. 674 // 675 // The GNU C Library is distributed in the hope that it will be useful, 676 // but WITHOUT ANY WARRANTY; without even the implied warranty of 677 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 678 // Lesser General Public License for more details. 679 // 680 // You should have received a copy of the GNU Lesser General Public 681 // License along with the GNU C Library; if not, see 682 // <https://www.gnu.org/licenses/>. 683 684 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 685 // This file is part of the GNU C Library. 686 // 687 // The GNU C Library is free software; you can redistribute it and/or 688 // modify it under the terms of the GNU Lesser General Public 689 // License as published by the Free Software Foundation; either 690 // version 2.1 of the License, or (at your option) any later version. 691 // 692 // The GNU C Library is distributed in the hope that it will be useful, 693 // but WITHOUT ANY WARRANTY; without even the implied warranty of 694 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 695 // Lesser General Public License for more details. 696 // 697 // You should have received a copy of the GNU Lesser General Public 698 // License along with the GNU C Library; if not, see 699 // <https://www.gnu.org/licenses/>. 700 701 // Get type definitions. 702 // bits/types.h -- definitions of __*_t types underlying *_t types. 703 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 704 // This file is part of the GNU C Library. 705 // 706 // The GNU C Library is free software; you can redistribute it and/or 707 // modify it under the terms of the GNU Lesser General Public 708 // License as published by the Free Software Foundation; either 709 // version 2.1 of the License, or (at your option) any later version. 710 // 711 // The GNU C Library is distributed in the hope that it will be useful, 712 // but WITHOUT ANY WARRANTY; without even the implied warranty of 713 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 714 // Lesser General Public License for more details. 715 // 716 // You should have received a copy of the GNU Lesser General Public 717 // License along with the GNU C Library; if not, see 718 // <https://www.gnu.org/licenses/>. 719 720 // Never include this file directly; use <sys/types.h> instead. 721 722 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 723 // This file is part of the GNU C Library. 724 // 725 // The GNU C Library is free software; you can redistribute it and/or 726 // modify it under the terms of the GNU Lesser General Public 727 // License as published by the Free Software Foundation; either 728 // version 2.1 of the License, or (at your option) any later version. 729 // 730 // The GNU C Library is distributed in the hope that it will be useful, 731 // but WITHOUT ANY WARRANTY; without even the implied warranty of 732 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 733 // Lesser General Public License for more details. 734 // 735 // You should have received a copy of the GNU Lesser General Public 736 // License along with the GNU C Library; if not, see 737 // <https://www.gnu.org/licenses/>. 738 739 // Determine the wordsize from the preprocessor defines. 740 // 741 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 742 // This file is part of the GNU C Library. 743 // 744 // The GNU C Library is free software; you can redistribute it and/or 745 // modify it under the terms of the GNU Lesser General Public 746 // License as published by the Free Software Foundation; either 747 // version 2.1 of the License, or (at your option) any later version. 748 // 749 // The GNU C Library is distributed in the hope that it will be useful, 750 // but WITHOUT ANY WARRANTY; without even the implied warranty of 751 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 752 // Lesser General Public License for more details. 753 // 754 // You should have received a copy of the GNU Lesser General Public 755 // License along with the GNU C Library; if not, see 756 // <https://www.gnu.org/licenses/>. 757 758 // Bit size of the time_t type at glibc build time, general case. 759 // Copyright (C) 2018-2020 Free Software Foundation, Inc. 760 // This file is part of the GNU C Library. 761 // 762 // The GNU C Library is free software; you can redistribute it and/or 763 // modify it under the terms of the GNU Lesser General Public 764 // License as published by the Free Software Foundation; either 765 // version 2.1 of the License, or (at your option) any later version. 766 // 767 // The GNU C Library is distributed in the hope that it will be useful, 768 // but WITHOUT ANY WARRANTY; without even the implied warranty of 769 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 770 // Lesser General Public License for more details. 771 // 772 // You should have received a copy of the GNU Lesser General Public 773 // License along with the GNU C Library; if not, see 774 // <https://www.gnu.org/licenses/>. 775 776 // Determine the wordsize from the preprocessor defines. 777 // 778 // Copyright (C) 2016-2020 Free Software Foundation, Inc. 779 // This file is part of the GNU C Library. 780 // 781 // The GNU C Library is free software; you can redistribute it and/or 782 // modify it under the terms of the GNU Lesser General Public 783 // License as published by the Free Software Foundation; either 784 // version 2.1 of the License, or (at your option) any later version. 785 // 786 // The GNU C Library is distributed in the hope that it will be useful, 787 // but WITHOUT ANY WARRANTY; without even the implied warranty of 788 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 789 // Lesser General Public License for more details. 790 // 791 // You should have received a copy of the GNU Lesser General Public 792 // License along with the GNU C Library; if not, see 793 // <https://www.gnu.org/licenses/>. 794 795 // Size in bits of the 'time_t' type of the default ABI. 796 797 // Convenience types. 798 type X__u_char = uint8 /* types.h:31:23 */ 799 type X__u_short = uint16 /* types.h:32:28 */ 800 type X__u_int = uint32 /* types.h:33:22 */ 801 type X__u_long = uint64 /* types.h:34:27 */ 802 803 // Fixed-size types, underlying types depend on word size and compiler. 804 type X__int8_t = int8 /* types.h:37:21 */ 805 type X__uint8_t = uint8 /* types.h:38:23 */ 806 type X__int16_t = int16 /* types.h:39:26 */ 807 type X__uint16_t = uint16 /* types.h:40:28 */ 808 type X__int32_t = int32 /* types.h:41:20 */ 809 type X__uint32_t = uint32 /* types.h:42:22 */ 810 type X__int64_t = int64 /* types.h:44:25 */ 811 type X__uint64_t = uint64 /* types.h:45:27 */ 812 813 // Smallest types with at least a given width. 814 type X__int_least8_t = X__int8_t /* types.h:52:18 */ 815 type X__uint_least8_t = X__uint8_t /* types.h:53:19 */ 816 type X__int_least16_t = X__int16_t /* types.h:54:19 */ 817 type X__uint_least16_t = X__uint16_t /* types.h:55:20 */ 818 type X__int_least32_t = X__int32_t /* types.h:56:19 */ 819 type X__uint_least32_t = X__uint32_t /* types.h:57:20 */ 820 type X__int_least64_t = X__int64_t /* types.h:58:19 */ 821 type X__uint_least64_t = X__uint64_t /* types.h:59:20 */ 822 823 // quad_t is also 64 bits. 824 type X__quad_t = int64 /* types.h:63:18 */ 825 type X__u_quad_t = uint64 /* types.h:64:27 */ 826 827 // Largest integral types. 828 type X__intmax_t = int64 /* types.h:72:18 */ 829 type X__uintmax_t = uint64 /* types.h:73:27 */ 830 831 // The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE 832 // macros for each of the OS types we define below. The definitions 833 // of those macros must use the following macros for underlying types. 834 // We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned 835 // variants of each of the following integer types on this machine. 836 // 837 // 16 -- "natural" 16-bit type (always short) 838 // 32 -- "natural" 32-bit type (always int) 839 // 64 -- "natural" 64-bit type (long or long long) 840 // LONG32 -- 32-bit type, traditionally long 841 // QUAD -- 64-bit type, traditionally long long 842 // WORD -- natural type of __WORDSIZE bits (int or long) 843 // LONGWORD -- type of __WORDSIZE bits, traditionally long 844 // 845 // We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the 846 // conventional uses of `long' or `long long' type modifiers match the 847 // types we define, even when a less-adorned type would be the same size. 848 // This matters for (somewhat) portably writing printf/scanf formats for 849 // these types, where using the appropriate l or ll format modifiers can 850 // make the typedefs and the formats match up across all GNU platforms. If 851 // we used `long' when it's 64 bits where `long long' is expected, then the 852 // compiler would warn about the formats not matching the argument types, 853 // and the programmer changing them to shut up the compiler would break the 854 // program's portability. 855 // 856 // Here we assume what is presently the case in all the GCC configurations 857 // we support: long long is always 64 bits, long is always word/address size, 858 // and int is always 32 bits. 859 860 // No need to mark the typedef with __extension__. 861 // bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI. 862 // Copyright (C) 2011-2020 Free Software Foundation, Inc. 863 // This file is part of the GNU C Library. 864 // Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011. 865 // 866 // The GNU C Library is free software; you can redistribute it and/or 867 // modify it under the terms of the GNU Lesser General Public 868 // License as published by the Free Software Foundation; either 869 // version 2.1 of the License, or (at your option) any later version. 870 // 871 // The GNU C Library is distributed in the hope that it will be useful, 872 // but WITHOUT ANY WARRANTY; without even the implied warranty of 873 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 874 // Lesser General Public License for more details. 875 // 876 // You should have received a copy of the GNU Lesser General Public 877 // License along with the GNU C Library. If not, see 878 // <https://www.gnu.org/licenses/>. 879 880 // See <bits/types.h> for the meaning of these macros. This file exists so 881 // that <bits/types.h> need not vary across different GNU platforms. 882 883 // Tell the libc code that off_t and off64_t are actually the same type 884 // for all ABI purposes, even if possibly expressed as different base types 885 // for C type-checking purposes. 886 887 // Same for ino_t and ino64_t. 888 889 // And for __rlim_t and __rlim64_t. 890 891 // And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. 892 // Number of descriptors that can fit in an `fd_set'. 893 894 // bits/time64.h -- underlying types for __time64_t. Generic version. 895 // Copyright (C) 2018-2020 Free Software Foundation, Inc. 896 // This file is part of the GNU C Library. 897 // 898 // The GNU C Library is free software; you can redistribute it and/or 899 // modify it under the terms of the GNU Lesser General Public 900 // License as published by the Free Software Foundation; either 901 // version 2.1 of the License, or (at your option) any later version. 902 // 903 // The GNU C Library is distributed in the hope that it will be useful, 904 // but WITHOUT ANY WARRANTY; without even the implied warranty of 905 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 906 // Lesser General Public License for more details. 907 // 908 // You should have received a copy of the GNU Lesser General Public 909 // License along with the GNU C Library; if not, see 910 // <https://www.gnu.org/licenses/>. 911 912 // Define __TIME64_T_TYPE so that it is always a 64-bit type. 913 914 // If we already have 64-bit time type then use it. 915 916 type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers. 917 type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications. 918 type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications. 919 type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers. 920 type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS). 921 type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks. 922 type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts. 923 type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets. 924 type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS). 925 type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications. 926 type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs. 927 type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts. 928 type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement. 929 type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS). 930 type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs. 931 type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch. 932 type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds. 933 type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds. 934 935 type X__daddr_t = int32 /* types.h:164:27 */ // The type of a disk address. 936 type X__key_t = int32 /* types.h:165:25 */ // Type of an IPC key. 937 938 // Clock ID used in clock and timer functions. 939 type X__clockid_t = int32 /* types.h:168:29 */ 940 941 // Timer ID returned by `timer_create'. 942 type X__timer_t = uintptr /* types.h:171:12 */ 943 944 // Type to represent block size. 945 type X__blksize_t = int32 /* types.h:174:29 */ 946 947 // Types from the Large File Support interface. 948 949 // Type to count number of disk blocks. 950 type X__blkcnt_t = int64 /* types.h:179:28 */ 951 type X__blkcnt64_t = int64 /* types.h:180:30 */ 952 953 // Type to count file system blocks. 954 type X__fsblkcnt_t = uint64 /* types.h:183:30 */ 955 type X__fsblkcnt64_t = uint64 /* types.h:184:32 */ 956 957 // Type to count file system nodes. 958 type X__fsfilcnt_t = uint64 /* types.h:187:30 */ 959 type X__fsfilcnt64_t = uint64 /* types.h:188:32 */ 960 961 // Type of miscellaneous file system fields. 962 type X__fsword_t = int64 /* types.h:191:28 */ 963 964 type X__ssize_t = int64 /* types.h:193:27 */ // Type of a byte count, or error. 965 966 // Signed long type used in system calls. 967 type X__syscall_slong_t = int64 /* types.h:196:33 */ 968 // Unsigned long type used in system calls. 969 type X__syscall_ulong_t = uint64 /* types.h:198:33 */ 970 971 // These few don't really vary by system, they always correspond 972 // 973 // to one of the other defined types. 974 type X__loff_t = X__off64_t /* types.h:202:19 */ // Type of file sizes and offsets (LFS). 975 type X__caddr_t = uintptr /* types.h:203:14 */ 976 977 // Duplicates info from stdint.h but this is used in unistd.h. 978 type X__intptr_t = int64 /* types.h:206:25 */ 979 980 // Duplicate info from sys/socket.h. 981 type X__socklen_t = uint32 /* types.h:209:23 */ 982 983 // C99: An integer type that can be accessed as an atomic entity, 984 // 985 // even in the presence of asynchronous interrupts. 986 // It is not currently necessary for this to be machine-specific. 987 type X__sig_atomic_t = int32 /* types.h:214:13 */ 988 989 // Wide character type. 990 // Locale-writers should change this as necessary to 991 // be big enough to hold unique values not between 0 and 127, 992 // and not (wchar_t) -1, for each defined multibyte character. 993 994 // Define this type if we are doing the whole job, 995 // or if we want this type in particular. 996 997 // A null pointer constant. 998 999 // bits/types.h -- definitions of __*_t types underlying *_t types. 1000 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1001 // This file is part of the GNU C Library. 1002 // 1003 // The GNU C Library is free software; you can redistribute it and/or 1004 // modify it under the terms of the GNU Lesser General Public 1005 // License as published by the Free Software Foundation; either 1006 // version 2.1 of the License, or (at your option) any later version. 1007 // 1008 // The GNU C Library is distributed in the hope that it will be useful, 1009 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1011 // Lesser General Public License for more details. 1012 // 1013 // You should have received a copy of the GNU Lesser General Public 1014 // License along with the GNU C Library; if not, see 1015 // <https://www.gnu.org/licenses/>. 1016 1017 // Never include this file directly; use <sys/types.h> instead. 1018 1019 // Returned by `time'. 1020 type Time_t = X__time_t /* time_t.h:7:18 */ 1021 1022 // NB: Include guard matches what <linux/time.h> uses. 1023 1024 // bits/types.h -- definitions of __*_t types underlying *_t types. 1025 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1026 // This file is part of the GNU C Library. 1027 // 1028 // The GNU C Library is free software; you can redistribute it and/or 1029 // modify it under the terms of the GNU Lesser General Public 1030 // License as published by the Free Software Foundation; either 1031 // version 2.1 of the License, or (at your option) any later version. 1032 // 1033 // The GNU C Library is distributed in the hope that it will be useful, 1034 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1035 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1036 // Lesser General Public License for more details. 1037 // 1038 // You should have received a copy of the GNU Lesser General Public 1039 // License along with the GNU C Library; if not, see 1040 // <https://www.gnu.org/licenses/>. 1041 1042 // Never include this file directly; use <sys/types.h> instead. 1043 1044 // Endian macros for string.h functions 1045 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1046 // This file is part of the GNU C Library. 1047 // 1048 // The GNU C Library is free software; you can redistribute it and/or 1049 // modify it under the terms of the GNU Lesser General Public 1050 // License as published by the Free Software Foundation; either 1051 // version 2.1 of the License, or (at your option) any later version. 1052 // 1053 // The GNU C Library is distributed in the hope that it will be useful, 1054 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1055 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1056 // Lesser General Public License for more details. 1057 // 1058 // You should have received a copy of the GNU Lesser General Public 1059 // License along with the GNU C Library; if not, see 1060 // <http://www.gnu.org/licenses/>. 1061 1062 // Definitions for byte order, according to significance of bytes, 1063 // from low addresses to high addresses. The value is what you get by 1064 // putting '4' in the most significant byte, '3' in the second most 1065 // significant byte, '2' in the second least significant byte, and '1' 1066 // in the least significant byte, and then writing down one digit for 1067 // each byte, starting with the byte at the lowest address at the left, 1068 // and proceeding to the byte with the highest address at the right. 1069 1070 // This file defines `__BYTE_ORDER' for the particular machine. 1071 1072 // AArch64 has selectable endianness. 1073 1074 // Some machines may need to use a different endianness for floating point 1075 // values. 1076 1077 // POSIX.1b structure for a time value. This is like a `struct timeval' but 1078 // 1079 // has nanoseconds instead of microseconds. 1080 type Timespec = struct { 1081 Ftv_sec X__time_t 1082 Ftv_nsec X__syscall_slong_t 1083 } /* struct_timespec.h:10:1 */ 1084 1085 type Pid_t = X__pid_t /* sched.h:38:17 */ 1086 1087 // Get system specific constant and data structure definitions. 1088 // Definitions of constants and data structure for POSIX 1003.1b-1993 1089 // scheduling interface. 1090 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 1091 // This file is part of the GNU C Library. 1092 // 1093 // The GNU C Library is free software; you can redistribute it and/or 1094 // modify it under the terms of the GNU Lesser General Public 1095 // License as published by the Free Software Foundation; either 1096 // version 2.1 of the License, or (at your option) any later version. 1097 // 1098 // The GNU C Library is distributed in the hope that it will be useful, 1099 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1100 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1101 // Lesser General Public License for more details. 1102 // 1103 // You should have received a copy of the GNU Lesser General Public 1104 // License along with the GNU C Library; if not, see 1105 // <https://www.gnu.org/licenses/>. 1106 1107 // Scheduling algorithms. 1108 1109 // Sched parameter structure. Generic version. 1110 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 1111 // This file is part of the GNU C Library. 1112 // 1113 // The GNU C Library is free software; you can redistribute it and/or 1114 // modify it under the terms of the GNU Lesser General Public 1115 // License as published by the Free Software Foundation; either 1116 // version 2.1 of the License, or (at your option) any later version. 1117 // 1118 // The GNU C Library is distributed in the hope that it will be useful, 1119 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1120 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1121 // Lesser General Public License for more details. 1122 // 1123 // You should have received a copy of the GNU Lesser General Public 1124 // License along with the GNU C Library; if not, see 1125 // <https://www.gnu.org/licenses/>. 1126 1127 // Data structure to describe a process' schedulability. 1128 type Sched_param = struct{ Fsched_priority int32 } /* struct_sched_param.h:23:1 */ 1129 1130 // Definition of the cpu_set_t structure used by the POSIX 1003.1b-1993 1131 // scheduling interface. 1132 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 1133 // This file is part of the GNU C Library. 1134 // 1135 // The GNU C Library is free software; you can redistribute it and/or 1136 // modify it under the terms of the GNU Lesser General Public 1137 // License as published by the Free Software Foundation; either 1138 // version 2.1 of the License, or (at your option) any later version. 1139 // 1140 // The GNU C Library is distributed in the hope that it will be useful, 1141 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1142 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1143 // Lesser General Public License for more details. 1144 // 1145 // You should have received a copy of the GNU Lesser General Public 1146 // License along with the GNU C Library; if not, see 1147 // <https://www.gnu.org/licenses/>. 1148 1149 // Size definition for CPU sets. 1150 1151 // Type for array elements in 'cpu_set_t'. 1152 type X__cpu_mask = uint64 /* cpu-set.h:32:25 */ 1153 1154 // Basic access functions. 1155 1156 // Data structure to describe CPU mask. 1157 type Cpu_set_t = struct{ F__bits [16]X__cpu_mask } /* cpu-set.h:42:3 */ 1158 1159 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1160 // This file is part of the GNU C Library. 1161 // 1162 // The GNU C Library is free software; you can redistribute it and/or 1163 // modify it under the terms of the GNU Lesser General Public 1164 // License as published by the Free Software Foundation; either 1165 // version 2.1 of the License, or (at your option) any later version. 1166 // 1167 // The GNU C Library is distributed in the hope that it will be useful, 1168 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1169 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1170 // Lesser General Public License for more details. 1171 // 1172 // You should have received a copy of the GNU Lesser General Public 1173 // License along with the GNU C Library; if not, see 1174 // <https://www.gnu.org/licenses/>. 1175 1176 // ISO C99 Standard: 7.23 Date and time <time.h> 1177 1178 // Copyright (C) 1991-2020 Free Software Foundation, Inc. 1179 // This file is part of the GNU C Library. 1180 // 1181 // The GNU C Library is free software; you can redistribute it and/or 1182 // modify it under the terms of the GNU Lesser General Public 1183 // License as published by the Free Software Foundation; either 1184 // version 2.1 of the License, or (at your option) any later version. 1185 // 1186 // The GNU C Library is distributed in the hope that it will be useful, 1187 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1188 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1189 // Lesser General Public License for more details. 1190 // 1191 // You should have received a copy of the GNU Lesser General Public 1192 // License along with the GNU C Library; if not, see 1193 // <https://www.gnu.org/licenses/>. 1194 1195 // Copyright (C) 1989-2020 Free Software Foundation, Inc. 1196 // 1197 // This file is part of GCC. 1198 // 1199 // GCC is free software; you can redistribute it and/or modify 1200 // it under the terms of the GNU General Public License as published by 1201 // the Free Software Foundation; either version 3, or (at your option) 1202 // any later version. 1203 // 1204 // GCC is distributed in the hope that it will be useful, 1205 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1206 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1207 // GNU General Public License for more details. 1208 // 1209 // Under Section 7 of GPL version 3, you are granted additional 1210 // permissions described in the GCC Runtime Library Exception, version 1211 // 3.1, as published by the Free Software Foundation. 1212 // 1213 // You should have received a copy of the GNU General Public License and 1214 // a copy of the GCC Runtime Library Exception along with this program; 1215 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 1216 // <http://www.gnu.org/licenses/>. 1217 1218 // ISO C Standard: 7.17 Common definitions <stddef.h> 1219 1220 // Any one of these symbols __need_* means that GNU libc 1221 // wants us just to define one data type. So don't define 1222 // the symbols that indicate this file's entire job has been done. 1223 1224 // This avoids lossage on SunOS but only if stdtypes.h comes first. 1225 // There's no way to win with the other order! Sun lossage. 1226 1227 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 1228 // Just ignore it. 1229 1230 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 1231 // _TYPE_size_t which will typedef size_t. fixincludes patched the 1232 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 1233 // not defined, and so that defining this macro defines _GCC_SIZE_T. 1234 // If we find that the macros are still defined at this point, we must 1235 // invoke them so that the type is defined as expected. 1236 1237 // In case nobody has defined these types, but we aren't running under 1238 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 1239 // __WCHAR_TYPE__ have reasonable values. This can happen if the 1240 // parts of GCC is compiled by an older compiler, that actually 1241 // include gstddef.h, such as collect2. 1242 1243 // Signed type of difference of two pointers. 1244 1245 // Define this type if we are doing the whole job, 1246 // or if we want this type in particular. 1247 1248 // Unsigned type of `sizeof' something. 1249 1250 // Define this type if we are doing the whole job, 1251 // or if we want this type in particular. 1252 1253 // Wide character type. 1254 // Locale-writers should change this as necessary to 1255 // be big enough to hold unique values not between 0 and 127, 1256 // and not (wchar_t) -1, for each defined multibyte character. 1257 1258 // Define this type if we are doing the whole job, 1259 // or if we want this type in particular. 1260 1261 // A null pointer constant. 1262 1263 // This defines CLOCKS_PER_SEC, which is the number of processor clock 1264 // ticks per second, and possibly a number of other constants. 1265 // System-dependent timing definitions. Linux version. 1266 // Copyright (C) 1996-2020 Free Software Foundation, Inc. 1267 // This file is part of the GNU C Library. 1268 // 1269 // The GNU C Library is free software; you can redistribute it and/or 1270 // modify it under the terms of the GNU Lesser General Public 1271 // License as published by the Free Software Foundation; either 1272 // version 2.1 of the License, or (at your option) any later version. 1273 // 1274 // The GNU C Library is distributed in the hope that it will be useful, 1275 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1276 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1277 // Lesser General Public License for more details. 1278 // 1279 // You should have received a copy of the GNU Lesser General Public 1280 // License along with the GNU C Library; if not, see 1281 // <https://www.gnu.org/licenses/>. 1282 1283 // Never include this file directly; use <time.h> instead. 1284 1285 // bits/types.h -- definitions of __*_t types underlying *_t types. 1286 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1287 // This file is part of the GNU C Library. 1288 // 1289 // The GNU C Library is free software; you can redistribute it and/or 1290 // modify it under the terms of the GNU Lesser General Public 1291 // License as published by the Free Software Foundation; either 1292 // version 2.1 of the License, or (at your option) any later version. 1293 // 1294 // The GNU C Library is distributed in the hope that it will be useful, 1295 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1296 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1297 // Lesser General Public License for more details. 1298 // 1299 // You should have received a copy of the GNU Lesser General Public 1300 // License along with the GNU C Library; if not, see 1301 // <https://www.gnu.org/licenses/>. 1302 1303 // Never include this file directly; use <sys/types.h> instead. 1304 1305 // ISO/IEC 9899:1999 7.23.1: Components of time 1306 // The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is 1307 // the number per second of the value returned by the `clock' function. 1308 // CAE XSH, Issue 4, Version 2: <time.h> 1309 // The value of CLOCKS_PER_SEC is required to be 1 million on all 1310 // XSI-conformant systems. 1311 1312 // Identifier for system-wide realtime clock. 1313 // Monotonic system-wide clock. 1314 // High-resolution timer from the CPU. 1315 // Thread-specific CPU-time clock. 1316 // Monotonic system-wide clock, not adjusted for frequency scaling. 1317 // Identifier for system-wide realtime clock, updated only on ticks. 1318 // Monotonic system-wide clock, updated only on ticks. 1319 // Monotonic system-wide clock that includes time spent in suspension. 1320 // Like CLOCK_REALTIME but also wakes suspended system. 1321 // Like CLOCK_BOOTTIME but also wakes suspended system. 1322 // Like CLOCK_REALTIME but in International Atomic Time. 1323 1324 // Flag to indicate time is absolute. 1325 1326 // Many of the typedefs and structs whose official home is this header 1327 // may also need to be defined by other headers. 1328 1329 // bits/types.h -- definitions of __*_t types underlying *_t types. 1330 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1331 // This file is part of the GNU C Library. 1332 // 1333 // The GNU C Library is free software; you can redistribute it and/or 1334 // modify it under the terms of the GNU Lesser General Public 1335 // License as published by the Free Software Foundation; either 1336 // version 2.1 of the License, or (at your option) any later version. 1337 // 1338 // The GNU C Library is distributed in the hope that it will be useful, 1339 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1340 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1341 // Lesser General Public License for more details. 1342 // 1343 // You should have received a copy of the GNU Lesser General Public 1344 // License along with the GNU C Library; if not, see 1345 // <https://www.gnu.org/licenses/>. 1346 1347 // Never include this file directly; use <sys/types.h> instead. 1348 1349 // Returned by `clock'. 1350 type Clock_t = X__clock_t /* clock_t.h:7:19 */ 1351 1352 // bits/types.h -- definitions of __*_t types underlying *_t types. 1353 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1354 // This file is part of the GNU C Library. 1355 // 1356 // The GNU C Library is free software; you can redistribute it and/or 1357 // modify it under the terms of the GNU Lesser General Public 1358 // License as published by the Free Software Foundation; either 1359 // version 2.1 of the License, or (at your option) any later version. 1360 // 1361 // The GNU C Library is distributed in the hope that it will be useful, 1362 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1363 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1364 // Lesser General Public License for more details. 1365 // 1366 // You should have received a copy of the GNU Lesser General Public 1367 // License along with the GNU C Library; if not, see 1368 // <https://www.gnu.org/licenses/>. 1369 1370 // Never include this file directly; use <sys/types.h> instead. 1371 1372 // ISO C `broken-down time' structure. 1373 type Tm = struct { 1374 Ftm_sec int32 1375 Ftm_min int32 1376 Ftm_hour int32 1377 Ftm_mday int32 1378 Ftm_mon int32 1379 Ftm_year int32 1380 Ftm_wday int32 1381 Ftm_yday int32 1382 Ftm_isdst int32 1383 F__ccgo_pad1 [4]byte 1384 Ftm_gmtoff int64 1385 Ftm_zone uintptr 1386 } /* struct_tm.h:7:1 */ 1387 1388 // NB: Include guard matches what <linux/time.h> uses. 1389 1390 // bits/types.h -- definitions of __*_t types underlying *_t types. 1391 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1392 // This file is part of the GNU C Library. 1393 // 1394 // The GNU C Library is free software; you can redistribute it and/or 1395 // modify it under the terms of the GNU Lesser General Public 1396 // License as published by the Free Software Foundation; either 1397 // version 2.1 of the License, or (at your option) any later version. 1398 // 1399 // The GNU C Library is distributed in the hope that it will be useful, 1400 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1401 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1402 // Lesser General Public License for more details. 1403 // 1404 // You should have received a copy of the GNU Lesser General Public 1405 // License along with the GNU C Library; if not, see 1406 // <https://www.gnu.org/licenses/>. 1407 1408 // Never include this file directly; use <sys/types.h> instead. 1409 1410 // Clock ID used in clock and timer functions. 1411 type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */ 1412 1413 // bits/types.h -- definitions of __*_t types underlying *_t types. 1414 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1415 // This file is part of the GNU C Library. 1416 // 1417 // The GNU C Library is free software; you can redistribute it and/or 1418 // modify it under the terms of the GNU Lesser General Public 1419 // License as published by the Free Software Foundation; either 1420 // version 2.1 of the License, or (at your option) any later version. 1421 // 1422 // The GNU C Library is distributed in the hope that it will be useful, 1423 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1424 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1425 // Lesser General Public License for more details. 1426 // 1427 // You should have received a copy of the GNU Lesser General Public 1428 // License along with the GNU C Library; if not, see 1429 // <https://www.gnu.org/licenses/>. 1430 1431 // Never include this file directly; use <sys/types.h> instead. 1432 1433 // Timer ID returned by `timer_create'. 1434 type Timer_t = X__timer_t /* timer_t.h:7:19 */ 1435 1436 // bits/types.h -- definitions of __*_t types underlying *_t types. 1437 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1438 // This file is part of the GNU C Library. 1439 // 1440 // The GNU C Library is free software; you can redistribute it and/or 1441 // modify it under the terms of the GNU Lesser General Public 1442 // License as published by the Free Software Foundation; either 1443 // version 2.1 of the License, or (at your option) any later version. 1444 // 1445 // The GNU C Library is distributed in the hope that it will be useful, 1446 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1447 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1448 // Lesser General Public License for more details. 1449 // 1450 // You should have received a copy of the GNU Lesser General Public 1451 // License along with the GNU C Library; if not, see 1452 // <https://www.gnu.org/licenses/>. 1453 1454 // Never include this file directly; use <sys/types.h> instead. 1455 1456 // NB: Include guard matches what <linux/time.h> uses. 1457 1458 // POSIX.1b structure for timer start values and intervals. 1459 type Itimerspec = struct { 1460 Fit_interval struct { 1461 Ftv_sec X__time_t 1462 Ftv_nsec X__syscall_slong_t 1463 } 1464 Fit_value struct { 1465 Ftv_sec X__time_t 1466 Ftv_nsec X__syscall_slong_t 1467 } 1468 } /* struct_itimerspec.h:8:1 */ 1469 1470 // Definition of locale_t. 1471 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1472 // This file is part of the GNU C Library. 1473 // 1474 // The GNU C Library is free software; you can redistribute it and/or 1475 // modify it under the terms of the GNU Lesser General Public 1476 // License as published by the Free Software Foundation; either 1477 // version 2.1 of the License, or (at your option) any later version. 1478 // 1479 // The GNU C Library is distributed in the hope that it will be useful, 1480 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1481 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1482 // Lesser General Public License for more details. 1483 // 1484 // You should have received a copy of the GNU Lesser General Public 1485 // License along with the GNU C Library; if not, see 1486 // <https://www.gnu.org/licenses/>. 1487 1488 // Definition of struct __locale_struct and __locale_t. 1489 // Copyright (C) 1997-2020 Free Software Foundation, Inc. 1490 // This file is part of the GNU C Library. 1491 // Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. 1492 // 1493 // The GNU C Library is free software; you can redistribute it and/or 1494 // modify it under the terms of the GNU Lesser General Public 1495 // License as published by the Free Software Foundation; either 1496 // version 2.1 of the License, or (at your option) any later version. 1497 // 1498 // The GNU C Library is distributed in the hope that it will be useful, 1499 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1500 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1501 // Lesser General Public License for more details. 1502 // 1503 // You should have received a copy of the GNU Lesser General Public 1504 // License along with the GNU C Library; if not, see 1505 // <https://www.gnu.org/licenses/>. 1506 1507 // POSIX.1-2008: the locale_t type, representing a locale context 1508 // (implementation-namespace version). This type should be treated 1509 // as opaque by applications; some details are exposed for the sake of 1510 // efficiency in e.g. ctype functions. 1511 1512 type X__locale_struct = struct { 1513 F__locales [13]uintptr 1514 F__ctype_b uintptr 1515 F__ctype_tolower uintptr 1516 F__ctype_toupper uintptr 1517 F__names [13]uintptr 1518 } /* __locale_t.h:28:1 */ 1519 1520 type X__locale_t = uintptr /* __locale_t.h:42:32 */ 1521 1522 type Locale_t = X__locale_t /* locale_t.h:24:20 */ 1523 1524 // Endian macros for string.h functions 1525 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1526 // This file is part of the GNU C Library. 1527 // 1528 // The GNU C Library is free software; you can redistribute it and/or 1529 // modify it under the terms of the GNU Lesser General Public 1530 // License as published by the Free Software Foundation; either 1531 // version 2.1 of the License, or (at your option) any later version. 1532 // 1533 // The GNU C Library is distributed in the hope that it will be useful, 1534 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1535 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1536 // Lesser General Public License for more details. 1537 // 1538 // You should have received a copy of the GNU Lesser General Public 1539 // License along with the GNU C Library; if not, see 1540 // <http://www.gnu.org/licenses/>. 1541 1542 // Declaration of common pthread types for all architectures. 1543 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1544 // This file is part of the GNU C Library. 1545 // 1546 // The GNU C Library is free software; you can redistribute it and/or 1547 // modify it under the terms of the GNU Lesser General Public 1548 // License as published by the Free Software Foundation; either 1549 // version 2.1 of the License, or (at your option) any later version. 1550 // 1551 // The GNU C Library is distributed in the hope that it will be useful, 1552 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1553 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1554 // Lesser General Public License for more details. 1555 // 1556 // You should have received a copy of the GNU Lesser General Public 1557 // License along with the GNU C Library; if not, see 1558 // <https://www.gnu.org/licenses/>. 1559 1560 // For internal mutex and condition variable definitions. 1561 // Common threading primitives definitions for both POSIX and C11. 1562 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1563 // This file is part of the GNU C Library. 1564 // 1565 // The GNU C Library is free software; you can redistribute it and/or 1566 // modify it under the terms of the GNU Lesser General Public 1567 // License as published by the Free Software Foundation; either 1568 // version 2.1 of the License, or (at your option) any later version. 1569 // 1570 // The GNU C Library is distributed in the hope that it will be useful, 1571 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1572 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1573 // Lesser General Public License for more details. 1574 // 1575 // You should have received a copy of the GNU Lesser General Public 1576 // License along with the GNU C Library; if not, see 1577 // <https://www.gnu.org/licenses/>. 1578 1579 // Arch-specific definitions. Each architecture must define the following 1580 // macros to define the expected sizes of pthread data types: 1581 // 1582 // __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. 1583 // __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. 1584 // __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. 1585 // __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. 1586 // __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. 1587 // __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. 1588 // __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. 1589 // __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. 1590 // __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. 1591 // 1592 // The additional macro defines any constraint for the lock alignment 1593 // inside the thread structures: 1594 // 1595 // __LOCK_ALIGNMENT - for internal lock/futex usage. 1596 // 1597 // Same idea but for the once locking primitive: 1598 // 1599 // __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. 1600 1601 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1602 // 1603 // This file is part of the GNU C Library. 1604 // 1605 // The GNU C Library is free software; you can redistribute it and/or 1606 // modify it under the terms of the GNU Lesser General Public 1607 // License as published by the Free Software Foundation; either 1608 // version 2.1 of the License, or (at your option) any later version. 1609 // 1610 // The GNU C Library is distributed in the hope that it will be useful, 1611 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1612 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1613 // Lesser General Public License for more details. 1614 // 1615 // You should have received a copy of the GNU Lesser General Public 1616 // License along with the GNU C Library; if not, see 1617 // <https://www.gnu.org/licenses/>. 1618 1619 // Endian macros for string.h functions 1620 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1621 // This file is part of the GNU C Library. 1622 // 1623 // The GNU C Library is free software; you can redistribute it and/or 1624 // modify it under the terms of the GNU Lesser General Public 1625 // License as published by the Free Software Foundation; either 1626 // version 2.1 of the License, or (at your option) any later version. 1627 // 1628 // The GNU C Library is distributed in the hope that it will be useful, 1629 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1630 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1631 // Lesser General Public License for more details. 1632 // 1633 // You should have received a copy of the GNU Lesser General Public 1634 // License along with the GNU C Library; if not, see 1635 // <http://www.gnu.org/licenses/>. 1636 1637 // Common definition of pthread_mutex_t. 1638 1639 type X__pthread_internal_list = struct { 1640 F__prev uintptr 1641 F__next uintptr 1642 } /* thread-shared-types.h:49:9 */ 1643 1644 // Endian macros for string.h functions 1645 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1646 // This file is part of the GNU C Library. 1647 // 1648 // The GNU C Library is free software; you can redistribute it and/or 1649 // modify it under the terms of the GNU Lesser General Public 1650 // License as published by the Free Software Foundation; either 1651 // version 2.1 of the License, or (at your option) any later version. 1652 // 1653 // The GNU C Library is distributed in the hope that it will be useful, 1654 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1655 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1656 // Lesser General Public License for more details. 1657 // 1658 // You should have received a copy of the GNU Lesser General Public 1659 // License along with the GNU C Library; if not, see 1660 // <http://www.gnu.org/licenses/>. 1661 1662 // Declaration of common pthread types for all architectures. 1663 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1664 // This file is part of the GNU C Library. 1665 // 1666 // The GNU C Library is free software; you can redistribute it and/or 1667 // modify it under the terms of the GNU Lesser General Public 1668 // License as published by the Free Software Foundation; either 1669 // version 2.1 of the License, or (at your option) any later version. 1670 // 1671 // The GNU C Library is distributed in the hope that it will be useful, 1672 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1673 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1674 // Lesser General Public License for more details. 1675 // 1676 // You should have received a copy of the GNU Lesser General Public 1677 // License along with the GNU C Library; if not, see 1678 // <https://www.gnu.org/licenses/>. 1679 1680 // For internal mutex and condition variable definitions. 1681 // Common threading primitives definitions for both POSIX and C11. 1682 // Copyright (C) 2017-2020 Free Software Foundation, Inc. 1683 // This file is part of the GNU C Library. 1684 // 1685 // The GNU C Library is free software; you can redistribute it and/or 1686 // modify it under the terms of the GNU Lesser General Public 1687 // License as published by the Free Software Foundation; either 1688 // version 2.1 of the License, or (at your option) any later version. 1689 // 1690 // The GNU C Library is distributed in the hope that it will be useful, 1691 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1692 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1693 // Lesser General Public License for more details. 1694 // 1695 // You should have received a copy of the GNU Lesser General Public 1696 // License along with the GNU C Library; if not, see 1697 // <https://www.gnu.org/licenses/>. 1698 1699 // Arch-specific definitions. Each architecture must define the following 1700 // macros to define the expected sizes of pthread data types: 1701 // 1702 // __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. 1703 // __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. 1704 // __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. 1705 // __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. 1706 // __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. 1707 // __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. 1708 // __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. 1709 // __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. 1710 // __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. 1711 // 1712 // The additional macro defines any constraint for the lock alignment 1713 // inside the thread structures: 1714 // 1715 // __LOCK_ALIGNMENT - for internal lock/futex usage. 1716 // 1717 // Same idea but for the once locking primitive: 1718 // 1719 // __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. 1720 1721 // Copyright (C) 2002-2020 Free Software Foundation, Inc. 1722 // 1723 // This file is part of the GNU C Library. 1724 // 1725 // The GNU C Library is free software; you can redistribute it and/or 1726 // modify it under the terms of the GNU Lesser General Public 1727 // License as published by the Free Software Foundation; either 1728 // version 2.1 of the License, or (at your option) any later version. 1729 // 1730 // The GNU C Library is distributed in the hope that it will be useful, 1731 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1732 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1733 // Lesser General Public License for more details. 1734 // 1735 // You should have received a copy of the GNU Lesser General Public 1736 // License along with the GNU C Library; if not, see 1737 // <https://www.gnu.org/licenses/>. 1738 1739 // Endian macros for string.h functions 1740 // Copyright (C) 1992-2020 Free Software Foundation, Inc. 1741 // This file is part of the GNU C Library. 1742 // 1743 // The GNU C Library is free software; you can redistribute it and/or 1744 // modify it under the terms of the GNU Lesser General Public 1745 // License as published by the Free Software Foundation; either 1746 // version 2.1 of the License, or (at your option) any later version. 1747 // 1748 // The GNU C Library is distributed in the hope that it will be useful, 1749 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1750 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1751 // Lesser General Public License for more details. 1752 // 1753 // You should have received a copy of the GNU Lesser General Public 1754 // License along with the GNU C Library; if not, see 1755 // <http://www.gnu.org/licenses/>. 1756 1757 // Common definition of pthread_mutex_t. 1758 1759 type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */ 1760 1761 type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */ 1762 1763 type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */ 1764 1765 // Arch-specific mutex definitions. A generic implementation is provided 1766 // by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture 1767 // can override it by defining: 1768 // 1769 // 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t 1770 // definition). It should contains at least the internal members 1771 // defined in the generic version. 1772 // 1773 // 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with 1774 // atomic operations. 1775 // 1776 // 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization. 1777 // It should initialize the mutex internal flag. 1778 1779 // Default mutex implementation struct definitions. 1780 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 1781 // This file is part of the GNU C Library. 1782 // 1783 // The GNU C Library is free software; you can redistribute it and/or 1784 // modify it under the terms of the GNU Lesser General Public 1785 // License as published by the Free Software Foundation; either 1786 // version 2.1 of the License, or (at your option) any later version. 1787 // 1788 // The GNU C Library is distributed in the hope that it will be useful, 1789 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1790 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1791 // Lesser General Public License for more details. 1792 // 1793 // You should have received a copy of the GNU Lesser General Public 1794 // License along with the GNU C Library; if not, see 1795 // <http://www.gnu.org/licenses/>. 1796 1797 // Generic struct for both POSIX and C11 mutexes. New ports are expected 1798 // to use the default layout, however architecture can redefine it to 1799 // add arch-specific extension (such as lock-elision). The struct have 1800 // a size of 32 bytes on LP32 and 40 bytes on LP64 architectures. 1801 1802 type X__pthread_mutex_s = struct { 1803 F__lock int32 1804 F__count uint32 1805 F__owner int32 1806 F__nusers uint32 1807 F__kind int32 1808 F__spins int32 1809 F__list X__pthread_list_t 1810 } /* struct_mutex.h:27:1 */ 1811 1812 // Arch-sepecific read-write lock definitions. A generic implementation is 1813 // provided by struct_rwlock.h. If required, an architecture can override it 1814 // by defining: 1815 // 1816 // 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition). 1817 // It should contain at least the internal members defined in the 1818 // generic version. 1819 // 1820 // 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization. 1821 // It should initialize the rwlock internal type. 1822 1823 // AArch64 internal rwlock struct definitions. 1824 // Copyright (C) 2019-2020 Free Software Foundation, Inc. 1825 // 1826 // This file is part of the GNU C Library. 1827 // 1828 // The GNU C Library is free software; you can redistribute it and/or 1829 // modify it under the terms of the GNU Lesser General Public 1830 // License as published by the Free Software Foundation; either 1831 // version 2.1 of the License, or (at your option) any later version. 1832 // 1833 // The GNU C Library is distributed in the hope that it will be useful, 1834 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1835 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1836 // Lesser General Public License for more details. 1837 // 1838 // You should have received a copy of the GNU Lesser General Public 1839 // License along with the GNU C Library; if not, see 1840 // <http://www.gnu.org/licenses/>. 1841 1842 type X__pthread_rwlock_arch_t = struct { 1843 F__readers uint32 1844 F__writers uint32 1845 F__wrphase_futex uint32 1846 F__writers_futex uint32 1847 F__pad3 uint32 1848 F__pad4 uint32 1849 F__cur_writer int32 1850 F__shared int32 1851 F__pad1 uint64 1852 F__pad2 uint64 1853 F__flags uint32 1854 F__ccgo_pad1 [4]byte 1855 } /* struct_rwlock.h:23:1 */ 1856 1857 // Common definition of pthread_cond_t. 1858 1859 type X__pthread_cond_s = struct { 1860 F__0 struct{ F__wseq uint64 } 1861 F__8 struct{ F__g1_start uint64 } 1862 F__g_refs [2]uint32 1863 F__g_size [2]uint32 1864 F__g1_orig_size uint32 1865 F__wrefs uint32 1866 F__g_signals [2]uint32 1867 } /* thread-shared-types.h:92:1 */ 1868 1869 // Thread identifiers. The structure of the attribute type is not 1870 // 1871 // exposed on purpose. 1872 type Pthread_t = uint64 /* pthreadtypes.h:27:27 */ 1873 1874 // Data structures for mutex handling. The structure of the attribute 1875 // 1876 // type is not exposed on purpose. 1877 type Pthread_mutexattr_t = struct { 1878 F__ccgo_pad1 [0]uint32 1879 F__size [8]uint8 1880 } /* pthreadtypes.h:36:3 */ 1881 1882 // Data structure for condition variable handling. The structure of 1883 // 1884 // the attribute type is not exposed on purpose. 1885 type Pthread_condattr_t = struct { 1886 F__ccgo_pad1 [0]uint32 1887 F__size [8]uint8 1888 } /* pthreadtypes.h:45:3 */ 1889 1890 // Keys for thread-specific data 1891 type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */ 1892 1893 // Once-only execution 1894 type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */ 1895 1896 type Pthread_attr_t1 = struct { 1897 F__ccgo_pad1 [0]uint64 1898 F__size [64]uint8 1899 } /* pthreadtypes.h:56:1 */ 1900 1901 type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */ 1902 1903 type Pthread_mutex_t = struct { 1904 F__data X__pthread_mutex_s 1905 F__ccgo_pad1 [8]byte 1906 } /* pthreadtypes.h:72:3 */ 1907 1908 type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */ 1909 1910 // Data structure for reader-writer lock variable handling. The 1911 // 1912 // structure of the attribute type is deliberately not exposed. 1913 type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */ 1914 1915 type Pthread_rwlockattr_t = struct { 1916 F__ccgo_pad1 [0]uint64 1917 F__size [8]uint8 1918 } /* pthreadtypes.h:97:3 */ 1919 1920 // POSIX spinlock data type. 1921 type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */ 1922 1923 // POSIX barriers data type. The structure of the type is 1924 // 1925 // deliberately not exposed. 1926 type Pthread_barrier_t = struct { 1927 F__ccgo_pad1 [0]uint64 1928 F__size [32]uint8 1929 } /* pthreadtypes.h:112:3 */ 1930 1931 type Pthread_barrierattr_t = struct { 1932 F__ccgo_pad1 [0]uint32 1933 F__size [8]uint8 1934 } /* pthreadtypes.h:118:3 */ 1935 1936 // Copyright (C) 1997-2020 Free Software Foundation, Inc. 1937 // 1938 // This file is part of the GNU C Library. 1939 // 1940 // The GNU C Library is free software; you can redistribute it and/or 1941 // modify it under the terms of the GNU Lesser General Public License as 1942 // published by the Free Software Foundation; either version 2.1 of the 1943 // License, or (at your option) any later version. 1944 // 1945 // The GNU C Library is distributed in the hope that it will be useful, 1946 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1947 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1948 // Lesser General Public License for more details. 1949 // 1950 // You should have received a copy of the GNU Lesser General Public 1951 // License along with the GNU C Library; if not, see 1952 // <https://www.gnu.org/licenses/>. 1953 1954 // Jump buffer contains: 1955 // 1956 // x19-x28, x29(fp), x30(lr), (x31)sp, d8-d15. Other registers are not 1957 // saved. 1958 type X__jmp_buf = [22]uint64 /* setjmp.h:30:42 */ 1959 1960 // Conditional variable handling. 1961 1962 // Cleanup buffers 1963 type X_pthread_cleanup_buffer = struct { 1964 F__routine uintptr 1965 F__arg uintptr 1966 F__canceltype int32 1967 F__ccgo_pad1 [4]byte 1968 F__prev uintptr 1969 } /* pthread.h:155:1 */ 1970 1971 // Cancellation handling with integration into exception handling. 1972 1973 type X__pthread_unwind_buf_t = struct { 1974 F__cancel_jmp_buf [1]struct { 1975 F__cancel_jmp_buf X__jmp_buf 1976 F__mask_was_saved int32 1977 F__ccgo_pad1 [4]byte 1978 } 1979 F__pad [4]uintptr 1980 } /* pthread.h:507:3 */ 1981 1982 // No special attributes by default. 1983 1984 // Structure to hold the cleanup handler information. 1985 type X__pthread_cleanup_frame = struct { 1986 F__cancel_routine uintptr 1987 F__cancel_arg uintptr 1988 F__do_it int32 1989 F__cancel_type int32 1990 } /* pthread.h:516:1 */ 1991 1992 var _ uint8 /* gen.c:2:13: */