github.com/afumu/libc@v0.0.6/pthread/pthread_windows_amd64.go (about)

     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_windows_amd64.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  	CHAR_BIT                                        = 8
    19  	CHAR_MAX                                        = 127
    20  	CHAR_MIN                                        = -128
    21  	DUMMYSTRUCTNAME                                 = 0
    22  	DUMMYSTRUCTNAME1                                = 0
    23  	DUMMYSTRUCTNAME2                                = 0
    24  	DUMMYSTRUCTNAME3                                = 0
    25  	DUMMYSTRUCTNAME4                                = 0
    26  	DUMMYSTRUCTNAME5                                = 0
    27  	DUMMYUNIONNAME                                  = 0
    28  	DUMMYUNIONNAME1                                 = 0
    29  	DUMMYUNIONNAME2                                 = 0
    30  	DUMMYUNIONNAME3                                 = 0
    31  	DUMMYUNIONNAME4                                 = 0
    32  	DUMMYUNIONNAME5                                 = 0
    33  	DUMMYUNIONNAME6                                 = 0
    34  	DUMMYUNIONNAME7                                 = 0
    35  	DUMMYUNIONNAME8                                 = 0
    36  	DUMMYUNIONNAME9                                 = 0
    37  	E2BIG                                           = 7
    38  	EACCES                                          = 13
    39  	EADDRINUSE                                      = 100
    40  	EADDRNOTAVAIL                                   = 101
    41  	EAFNOSUPPORT                                    = 102
    42  	EAGAIN                                          = 11
    43  	EALREADY                                        = 103
    44  	EBADF                                           = 9
    45  	EBADMSG                                         = 104
    46  	EBUSY                                           = 16
    47  	ECANCELED                                       = 105
    48  	ECHILD                                          = 10
    49  	ECONNABORTED                                    = 106
    50  	ECONNREFUSED                                    = 107
    51  	ECONNRESET                                      = 108
    52  	EDEADLK                                         = 36
    53  	EDEADLOCK                                       = 36
    54  	EDESTADDRREQ                                    = 109
    55  	EDOM                                            = 33
    56  	EEXIST                                          = 17
    57  	EFAULT                                          = 14
    58  	EFBIG                                           = 27
    59  	EHOSTUNREACH                                    = 110
    60  	EIDRM                                           = 111
    61  	EILSEQ                                          = 42
    62  	EINPROGRESS                                     = 112
    63  	EINTR                                           = 4
    64  	EINVAL                                          = 22
    65  	EIO                                             = 5
    66  	EISCONN                                         = 113
    67  	EISDIR                                          = 21
    68  	ELOOP                                           = 114
    69  	EMFILE                                          = 24
    70  	EMLINK                                          = 31
    71  	EMSGSIZE                                        = 115
    72  	ENAMETOOLONG                                    = 38
    73  	ENETDOWN                                        = 116
    74  	ENETRESET                                       = 117
    75  	ENETUNREACH                                     = 118
    76  	ENFILE                                          = 23
    77  	ENOBUFS                                         = 119
    78  	ENODATA                                         = 120
    79  	ENODEV                                          = 19
    80  	ENOENT                                          = 2
    81  	ENOEXEC                                         = 8
    82  	ENOFILE                                         = 2
    83  	ENOLCK                                          = 39
    84  	ENOLINK                                         = 121
    85  	ENOMEM                                          = 12
    86  	ENOMSG                                          = 122
    87  	ENOPROTOOPT                                     = 123
    88  	ENOSPC                                          = 28
    89  	ENOSR                                           = 124
    90  	ENOSTR                                          = 125
    91  	ENOSYS                                          = 40
    92  	ENOTCONN                                        = 126
    93  	ENOTDIR                                         = 20
    94  	ENOTEMPTY                                       = 41
    95  	ENOTRECOVERABLE                                 = 127
    96  	ENOTSOCK                                        = 128
    97  	ENOTSUP                                         = 129
    98  	ENOTTY                                          = 25
    99  	ENXIO                                           = 6
   100  	EOPNOTSUPP                                      = 130
   101  	EOVERFLOW                                       = 132
   102  	EOWNERDEAD                                      = 133
   103  	EPERM                                           = 1
   104  	EPIPE                                           = 32
   105  	EPROTO                                          = 134
   106  	EPROTONOSUPPORT                                 = 135
   107  	EPROTOTYPE                                      = 136
   108  	ERANGE                                          = 34
   109  	EROFS                                           = 30
   110  	ESPIPE                                          = 29
   111  	ESRCH                                           = 3
   112  	ETIME                                           = 137
   113  	ETIMEDOUT                                       = 138
   114  	ETXTBSY                                         = 139
   115  	EWOULDBLOCK                                     = 140
   116  	EXDEV                                           = 18
   117  	INT_MAX                                         = 2147483647
   118  	INT_MIN                                         = -2147483648
   119  	LLONG_MAX                                       = 9223372036854775807
   120  	LLONG_MIN                                       = -9223372036854775808
   121  	LONG_LONG_MAX                                   = 9223372036854775807
   122  	LONG_LONG_MIN                                   = -9223372036854775808
   123  	LONG_MAX                                        = 2147483647
   124  	LONG_MIN                                        = -2147483648
   125  	MAX_READ_LOCKS                                  = 2147483646
   126  	MB_LEN_MAX                                      = 5
   127  	MINGW_DDK_H                                     = 0
   128  	MINGW_DDRAW_VERSION                             = 7
   129  	MINGW_HAS_DDK_H                                 = 1
   130  	MINGW_HAS_DDRAW_H                               = 1
   131  	MINGW_HAS_SECURE_API                            = 1
   132  	MINGW_SDK_INIT                                  = 0
   133  	NSIG                                            = 23
   134  	OLD_P_OVERLAY                                   = 2
   135  	PATH_MAX                                        = 260
   136  	PTHREAD_BARRIER_SERIAL_THREAD                   = 1
   137  	PTHREAD_CANCEL_ASYNCHRONOUS                     = 0x02
   138  	PTHREAD_CANCEL_DEFERRED                         = 0
   139  	PTHREAD_CANCEL_DISABLE                          = 0
   140  	PTHREAD_CANCEL_ENABLE                           = 0x01
   141  	PTHREAD_CREATE_DETACHED                         = 0x04
   142  	PTHREAD_CREATE_JOINABLE                         = 0
   143  	PTHREAD_DEFAULT_ATTR                            = 1
   144  	PTHREAD_DESTRUCTOR_ITERATIONS                   = 256
   145  	PTHREAD_EXPLICIT_SCHED                          = 0
   146  	PTHREAD_INHERIT_SCHED                           = 0x08
   147  	PTHREAD_KEYS_MAX                                = 1048576
   148  	PTHREAD_MUTEX_ADAPTIVE_NP                       = 0
   149  	PTHREAD_MUTEX_DEFAULT                           = 0
   150  	PTHREAD_MUTEX_ERRORCHECK                        = 1
   151  	PTHREAD_MUTEX_ERRORCHECK_NP                     = 1
   152  	PTHREAD_MUTEX_FAST_NP                           = 0
   153  	PTHREAD_MUTEX_NORMAL                            = 0
   154  	PTHREAD_MUTEX_PRIVATE                           = 0
   155  	PTHREAD_MUTEX_RECURSIVE                         = 2
   156  	PTHREAD_MUTEX_RECURSIVE_NP                      = 2
   157  	PTHREAD_MUTEX_SHARED                            = 1
   158  	PTHREAD_MUTEX_TIMED_NP                          = 0
   159  	PTHREAD_ONCE_INIT                               = 0
   160  	PTHREAD_PRIO_INHERIT                            = 8
   161  	PTHREAD_PRIO_MULT                               = 32
   162  	PTHREAD_PRIO_NONE                               = 0
   163  	PTHREAD_PRIO_PROTECT                            = 16
   164  	PTHREAD_PROCESS_PRIVATE                         = 0
   165  	PTHREAD_PROCESS_SHARED                          = 1
   166  	PTHREAD_SCOPE_PROCESS                           = 0
   167  	PTHREAD_SCOPE_SYSTEM                            = 0x10
   168  	PTHREAD_THREADS_MAX                             = 2019
   169  	P_DETACH                                        = 4
   170  	P_NOWAIT                                        = 1
   171  	P_NOWAITO                                       = 3
   172  	P_OVERLAY                                       = 2
   173  	P_WAIT                                          = 0
   174  	RWLS_PER_THREAD                                 = 8
   175  	SCHAR_MAX                                       = 127
   176  	SCHAR_MIN                                       = -128
   177  	SCHED_FIFO                                      = 1
   178  	SCHED_MAX                                       = 2
   179  	SCHED_MIN                                       = 0
   180  	SCHED_OTHER                                     = 0
   181  	SCHED_RR                                        = 2
   182  	SEM_NSEMS_MAX                                   = 1024
   183  	SHRT_MAX                                        = 32767
   184  	SHRT_MIN                                        = -32768
   185  	SIGABRT                                         = 22
   186  	SIGABRT2                                        = 22
   187  	SIGABRT_COMPAT                                  = 6
   188  	SIGBREAK                                        = 21
   189  	SIGFPE                                          = 8
   190  	SIGILL                                          = 4
   191  	SIGINT                                          = 2
   192  	SIGSEGV                                         = 11
   193  	SIGTERM                                         = 15
   194  	SIG_BLOCK                                       = 0
   195  	SIG_SETMASK                                     = 2
   196  	SIG_UNBLOCK                                     = 1
   197  	SIZE_MAX                                        = 18446744073709551615
   198  	SSIZE_MAX                                       = 9223372036854775807
   199  	STRUNCATE                                       = 80
   200  	UCHAR_MAX                                       = 255
   201  	UINT_MAX                                        = 4294967295
   202  	ULLONG_MAX                                      = 18446744073709551615
   203  	ULONG_LONG_MAX                                  = 18446744073709551615
   204  	ULONG_MAX                                       = 4294967295
   205  	UNALIGNED                                       = 0
   206  	USE___UUIDOF                                    = 0
   207  	USHRT_MAX                                       = 65535
   208  	WAIT_CHILD                                      = 0
   209  	WAIT_GRANDCHILD                                 = 1
   210  	WIN32                                           = 1
   211  	WIN64                                           = 1
   212  	WINNT                                           = 1
   213  	WINPTHREAD_API                                  = 0
   214  	WIN_PTHREADS_H                                  = 0
   215  	WIN_PTHREADS_PTHREAD_COMPAT_H                   = 0
   216  	WIN_PTHREADS_SIGNAL_H                           = 0
   217  	WIN_PTHREADS_UNISTD_H                           = 0
   218  	X_AGLOBAL                                       = 0
   219  	X_ANONYMOUS_STRUCT                              = 0
   220  	X_ANONYMOUS_UNION                               = 0
   221  	X_ANSI_STDDEF_H                                 = 0
   222  	X_ARGMAX                                        = 100
   223  	X_CONST_RETURN                                  = 0
   224  	X_CRTNOALIAS                                    = 0
   225  	X_CRTRESTRICT                                   = 0
   226  	X_CRT_ALTERNATIVE_IMPORTED                      = 0
   227  	X_CRT_ERRNO_DEFINED                             = 0
   228  	X_CRT_GETPID_DEFINED                            = 0
   229  	X_CRT_MANAGED_HEAP_DEPRECATE                    = 0
   230  	X_CRT_PACKING                                   = 8
   231  	X_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES          = 0
   232  	X_CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES_MEMORY   = 0
   233  	X_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES        = 0
   234  	X_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT  = 0
   235  	X_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_MEMORY = 0
   236  	X_CRT_SYSTEM_DEFINED                            = 0
   237  	X_CRT_TERMINATE_DEFINED                         = 0
   238  	X_CRT_WSYSTEM_DEFINED                           = 0
   239  	X_DEV_T_DEFINED                                 = 0
   240  	X_DLL                                           = 0
   241  	X_ERRCODE_DEFINED                               = 0
   242  	X_FILE_OFFSET_BITS                              = 64
   243  	X_FILE_OFFSET_BITS_SET_OFFT                     = 0
   244  	X_GCC_LIMITS_H_                                 = 0
   245  	X_GCC_MAX_ALIGN_T                               = 0
   246  	X_GTHREAD_USE_MUTEX_INIT_FUNC                   = 1
   247  	X_I16_MAX                                       = 32767
   248  	X_I16_MIN                                       = -32768
   249  	X_I32_MAX                                       = 2147483647
   250  	X_I32_MIN                                       = -2147483648
   251  	X_I64_MAX                                       = 9223372036854775807
   252  	X_I64_MIN                                       = -9223372036854775808
   253  	X_I8_MAX                                        = 127
   254  	X_I8_MIN                                        = -128
   255  	X_INC_CORECRT_STARTUP                           = 0
   256  	X_INC_CRTDEFS                                   = 0
   257  	X_INC_CRTDEFS_MACRO                             = 0
   258  	X_INC_ERRNO                                     = 0
   259  	X_INC_LIMITS                                    = 0
   260  	X_INC_MINGW_SECAPI                              = 0
   261  	X_INC_PROCESS                                   = 0
   262  	X_INC_SIGNAL                                    = 0
   263  	X_INC_STDDEF                                    = 0
   264  	X_INC_TYPES                                     = 0
   265  	X_INC_VADEFS                                    = 0
   266  	X_INC__MINGW_H                                  = 0
   267  	X_INO_T_DEFINED                                 = 0
   268  	X_INT128_DEFINED                                = 0
   269  	X_INTEGRAL_MAX_BITS                             = 64
   270  	X_INTPTR_T_DEFINED                              = 0
   271  	X_LIMITS_H___                                   = 0
   272  	X_MODE_T_                                       = 0
   273  	X_MT                                            = 0
   274  	X_M_AMD64                                       = 100
   275  	X_M_X64                                         = 100
   276  	X_OFF64_T_DEFINED                               = 0
   277  	X_OFF_T_                                        = 0
   278  	X_OFF_T_DEFINED                                 = 0
   279  	X_OLD_P_OVERLAY                                 = 2
   280  	X_PGLOBAL                                       = 0
   281  	X_PID_T_                                        = 0
   282  	X_POSIX_BARRIERS                                = 200112
   283  	X_POSIX_CLOCK_SELECTION                         = 200112
   284  	X_POSIX_READER_WRITER_LOCKS                     = 200112
   285  	X_POSIX_SEMAPHORES                              = 200112
   286  	X_POSIX_SEM_NSEMS_MAX                           = 256
   287  	X_POSIX_SPIN_LOCKS                              = 200112
   288  	X_POSIX_THREADS                                 = 200112
   289  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS            = 256
   290  	X_POSIX_THREAD_KEYS_MAX                         = 1048576
   291  	X_POSIX_THREAD_SAFE_FUNCTIONS                   = 200112
   292  	X_POSIX_TIMEOUTS                                = 200112
   293  	X_PTRDIFF_T_                                    = 0
   294  	X_PTRDIFF_T_DEFINED                             = 0
   295  	X_P_DETACH                                      = 4
   296  	X_P_NOWAIT                                      = 1
   297  	X_P_NOWAITO                                     = 3
   298  	X_P_OVERLAY                                     = 2
   299  	X_P_WAIT                                        = 0
   300  	X_REENTRANT                                     = 1
   301  	X_RSIZE_T_DEFINED                               = 0
   302  	X_SECURECRT_ERRCODE_VALUES_DEFINED              = 0
   303  	X_SECURECRT_FILL_BUFFER_PATTERN                 = 0xFD
   304  	X_SIGSET_T_                                     = 0
   305  	X_SIG_ATOMIC_T_DEFINED                          = 0
   306  	X_SIZE_T_DEFINED                                = 0
   307  	X_SPAWNV_DEFINED                                = 0
   308  	X_SSIZE_T_DEFINED                               = 0
   309  	X_STDDEF_H                                      = 0
   310  	X_STDDEF_H_                                     = 0
   311  	X_TAGLC_ID_DEFINED                              = 0
   312  	X_THREADLOCALEINFO                              = 0
   313  	X_TIME32_T_DEFINED                              = 0
   314  	X_TIME64_T_DEFINED                              = 0
   315  	X_TIMEB_DEFINED                                 = 0
   316  	X_TIMEB_H_                                      = 0
   317  	X_TIMEB_H_S                                     = 0
   318  	X_TIMESPEC_DEFINED                              = 0
   319  	X_TIME_T_DEFINED                                = 0
   320  	X_UI16_MAX                                      = 0xffff
   321  	X_UI32_MAX                                      = 0xffffffff
   322  	X_UI64_MAX                                      = 0xffffffffffffffff
   323  	X_UI8_MAX                                       = 0xff
   324  	X_UINTPTR_T_DEFINED                             = 0
   325  	X_VA_LIST_DEFINED                               = 0
   326  	X_W64                                           = 0
   327  	X_WAIT_CHILD                                    = 0
   328  	X_WAIT_GRANDCHILD                               = 1
   329  	X_WCHAR_T_DEFINED                               = 0
   330  	X_WCTYPE_T_DEFINED                              = 0
   331  	X_WEXEC_DEFINED                                 = 0
   332  	X_WIN32                                         = 1
   333  	X_WIN32_WINNT                                   = 0x502
   334  	X_WIN64                                         = 1
   335  	X_WINT_T                                        = 0
   336  	X_WSPAWN_DEFINED                                = 0
   337  )
   338  
   339  type Ptrdiff_t = int64 /* <builtin>:3:26 */
   340  
   341  type Size_t = uint64 /* <builtin>:9:23 */
   342  
   343  type Wchar_t = uint16 /* <builtin>:15:24 */
   344  
   345  type X__int128_t = struct {
   346  	Flo int64
   347  	Fhi int64
   348  } /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
   349  type X__uint128_t = struct {
   350  	Flo uint64
   351  	Fhi uint64
   352  } /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
   353  
   354  type X__builtin_va_list = uintptr /* <builtin>:46:14 */
   355  type X__float128 = float64        /* <builtin>:47:21 */
   356  
   357  type Va_list = X__builtin_va_list /* <builtin>:50:27 */
   358  
   359  //
   360  //    Copyright (c) 2011-2016 mingw-w64 project
   361  //
   362  //    Permission is hereby granted, free of charge, to any person obtaining a
   363  //    copy of this software and associated documentation files (the "Software"),
   364  //    to deal in the Software without restriction, including without limitation
   365  //    the rights to use, copy, modify, merge, publish, distribute, sublicense,
   366  //    and/or sell copies of the Software, and to permit persons to whom the
   367  //    Software is furnished to do so, subject to the following conditions:
   368  //
   369  //    The above copyright notice and this permission notice shall be included in
   370  //    all copies or substantial portions of the Software.
   371  //
   372  //    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   373  //    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   374  //    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   375  //    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   376  //    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   377  //    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   378  //    DEALINGS IN THE SOFTWARE.
   379  
   380  // Parts of this library are derived by:
   381  //
   382  // Posix Threads library for Microsoft Windows
   383  //
   384  // Use at own risk, there is no implied warranty to this code.
   385  // It uses undocumented features of Microsoft Windows that can change
   386  // at any time in the future.
   387  //
   388  // (C) 2010 Lockless Inc.
   389  // All rights reserved.
   390  //
   391  // Redistribution and use in source and binary forms, with or without modification,
   392  // are permitted provided that the following conditions are met:
   393  //
   394  //
   395  //  * Redistributions of source code must retain the above copyright notice,
   396  //    this list of conditions and the following disclaimer.
   397  //  * Redistributions in binary form must reproduce the above copyright notice,
   398  //    this list of conditions and the following disclaimer in the documentation
   399  //    and/or other materials provided with the distribution.
   400  //  * Neither the name of Lockless Inc. nor the names of its contributors may be
   401  //    used to endorse or promote products derived from this software without
   402  //    specific prior written permission.
   403  //
   404  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AN
   405  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
   406  // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   407  // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   408  // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
   409  // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   410  // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   411  // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
   412  // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   413  // OF THE POSSIBILITY OF SUCH DAMAGE.
   414  
   415  // *
   416  // This file has no copyright assigned and is placed in the Public Domain.
   417  // This file is part of the mingw-w64 runtime package.
   418  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   419  
   420  // *
   421  // This file has no copyright assigned and is placed in the Public Domain.
   422  // This file is part of the mingw-w64 runtime package.
   423  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   424  
   425  // *
   426  // This file has no copyright assigned and is placed in the Public Domain.
   427  // This file is part of the mingw-w64 runtime package.
   428  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   429  
   430  // *
   431  // This file has no copyright assigned and is placed in the Public Domain.
   432  // This file is part of the mingw-w64 runtime package.
   433  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   434  
   435  // This macro holds an monotonic increasing value, which indicates
   436  //    a specific fix/patch is present on trunk.  This value isn't related to
   437  //    minor/major version-macros.  It is increased on demand, if a big
   438  //    fix was applied to trunk.  This macro gets just increased on trunk.  For
   439  //    other branches its value won't be modified.
   440  
   441  // mingw.org's version macros: these make gcc to define
   442  //    MINGW32_SUPPORTS_MT_EH and to use the _CRT_MT global
   443  //    and the __mingwthr_key_dtor() function from the MinGW
   444  //    CRT in its private gthr-win32.h header.
   445  
   446  // Set VC specific compiler target macros.
   447  
   448  // MS does not prefix symbols by underscores for 64-bit.
   449  // As we have to support older gcc version, which are using underscores
   450  //       as symbol prefix for x64, we have to check here for the user label
   451  //       prefix defined by gcc.
   452  
   453  // Special case nameless struct/union.
   454  
   455  // MinGW-w64 has some additional C99 printf/scanf feature support.
   456  //    So we add some helper macros to ease recognition of them.
   457  
   458  // *
   459  // This file has no copyright assigned and is placed in the Public Domain.
   460  // This file is part of the mingw-w64 runtime package.
   461  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   462  
   463  // http://msdn.microsoft.com/en-us/library/ms175759%28v=VS.100%29.aspx
   464  // Templates won't work in C, will break if secure API is not enabled, disabled
   465  
   466  // https://blogs.msdn.com/b/sdl/archive/2010/02/16/vc-2010-and-memcpy.aspx?Redirected=true
   467  // fallback on default implementation if we can't know the size of the destination
   468  
   469  // Include _cygwin.h if we're building a Cygwin application.
   470  
   471  // Target specific macro replacement for type "long".  In the Windows API,
   472  //    the type long is always 32 bit, even if the target is 64 bit (LLP64).
   473  //    On 64 bit Cygwin, the type long is 64 bit (LP64).  So, to get the right
   474  //    sized definitions and declarations, all usage of type long in the Windows
   475  //    headers have to be replaced by the below defined macro __LONG32.
   476  
   477  // C/C++ specific language defines.
   478  
   479  // Note the extern. This is needed to work around GCC's
   480  // limitations in handling dllimport attribute.
   481  
   482  // Attribute `nonnull' was valid as of gcc 3.3.  We don't use GCC's
   483  //    variadiac macro facility, because variadic macros cause syntax
   484  //    errors with  --traditional-cpp.
   485  
   486  //  High byte is the major version, low byte is the minor.
   487  
   488  // *
   489  // This file has no copyright assigned and is placed in the Public Domain.
   490  // This file is part of the mingw-w64 runtime package.
   491  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   492  
   493  // *
   494  // This file has no copyright assigned and is placed in the Public Domain.
   495  // This file is part of the mingw-w64 runtime package.
   496  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   497  
   498  type X__gnuc_va_list = X__builtin_va_list /* vadefs.h:24:29 */
   499  
   500  type Ssize_t = int64 /* crtdefs.h:45:35 */
   501  
   502  type Rsize_t = Size_t /* crtdefs.h:52:16 */
   503  
   504  type Intptr_t = int64 /* crtdefs.h:62:35 */
   505  
   506  type Uintptr_t = uint64 /* crtdefs.h:75:44 */
   507  
   508  type Wint_t = uint16   /* crtdefs.h:106:24 */
   509  type Wctype_t = uint16 /* crtdefs.h:107:24 */
   510  
   511  type Errno_t = int32 /* crtdefs.h:113:13 */
   512  
   513  type X__time32_t = int32 /* crtdefs.h:118:14 */
   514  
   515  type X__time64_t = int64 /* crtdefs.h:123:35 */
   516  
   517  type Time_t = X__time64_t /* crtdefs.h:138:20 */
   518  
   519  type Threadlocaleinfostruct = struct {
   520  	Frefcount      int32
   521  	Flc_codepage   uint32
   522  	Flc_collate_cp uint32
   523  	Flc_handle     [6]uint32
   524  	Flc_id         [6]LC_ID
   525  	Flc_category   [6]struct {
   526  		Flocale    uintptr
   527  		Fwlocale   uintptr
   528  		Frefcount  uintptr
   529  		Fwrefcount uintptr
   530  	}
   531  	Flc_clike            int32
   532  	Fmb_cur_max          int32
   533  	Flconv_intl_refcount uintptr
   534  	Flconv_num_refcount  uintptr
   535  	Flconv_mon_refcount  uintptr
   536  	Flconv               uintptr
   537  	Fctype1_refcount     uintptr
   538  	Fctype1              uintptr
   539  	Fpctype              uintptr
   540  	Fpclmap              uintptr
   541  	Fpcumap              uintptr
   542  	Flc_time_curr        uintptr
   543  } /* crtdefs.h:422:1 */
   544  
   545  type Pthreadlocinfo = uintptr /* crtdefs.h:424:39 */
   546  type Pthreadmbcinfo = uintptr /* crtdefs.h:425:36 */
   547  
   548  type Localeinfo_struct = struct {
   549  	Flocinfo Pthreadlocinfo
   550  	Fmbcinfo Pthreadmbcinfo
   551  } /* crtdefs.h:428:9 */
   552  
   553  type X_locale_tstruct = Localeinfo_struct /* crtdefs.h:431:3 */
   554  type X_locale_t = uintptr                 /* crtdefs.h:431:19 */
   555  
   556  type TagLC_ID = struct {
   557  	FwLanguage uint16
   558  	FwCountry  uint16
   559  	FwCodePage uint16
   560  } /* crtdefs.h:422:1 */
   561  
   562  type LC_ID = TagLC_ID  /* crtdefs.h:439:3 */
   563  type LPLC_ID = uintptr /* crtdefs.h:439:9 */
   564  
   565  type Threadlocinfo = Threadlocaleinfostruct /* crtdefs.h:468:3 */
   566  
   567  // ISO C Standard:  7.17  Common definitions  <stddef.h>
   568  
   569  // Any one of these symbols __need_* means that GNU libc
   570  //    wants us just to define one data type.  So don't define
   571  //    the symbols that indicate this file's entire job has been done.
   572  // snaroff@next.com says the NeXT needs this.
   573  // Irix 5.1 needs this.
   574  
   575  // In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
   576  //    defined if the corresponding type is *not* defined.
   577  //    FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_
   578  
   579  // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
   580  //    Just ignore it.
   581  
   582  // On VxWorks, <type/vxTypesBase.h> may have defined macros like
   583  //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
   584  //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
   585  //    not defined, and so that defining this macro defines _GCC_SIZE_T.
   586  //    If we find that the macros are still defined at this point, we must
   587  //    invoke them so that the type is defined as expected.
   588  
   589  // In case nobody has defined these types, but we aren't running under
   590  //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
   591  //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
   592  //    parts of GCC is compiled by an older compiler, that actually
   593  //    include gstddef.h, such as collect2.
   594  
   595  // Signed type of difference of two pointers.
   596  
   597  // Define this type if we are doing the whole job,
   598  //    or if we want this type in particular.
   599  
   600  // If this symbol has done its job, get rid of it.
   601  
   602  // Unsigned type of `sizeof' something.
   603  
   604  // Define this type if we are doing the whole job,
   605  //    or if we want this type in particular.
   606  
   607  // Wide character type.
   608  //    Locale-writers should change this as necessary to
   609  //    be big enough to hold unique values not between 0 and 127,
   610  //    and not (wchar_t) -1, for each defined multibyte character.
   611  
   612  // Define this type if we are doing the whole job,
   613  //    or if we want this type in particular.
   614  
   615  //  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
   616  //     are already defined.
   617  //  BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here.
   618  
   619  // A null pointer constant.
   620  
   621  // Offset of member MEMBER in a struct of type TYPE.
   622  
   623  // Type whose alignment is supported in every context and is at least
   624  //
   625  //	as great as that of any standard type not using alignment
   626  //	specifiers.
   627  type Max_align_t = struct {
   628  	F__max_align_ll int64
   629  	F__max_align_ld float64
   630  } /* stddef.h:426:3 */
   631  
   632  // Copyright (C) 1989-2018 Free Software Foundation, Inc.
   633  //
   634  // This file is part of GCC.
   635  //
   636  // GCC is free software; you can redistribute it and/or modify
   637  // it under the terms of the GNU General Public License as published by
   638  // the Free Software Foundation; either version 3, or (at your option)
   639  // any later version.
   640  //
   641  // GCC is distributed in the hope that it will be useful,
   642  // but WITHOUT ANY WARRANTY; without even the implied warranty of
   643  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   644  // GNU General Public License for more details.
   645  //
   646  // Under Section 7 of GPL version 3, you are granted additional
   647  // permissions described in the GCC Runtime Library Exception, version
   648  // 3.1, as published by the Free Software Foundation.
   649  //
   650  // You should have received a copy of the GNU General Public License and
   651  // a copy of the GCC Runtime Library Exception along with this program;
   652  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   653  // <http://www.gnu.org/licenses/>.
   654  
   655  // ISO C Standard:  7.17  Common definitions  <stddef.h>
   656  // *
   657  // This file has no copyright assigned and is placed in the Public Domain.
   658  // This file is part of the mingw-w64 runtime package.
   659  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   660  
   661  // *
   662  // This file has no copyright assigned and is placed in the Public Domain.
   663  // This file is part of the mingw-w64 runtime package.
   664  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   665  
   666  // Posix thread extensions.
   667  
   668  // Extension defined as by report VC 10+ defines error-numbers.
   669  
   670  // Defined as WSAETIMEDOUT.
   671  
   672  // *
   673  // This file has no copyright assigned and is placed in the Public Domain.
   674  // This file is part of the mingw-w64 runtime package.
   675  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   676  
   677  // *
   678  // This file has no copyright assigned and is placed in the Public Domain.
   679  // This file is part of the mingw-w64 runtime package.
   680  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   681  
   682  type X_ino_t = uint16 /* types.h:43:24 */
   683  type Ino_t = uint16   /* types.h:45:24 */
   684  
   685  type X_dev_t = uint32 /* types.h:51:22 */
   686  type Dev_t = uint32   /* types.h:53:22 */
   687  
   688  type X_pid_t = int64 /* types.h:63:17 */
   689  
   690  type Pid_t = X_pid_t /* types.h:68:16 */
   691  
   692  type X_mode_t = uint16 /* types.h:74:24 */
   693  
   694  type Mode_t = X_mode_t /* types.h:77:17 */
   695  
   696  type X_off_t = int32 /* _mingw_off_t.h:5:16 */
   697  type Off32_t = int32 /* _mingw_off_t.h:7:16 */
   698  
   699  type X_off64_t = int64 /* _mingw_off_t.h:13:39 */
   700  type Off64_t = int64   /* _mingw_off_t.h:15:39 */
   701  
   702  type Off_t = Off64_t /* _mingw_off_t.h:24:17 */
   703  
   704  type Useconds_t = uint32 /* types.h:84:22 */
   705  
   706  type Timespec = struct {
   707  	Ftv_sec      Time_t
   708  	Ftv_nsec     int32
   709  	F__ccgo_pad1 [4]byte
   710  } /* types.h:89:1 */
   711  
   712  type Itimerspec = struct {
   713  	Fit_interval struct {
   714  		Ftv_sec      Time_t
   715  		Ftv_nsec     int32
   716  		F__ccgo_pad1 [4]byte
   717  	}
   718  	Fit_value struct {
   719  		Ftv_sec      Time_t
   720  		Ftv_nsec     int32
   721  		F__ccgo_pad1 [4]byte
   722  	}
   723  } /* types.h:94:1 */
   724  
   725  type X_sigset_t = uint64 /* types.h:104:28 */
   726  
   727  type X_PVFV = uintptr /* corecrt_startup.h:20:14 */
   728  type X_PIFV = uintptr /* corecrt_startup.h:21:13 */
   729  type X_PVFI = uintptr /* corecrt_startup.h:22:14 */
   730  
   731  type X_onexit_table_t1 = struct {
   732  	F_first uintptr
   733  	F_last  uintptr
   734  	F_end   uintptr
   735  } /* corecrt_startup.h:24:9 */
   736  
   737  type X_onexit_table_t = X_onexit_table_t1 /* corecrt_startup.h:28:3 */
   738  
   739  type X_onexit_t = uintptr /* corecrt_startup.h:30:13 */
   740  
   741  // Copyright (C) 1992-2018 Free Software Foundation, Inc.
   742  //
   743  // This file is part of GCC.
   744  //
   745  // GCC is free software; you can redistribute it and/or modify it under
   746  // the terms of the GNU General Public License as published by the Free
   747  // Software Foundation; either version 3, or (at your option) any later
   748  // version.
   749  //
   750  // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
   751  // WARRANTY; without even the implied warranty of MERCHANTABILITY or
   752  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   753  // for more details.
   754  //
   755  // Under Section 7 of GPL version 3, you are granted additional
   756  // permissions described in the GCC Runtime Library Exception, version
   757  // 3.1, as published by the Free Software Foundation.
   758  //
   759  // You should have received a copy of the GNU General Public License and
   760  // a copy of the GCC Runtime Library Exception along with this program;
   761  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   762  // <http://www.gnu.org/licenses/>.
   763  
   764  // This administrivia gets added to the beginning of limits.h
   765  //    if the system has its own version of limits.h.
   766  
   767  // We use _GCC_LIMITS_H_ because we want this not to match
   768  //    any macros that the system's limits.h uses for its own purposes.
   769  
   770  // Use "..." so that we find syslimits.h only in this same directory.
   771  // syslimits.h stands for the system's own limits.h file.
   772  //    If we can use it ok unmodified, then we install this text.
   773  //    If fixincludes fixes it, then the fixed version is installed
   774  //    instead of this text.
   775  
   776  // *
   777  // This file has no copyright assigned and is placed in the Public Domain.
   778  // This file is part of the mingw-w64 runtime package.
   779  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   780  // *
   781  // This file has no copyright assigned and is placed in the Public Domain.
   782  // This file is part of the mingw-w64 runtime package.
   783  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   784  
   785  // File system limits
   786  //
   787  // NOTE: Apparently the actual size of PATH_MAX is 260, but a space is
   788  //       required for the NUL. TODO: Test?
   789  // NOTE: PATH_MAX is the POSIX equivalent for Microsoft's MAX_PATH; the two
   790  //       are semantically identical, with a limit of 259 characters for the
   791  //       path name, plus one for a terminating NUL, for a total of 260.
   792  
   793  // Copyright (C) 1991-2018 Free Software Foundation, Inc.
   794  //
   795  // This file is part of GCC.
   796  //
   797  // GCC is free software; you can redistribute it and/or modify it under
   798  // the terms of the GNU General Public License as published by the Free
   799  // Software Foundation; either version 3, or (at your option) any later
   800  // version.
   801  //
   802  // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
   803  // WARRANTY; without even the implied warranty of MERCHANTABILITY or
   804  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   805  // for more details.
   806  //
   807  // Under Section 7 of GPL version 3, you are granted additional
   808  // permissions described in the GCC Runtime Library Exception, version
   809  // 3.1, as published by the Free Software Foundation.
   810  //
   811  // You should have received a copy of the GNU General Public License and
   812  // a copy of the GCC Runtime Library Exception along with this program;
   813  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   814  // <http://www.gnu.org/licenses/>.
   815  
   816  // Number of bits in a `char'.
   817  
   818  // Maximum length of a multibyte character.
   819  
   820  // Minimum and maximum values a `signed char' can hold.
   821  
   822  // Maximum value an `unsigned char' can hold.  (Minimum is 0).
   823  
   824  // Minimum and maximum values a `char' can hold.
   825  
   826  // Minimum and maximum values a `signed short int' can hold.
   827  
   828  // Maximum value an `unsigned short int' can hold.  (Minimum is 0).
   829  
   830  // Minimum and maximum values a `signed int' can hold.
   831  
   832  // Maximum value an `unsigned int' can hold.  (Minimum is 0).
   833  
   834  // Minimum and maximum values a `signed long int' can hold.
   835  //    (Same as `int').
   836  
   837  // Maximum value an `unsigned long int' can hold.  (Minimum is 0).
   838  
   839  // Minimum and maximum values a `signed long long int' can hold.
   840  
   841  // Maximum value an `unsigned long long int' can hold.  (Minimum is 0).
   842  
   843  // Minimum and maximum values a `signed long long int' can hold.
   844  
   845  // Maximum value an `unsigned long long int' can hold.  (Minimum is 0).
   846  
   847  // This administrivia gets added to the end of limits.h
   848  //    if the system has its own version of limits.h.
   849  
   850  // *
   851  // This file has no copyright assigned and is placed in the Public Domain.
   852  // This file is part of the mingw-w64 runtime package.
   853  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   854  
   855  // *
   856  // This file has no copyright assigned and is placed in the Public Domain.
   857  // This file is part of the mingw-w64 runtime package.
   858  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   859  
   860  //
   861  //    Copyright (c) 2013-2016  mingw-w64 project
   862  //
   863  //    Permission is hereby granted, free of charge, to any person obtaining a
   864  //    copy of this software and associated documentation files (the "Software"),
   865  //    to deal in the Software without restriction, including without limitation
   866  //    the rights to use, copy, modify, merge, publish, distribute, sublicense,
   867  //    and/or sell copies of the Software, and to permit persons to whom the
   868  //    Software is furnished to do so, subject to the following conditions:
   869  //
   870  //    The above copyright notice and this permission notice shall be included in
   871  //    all copies or substantial portions of the Software.
   872  //
   873  //    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   874  //    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   875  //    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   876  //    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   877  //    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   878  //    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   879  //    DEALINGS IN THE SOFTWARE.
   880  
   881  // Windows has rudimentary signals support.
   882  
   883  type Sig_atomic_t = int32 /* signal.h:18:15 */
   884  
   885  type X__p_sig_fn_t = uintptr /* signal.h:48:16 */
   886  
   887  // *
   888  // This file has no copyright assigned and is placed in the Public Domain.
   889  // This file is part of the mingw-w64 runtime package.
   890  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   891  
   892  // *
   893  // This file has no copyright assigned and is placed in the Public Domain.
   894  // This file is part of the mingw-w64 runtime package.
   895  // No warranty is given; refer to the file DISCLAIMER.PD within this package.
   896  
   897  type X__timeb32 = struct {
   898  	Ftime        X__time32_t
   899  	Fmillitm     uint16
   900  	Ftimezone    int16
   901  	Fdstflag     int16
   902  	F__ccgo_pad1 [2]byte
   903  } /* timeb.h:53:3 */
   904  
   905  type Timeb = struct {
   906  	Ftime        Time_t
   907  	Fmillitm     uint16
   908  	Ftimezone    int16
   909  	Fdstflag     int16
   910  	F__ccgo_pad1 [2]byte
   911  } /* timeb.h:61:3 */
   912  
   913  type X__timeb64 = struct {
   914  	Ftime        X__time64_t
   915  	Fmillitm     uint16
   916  	Ftimezone    int16
   917  	Fdstflag     int16
   918  	F__ccgo_pad1 [2]byte
   919  } /* timeb.h:69:3 */
   920  
   921  // maximum number of times a read lock may be obtained
   922  
   923  // No fork() in windows - so ignore this
   924  
   925  // unsupported stuff:
   926  
   927  type Pthread_once_t = int32          /* pthread.h:180:14 */
   928  type Pthread_mutexattr_t = uint32    /* pthread.h:181:18 */
   929  type Pthread_key_t = uint32          /* pthread.h:182:18 */
   930  type Pthread_barrierattr_t = uintptr /* pthread.h:183:14 */
   931  type Pthread_condattr_t = int32      /* pthread.h:184:13 */
   932  type Pthread_rwlockattr_t = int32    /* pthread.h:185:13 */
   933  
   934  //
   935  // struct _pthread_v;
   936  //
   937  // typedef struct pthread_t {
   938  //   struct _pthread_v *p;
   939  //   int x;
   940  // } pthread_t;
   941  
   942  type Pthread_t = Uintptr_t /* pthread.h:196:19 */
   943  
   944  type X_pthread_cleanup1 = struct {
   945  	Ffunc uintptr
   946  	Farg  uintptr
   947  	Fnext uintptr
   948  } /* pthread.h:198:9 */
   949  
   950  type X_pthread_cleanup = X_pthread_cleanup1 /* pthread.h:198:33 */
   951  
   952  // Note that if async cancelling is used, then there is a race here
   953  
   954  // Windows doesn't have this, so declare it ourselves.
   955  
   956  // Some POSIX realtime extensions, mostly stubbed
   957  
   958  type Sched_param = struct{ Fsched_priority int32 } /* pthread.h:239:1 */
   959  
   960  type Pthread_attr_t1 = struct {
   961  	Fp_state     uint32
   962  	F__ccgo_pad1 [4]byte
   963  	Fstack       uintptr
   964  	Fs_size      Size_t
   965  	Fparam       struct{ Fsched_priority int32 }
   966  	F__ccgo_pad2 [4]byte
   967  } /* pthread.h:251:9 */
   968  
   969  type Pthread_attr_t = Pthread_attr_t1 /* pthread.h:251:31 */
   970  
   971  // synchronization objects
   972  type Pthread_spinlock_t = uintptr /* pthread.h:268:14 */
   973  type Pthread_mutex_t = uintptr    /* pthread.h:269:14 */
   974  type Pthread_cond_t = uintptr     /* pthread.h:270:14 */
   975  type Pthread_rwlock_t = uintptr   /* pthread.h:271:14 */
   976  type Pthread_barrier_t = uintptr  /* pthread.h:272:14 */
   977  
   978  type Clockid_t = int32 /* pthread.h:389:13 */
   979  
   980  //
   981  //    Copyright (c) 2011-2016  mingw-w64 project
   982  //
   983  //    Permission is hereby granted, free of charge, to any person obtaining a
   984  //    copy of this software and associated documentation files (the "Software"),
   985  //    to deal in the Software without restriction, including without limitation
   986  //    the rights to use, copy, modify, merge, publish, distribute, sublicense,
   987  //    and/or sell copies of the Software, and to permit persons to whom the
   988  //    Software is furnished to do so, subject to the following conditions:
   989  //
   990  //    The above copyright notice and this permission notice shall be included in
   991  //    all copies or substantial portions of the Software.
   992  //
   993  //    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   994  //    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   995  //    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
   996  //    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   997  //    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   998  //    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
   999  //    DEALINGS IN THE SOFTWARE.
  1000  
  1001  // Set defines described by the POSIX Threads Extension (1003.1c-1995)
  1002  // _SC_THREADS
  1003  //   Basic support for POSIX threads is available. The functions
  1004  //
  1005  //   pthread_atfork(),
  1006  //   pthread_attr_destroy(),
  1007  //   pthread_attr_getdetachstate(),
  1008  //   pthread_attr_getschedparam(),
  1009  //   pthread_attr_init(),
  1010  //   pthread_attr_setdetachstate(),
  1011  //   pthread_attr_setschedparam(),
  1012  //   pthread_cancel(),
  1013  //   pthread_cleanup_push(),
  1014  //   pthread_cleanup_pop(),
  1015  //   pthread_cond_broadcast(),
  1016  //   pthread_cond_destroy(),
  1017  //   pthread_cond_init(),
  1018  //   pthread_cond_signal(),
  1019  //   pthread_cond_timedwait(),
  1020  //   pthread_cond_wait(),
  1021  //   pthread_condattr_destroy(),
  1022  //   pthread_condattr_init(),
  1023  //   pthread_create(),
  1024  //   pthread_detach(),
  1025  //   pthread_equal(),
  1026  //   pthread_exit(),
  1027  //   pthread_getspecific(),
  1028  //   pthread_join(,
  1029  //   pthread_key_create(),
  1030  //   pthread_key_delete(),
  1031  //   pthread_mutex_destroy(),
  1032  //   pthread_mutex_init(),
  1033  //   pthread_mutex_lock(),
  1034  //   pthread_mutex_trylock(),
  1035  //   pthread_mutex_unlock(),
  1036  //   pthread_mutexattr_destroy(),
  1037  //   pthread_mutexattr_init(),
  1038  //   pthread_once(),
  1039  //   pthread_rwlock_destroy(),
  1040  //   pthread_rwlock_init(),
  1041  //   pthread_rwlock_rdlock(),
  1042  //   pthread_rwlock_tryrdlock(),
  1043  //   pthread_rwlock_trywrlock(),
  1044  //   pthread_rwlock_unlock(),
  1045  //   pthread_rwlock_wrlock(),
  1046  //   pthread_rwlockattr_destroy(),
  1047  //   pthread_rwlockattr_init(),
  1048  //   pthread_self(),
  1049  //   pthread_setcancelstate(),
  1050  //   pthread_setcanceltype(),
  1051  //   pthread_setspecific(),
  1052  //   pthread_testcancel()
  1053  //
  1054  //   are present.
  1055  
  1056  // _SC_READER_WRITER_LOCKS
  1057  //   This option implies the _POSIX_THREADS option. Conversely, under
  1058  //   POSIX 1003.1-2001 the _POSIX_THREADS option implies this option.
  1059  //
  1060  //   The functions
  1061  //   pthread_rwlock_destroy(),
  1062  //   pthread_rwlock_init(),
  1063  //   pthread_rwlock_rdlock(),
  1064  //   pthread_rwlock_tryrdlock(),
  1065  //   pthread_rwlock_trywrlock(),
  1066  //   pthread_rwlock_unlock(),
  1067  //   pthread_rwlock_wrlock(),
  1068  //   pthread_rwlockattr_destroy(),
  1069  //   pthread_rwlockattr_init()
  1070  //
  1071  //   are present.
  1072  
  1073  // _SC_SPIN_LOCKS
  1074  //   This option implies the _POSIX_THREADS and _POSIX_THREAD_SAFE_FUNCTIONS
  1075  //   options. The functions
  1076  //
  1077  //   pthread_spin_destroy(),
  1078  //   pthread_spin_init(),
  1079  //   pthread_spin_lock(),
  1080  //   pthread_spin_trylock(),
  1081  //   pthread_spin_unlock()
  1082  //
  1083  //   are present.
  1084  
  1085  // _SC_BARRIERS
  1086  //   This option implies the _POSIX_THREADS and _POSIX_THREAD_SAFE_FUNCTIONS
  1087  //   options. The functions
  1088  //
  1089  //   pthread_barrier_destroy(),
  1090  //   pthread_barrier_init(),
  1091  //   pthread_barrier_wait(),
  1092  //   pthread_barrierattr_destroy(),
  1093  //   pthread_barrierattr_init()
  1094  //
  1095  //   are present.
  1096  
  1097  // _SC_THREAD_SAFE_FUNCTIONS
  1098  //   Affected functions are
  1099  //
  1100  //   readdir_r(),
  1101  //   getgrgid_r(),
  1102  //   getgrnam_r(),
  1103  //   getpwnam_r(),
  1104  //   getpwuid_r(),
  1105  //   flockfile(),
  1106  //   ftrylockfile(),
  1107  //   funlockfile(),
  1108  //   getc_unlocked(),
  1109  //   getchar_unlocked(),
  1110  //   putc_unlocked(),
  1111  //   putchar_unlocked(),
  1112  //   strerror_r(),
  1113  
  1114  // _SC_TIMEOUTS
  1115  //   The functions
  1116  //
  1117  //   mq_timedreceive(), - not supported
  1118  //   mq_timedsend(), - not supported
  1119  //   posix_trace_timedgetnext_event(), - not supported
  1120  //   pthread_mutex_timedlock(),
  1121  //   pthread_rwlock_timedrdlock(),
  1122  //   pthread_rwlock_timedwrlock(),
  1123  //   sem_timedwait(),
  1124  //
  1125  //   are present.
  1126  
  1127  // _SC_TIMERS - not supported
  1128  //   The functions
  1129  //
  1130  //   clock_getres(),
  1131  //   clock_gettime(),
  1132  //   clock_settime(),
  1133  //   nanosleep(),
  1134  //   timer_create(),
  1135  //   timer_delete(),
  1136  //   timer_gettime(),
  1137  //   timer_getoverrun(),
  1138  //   timer_settime()
  1139  //
  1140  //   are present.
  1141  // #undef _POSIX_TIMERS
  1142  
  1143  // _SC_CLOCK_SELECTION
  1144  //    This option implies the _POSIX_TIMERS option. The functions
  1145  //
  1146  //    pthread_condattr_getclock(),
  1147  //    pthread_condattr_setclock(),
  1148  //    clock_nanosleep()
  1149  //
  1150  //    are present.
  1151  
  1152  // _SC_SEMAPHORES
  1153  //   The include file <semaphore.h> is present. The functions
  1154  //
  1155  //   sem_close(),
  1156  //   sem_destroy(),
  1157  //   sem_getvalue(),
  1158  //   sem_init(),
  1159  //   sem_open(),
  1160  //   sem_post(),
  1161  //   sem_trywait(),
  1162  //   sem_unlink(),
  1163  //   sem_wait()
  1164  //
  1165  //   are present.
  1166  
  1167  // Wrap cancellation points.
  1168  
  1169  // We deal here with a gcc issue for posix threading on Windows.
  1170  //    We would need to change here gcc's gthr-posix.h header, but this
  1171  //    got rejected.  So we deal it within this header.
  1172  
  1173  var _ int8 /* gen.c:2:13: */