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