mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-07-05 02:38:31 +00:00
Improve cosmo's conformance to libc-test
This change addresses various open source compatibility issues, so that we pass 313/411 of the tests in https://github.com/jart/libc-test where earlier today we were passing about 30/411 of them, due to header toil. Please note that Glibc only passes 341/411 so 313 today is pretty good! - Make the conformance of libc/isystem/ headers nearly perfect - Import more of the remaining math library routines from Musl - Fix inconsistencies with type signatures of calls like umask - Write tests for getpriority/setpriority which work great now - conform to `struct sockaddr *` on remaining socket functions - Import a bunch of uninteresting stdlib functions e.g. rand48 - Introduce readdir_r, scandir, pthread_kill, sigsetjmp, etc.. Follow the instructions in our `tool/scripts/cosmocc` toolchain to run these tests yourself. You use `make CC=cosmocc` on the test repository
This commit is contained in:
parent
467a332e38
commit
e557058ac8
189 changed files with 5091 additions and 884 deletions
32
libc/runtime/__sigsetjmp_tail.c
Normal file
32
libc/runtime/__sigsetjmp_tail.c
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2022 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/assert.h"
|
||||
#include "libc/calls/struct/sigset.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/sysv/consts/sig.h"
|
||||
|
||||
// kudos rich felker for the brilliant design
|
||||
hidden int __sigsetjmp_tail(sigjmp_buf jb, int rc) {
|
||||
_Static_assert(
|
||||
sizeof(sigjmp_buf) == sizeof(jmp_buf) + 8 + 8 + sizeof(sigset_t),
|
||||
"please recompute sigjmp_buf w.r.t. sigset_t");
|
||||
void *p = (char *)jb + sizeof(jmp_buf) + 8 + 8;
|
||||
_npassert(!sigprocmask(SIG_SETMASK, rc ? p : 0, rc ? 0 : p));
|
||||
return rc;
|
||||
}
|
56
libc/runtime/daemon.c
Normal file
56
libc/runtime/daemon.c
Normal file
|
@ -0,0 +1,56 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2022 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/calls/calls.h"
|
||||
#include "libc/paths.h"
|
||||
#include "libc/sysv/consts/o.h"
|
||||
|
||||
/**
|
||||
* Daemonizes process.
|
||||
*/
|
||||
int daemon(int nochdir, int noclose) {
|
||||
int fd;
|
||||
|
||||
switch (fork()) {
|
||||
case -1:
|
||||
return (-1);
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
_Exit(0);
|
||||
}
|
||||
|
||||
if (setsid() == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!nochdir) {
|
||||
chdir("/");
|
||||
}
|
||||
|
||||
if (!noclose && (fd = open(_PATH_DEVNULL, O_RDWR)) != -1) {
|
||||
dup2(fd, 0);
|
||||
dup2(fd, 1);
|
||||
dup2(fd, 2);
|
||||
if (fd > 2) {
|
||||
close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -34,6 +34,7 @@
|
|||
#include "libc/stdalign.internal.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/sysv/consts/nrlinux.h"
|
||||
#include "libc/thread/posixthread.internal.h"
|
||||
#include "libc/thread/tls.h"
|
||||
#include "third_party/xed/x86.h"
|
||||
|
||||
|
@ -57,6 +58,7 @@ typedef char xmm_t __attribute__((__vector_size__(16), __aligned__(1)));
|
|||
|
||||
__msabi extern typeof(TlsAlloc) *const __imp_TlsAlloc;
|
||||
|
||||
struct PosixThread _pthread_main;
|
||||
extern unsigned char __tls_mov_nt_rax[];
|
||||
extern unsigned char __tls_add_nt_rax[];
|
||||
_Alignas(TLS_ALIGNMENT) static char __static_tls[5008];
|
||||
|
@ -127,6 +129,7 @@ privileged void __enable_tls(void) {
|
|||
tib->tib_self = tib;
|
||||
tib->tib_self2 = tib;
|
||||
tib->tib_errno = __errno;
|
||||
tib->tib_pthread = (pthread_t)&_pthread_main;
|
||||
if (IsLinux()) {
|
||||
// gnu/systemd guarantees pid==tid for the main thread so we can
|
||||
// avoid issuing a superfluous system call at startup in program
|
||||
|
@ -134,6 +137,9 @@ privileged void __enable_tls(void) {
|
|||
} else {
|
||||
tib->tib_tid = sys_gettid();
|
||||
}
|
||||
_pthread_main.tib = tib;
|
||||
_pthread_main.tid = tib->tib_tid;
|
||||
_pthread_main.flags = PT_MAINTHREAD;
|
||||
__repmovsb(tls, _tdata_start, _TLDZ);
|
||||
|
||||
// ask the operating system to change the x86 segment register
|
||||
|
|
119
libc/runtime/fenv.S
Normal file
119
libc/runtime/fenv.S
Normal file
|
@ -0,0 +1,119 @@
|
|||
/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│
|
||||
│vi: set et ft=asm ts=8 tw=8 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ │
|
||||
│ Musl Libc │
|
||||
│ Copyright © 2005-2014 Rich Felker, et al. │
|
||||
│ │
|
||||
│ Permission is hereby granted, free of charge, to any person obtaining │
|
||||
│ a copy of this software and associated documentation files (the │
|
||||
│ "Software"), to deal in the Software without restriction, including │
|
||||
│ without limitation the rights to use, copy, modify, merge, publish, │
|
||||
│ distribute, sublicense, and/or sell copies of the Software, and to │
|
||||
│ permit persons to whom the Software is furnished to do so, subject to │
|
||||
│ the following conditions: │
|
||||
│ │
|
||||
│ The above copyright notice and this permission notice shall be │
|
||||
│ included in all copies or substantial portions of the Software. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, │
|
||||
│ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF │
|
||||
│ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. │
|
||||
│ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY │
|
||||
│ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, │
|
||||
│ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE │
|
||||
│ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
|
||||
│ │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/macros.internal.h"
|
||||
|
||||
feclearexcept:
|
||||
# maintain exceptions in the sse mxcsr, clear x87 exceptions
|
||||
mov %edi,%ecx
|
||||
and $0x3f,%ecx
|
||||
fnstsw %ax
|
||||
test %eax,%ecx
|
||||
jz 1f
|
||||
fnclex
|
||||
1: stmxcsr -8(%rsp)
|
||||
and $0x3f,%eax
|
||||
or %eax,-8(%rsp)
|
||||
test %ecx,-8(%rsp)
|
||||
jz 1f
|
||||
not %ecx
|
||||
and %ecx,-8(%rsp)
|
||||
ldmxcsr -8(%rsp)
|
||||
1: xor %eax,%eax
|
||||
ret
|
||||
.endfn feclearexcept,globl
|
||||
|
||||
feraiseexcept:
|
||||
and $0x3f,%edi
|
||||
stmxcsr -8(%rsp)
|
||||
or %edi,-8(%rsp)
|
||||
ldmxcsr -8(%rsp)
|
||||
xor %eax,%eax
|
||||
ret
|
||||
.endfn feraiseexcept,globl
|
||||
|
||||
__fesetround:
|
||||
push %rax
|
||||
xor %eax,%eax
|
||||
mov %edi,%ecx
|
||||
fnstcw (%rsp)
|
||||
andb $0xf3,1(%rsp)
|
||||
or %ch,1(%rsp)
|
||||
fldcw (%rsp)
|
||||
stmxcsr (%rsp)
|
||||
shl $3,%ch
|
||||
andb $0x9f,1(%rsp)
|
||||
or %ch,1(%rsp)
|
||||
ldmxcsr (%rsp)
|
||||
pop %rcx
|
||||
ret
|
||||
.endfn __fesetround,globl,hidden
|
||||
|
||||
fegetround:
|
||||
push %rax
|
||||
stmxcsr (%rsp)
|
||||
pop %rax
|
||||
shr $3,%eax
|
||||
and $0xc00,%eax
|
||||
ret
|
||||
.endfn fegetround,globl
|
||||
|
||||
fegetenv:
|
||||
xor %eax,%eax
|
||||
fnstenv (%rdi)
|
||||
stmxcsr 28(%rdi)
|
||||
ret
|
||||
.endfn fegetenv,globl
|
||||
|
||||
fesetenv:
|
||||
xor %eax,%eax
|
||||
inc %rdi
|
||||
jz 1f
|
||||
fldenv -1(%rdi)
|
||||
ldmxcsr 27(%rdi)
|
||||
ret
|
||||
1: push %rax
|
||||
push %rax
|
||||
pushq $0xffff
|
||||
pushq $0x37f
|
||||
fldenv (%rsp)
|
||||
pushq $0x1f80
|
||||
ldmxcsr (%rsp)
|
||||
add $40,%rsp
|
||||
ret
|
||||
.endfn fesetenv,globl
|
||||
|
||||
fetestexcept:
|
||||
and $0x3f,%edi
|
||||
push %rax
|
||||
stmxcsr (%rsp)
|
||||
pop %rsi
|
||||
fnstsw %ax
|
||||
or %esi,%eax
|
||||
and %edi,%eax
|
||||
ret
|
||||
.endfn fetestexcept,globl
|
|
@ -7,16 +7,24 @@
|
|||
#define FE_TOWARDZERO 0x0c00
|
||||
|
||||
#define FE_INVALID 1
|
||||
#define __FE_DENORM 2
|
||||
#define FE_DIVBYZERO 4
|
||||
#define FE_OVERFLOW 8
|
||||
#define FE_UNDERFLOW 16
|
||||
#define FE_INEXACT 32
|
||||
#define FE_ALL_EXCEPT 61
|
||||
#define FE_ALL_EXCEPT 63
|
||||
|
||||
#ifdef __FLT_EVAL_METHOD__
|
||||
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
|
||||
#else
|
||||
#define FLT_EVAL_METHOD 0
|
||||
#endif
|
||||
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
#define FLT_ROUNDS (__flt_rounds())
|
||||
#define FE_DFL_ENV ((const fenv_t *)-1)
|
||||
|
||||
typedef void *fenv_t;
|
||||
typedef uint16_t fexcept_t;
|
||||
|
|
|
@ -7,6 +7,7 @@ COSMOPOLITAN_C_START_
|
|||
╚────────────────────────────────────────────────────────────────────────────│*/
|
||||
|
||||
typedef long jmp_buf[8];
|
||||
typedef long sigjmp_buf[12];
|
||||
|
||||
extern char **environ; /* CRT */
|
||||
extern int __argc; /* CRT */
|
||||
|
@ -49,6 +50,7 @@ extern size_t __virtualmax;
|
|||
extern bool __isworker;
|
||||
|
||||
void mcount(void);
|
||||
int daemon(int, int);
|
||||
int _freestack(void *);
|
||||
void _bt(const char *, ...);
|
||||
unsigned long getauxval(unsigned long);
|
||||
|
@ -60,6 +62,8 @@ void longjmp(jmp_buf, int) libcesque wontreturn paramsnonnull();
|
|||
axdx_t setlongerjmp(jmp_buf) libcesque returnstwice paramsnonnull();
|
||||
void longerjmp(jmp_buf, intptr_t) libcesque wontreturn paramsnonnull();
|
||||
int _setjmp(jmp_buf) libcesque returnstwice paramsnonnull();
|
||||
int sigsetjmp(sigjmp_buf, int) libcesque returnstwice paramsnonnull();
|
||||
void siglongjmp(sigjmp_buf, int) libcesque wontreturn paramsnonnull();
|
||||
void _longjmp(jmp_buf, int) libcesque wontreturn paramsnonnull();
|
||||
void exit(int) wontreturn;
|
||||
void _exit(int) libcesque wontreturn;
|
||||
|
|
49
libc/runtime/sigsetjmp.S
Normal file
49
libc/runtime/sigsetjmp.S
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*-*- mode:unix-assembly; indent-tabs-mode:t; tab-width:8; coding:utf-8 -*-│
|
||||
│vi: set et ft=asm ts=8 tw=8 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ │
|
||||
│ Musl Libc │
|
||||
│ Copyright © 2005-2014 Rich Felker, et al. │
|
||||
│ │
|
||||
│ Permission is hereby granted, free of charge, to any person obtaining │
|
||||
│ a copy of this software and associated documentation files (the │
|
||||
│ "Software"), to deal in the Software without restriction, including │
|
||||
│ without limitation the rights to use, copy, modify, merge, publish, │
|
||||
│ distribute, sublicense, and/or sell copies of the Software, and to │
|
||||
│ permit persons to whom the Software is furnished to do so, subject to │
|
||||
│ the following conditions: │
|
||||
│ │
|
||||
│ The above copyright notice and this permission notice shall be │
|
||||
│ included in all copies or substantial portions of the Software. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, │
|
||||
│ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF │
|
||||
│ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. │
|
||||
│ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY │
|
||||
│ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, │
|
||||
│ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE │
|
||||
│ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
|
||||
│ │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/macros.internal.h"
|
||||
|
||||
// Saves caller CPU state and signal mask.
|
||||
//
|
||||
// @param rdi points to jmp_buf
|
||||
// @param esi if non-zero will cause mask to be saved
|
||||
// @return eax 0 when set and !0 when longjmp'd
|
||||
// @returnstwice
|
||||
sigsetjmp:
|
||||
test %esi,%esi
|
||||
jz setjmp
|
||||
popq 64(%rdi)
|
||||
mov %rbx,72(%rdi)
|
||||
mov %rdi,%rbx
|
||||
call setjmp
|
||||
pushq 64(%rbx)
|
||||
mov %rbx,%rdi
|
||||
mov %eax,%esi
|
||||
mov 72(%rdi),%rbx
|
||||
jmp __sigsetjmp_tail
|
||||
.hidden __sigsetjmp_tail
|
||||
.endfn sigsetjmp,globl
|
|
@ -1,13 +1,147 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_RUNTIME_SYSCONF_H_
|
||||
#define COSMOPOLITAN_LIBC_RUNTIME_SYSCONF_H_
|
||||
|
||||
#define _SC_ARG_MAX 0
|
||||
#define _SC_CHILD_MAX 1
|
||||
#define _SC_CLK_TCK 2
|
||||
#define _SC_OPEN_MAX 4
|
||||
#define _SC_PAGESIZE 30
|
||||
#define _SC_PAGE_SIZE 30
|
||||
#define _SC_NPROCESSORS_ONLN 1002
|
||||
#define _SC_ARG_MAX 0
|
||||
#define _SC_CHILD_MAX 1
|
||||
#define _SC_CLK_TCK 2
|
||||
#define _SC_NGROUPS_MAX 3
|
||||
#define _SC_OPEN_MAX 4
|
||||
#define _SC_STREAM_MAX 5
|
||||
#define _SC_TZNAME_MAX 6
|
||||
#define _SC_JOB_CONTROL 7
|
||||
#define _SC_SAVED_IDS 8
|
||||
#define _SC_REALTIME_SIGNALS 9
|
||||
#define _SC_PRIORITY_SCHEDULING 10
|
||||
#define _SC_TIMERS 11
|
||||
#define _SC_ASYNCHRONOUS_IO 12
|
||||
#define _SC_PRIORITIZED_IO 13
|
||||
#define _SC_SYNCHRONIZED_IO 14
|
||||
#define _SC_FSYNC 15
|
||||
#define _SC_MAPPED_FILES 16
|
||||
#define _SC_MEMLOCK 17
|
||||
#define _SC_MEMLOCK_RANGE 18
|
||||
#define _SC_MEMORY_PROTECTION 19
|
||||
#define _SC_MESSAGE_PASSING 20
|
||||
#define _SC_SEMAPHORES 21
|
||||
#define _SC_SHARED_MEMORY_OBJECTS 22
|
||||
#define _SC_AIO_LISTIO_MAX 23
|
||||
#define _SC_AIO_MAX 24
|
||||
#define _SC_AIO_PRIO_DELTA_MAX 25
|
||||
#define _SC_DELAYTIMER_MAX 26
|
||||
#define _SC_MQ_OPEN_MAX 27
|
||||
#define _SC_MQ_PRIO_MAX 28
|
||||
#define _SC_VERSION 29
|
||||
#define _SC_PAGE_SIZE 30
|
||||
#define _SC_PAGESIZE 30 /* !! */
|
||||
#define _SC_RTSIG_MAX 31
|
||||
#define _SC_SEM_NSEMS_MAX 32
|
||||
#define _SC_SEM_VALUE_MAX 33
|
||||
#define _SC_SIGQUEUE_MAX 34
|
||||
#define _SC_TIMER_MAX 35
|
||||
#define _SC_BC_BASE_MAX 36
|
||||
#define _SC_BC_DIM_MAX 37
|
||||
#define _SC_BC_SCALE_MAX 38
|
||||
#define _SC_BC_STRING_MAX 39
|
||||
#define _SC_COLL_WEIGHTS_MAX 40
|
||||
#define _SC_EXPR_NEST_MAX 42
|
||||
#define _SC_LINE_MAX 43
|
||||
#define _SC_RE_DUP_MAX 44
|
||||
#define _SC_2_VERSION 46
|
||||
#define _SC_2_C_BIND 47
|
||||
#define _SC_2_C_DEV 48
|
||||
#define _SC_2_FORT_DEV 49
|
||||
#define _SC_2_FORT_RUN 50
|
||||
#define _SC_2_SW_DEV 51
|
||||
#define _SC_2_LOCALEDEF 52
|
||||
#define _SC_UIO_MAXIOV 60 /* !! */
|
||||
#define _SC_IOV_MAX 60
|
||||
#define _SC_THREADS 67
|
||||
#define _SC_THREAD_SAFE_FUNCTIONS 68
|
||||
#define _SC_GETGR_R_SIZE_MAX 69
|
||||
#define _SC_GETPW_R_SIZE_MAX 70
|
||||
#define _SC_LOGIN_NAME_MAX 71
|
||||
#define _SC_TTY_NAME_MAX 72
|
||||
#define _SC_THREAD_DESTRUCTOR_ITERATIONS 73
|
||||
#define _SC_THREAD_KEYS_MAX 74
|
||||
#define _SC_THREAD_STACK_MIN 75
|
||||
#define _SC_THREAD_THREADS_MAX 76
|
||||
#define _SC_THREAD_ATTR_STACKADDR 77
|
||||
#define _SC_THREAD_ATTR_STACKSIZE 78
|
||||
#define _SC_THREAD_PRIORITY_SCHEDULING 79
|
||||
#define _SC_THREAD_PRIO_INHERIT 80
|
||||
#define _SC_THREAD_PRIO_PROTECT 81
|
||||
#define _SC_THREAD_PROCESS_SHARED 82
|
||||
#define _SC_NPROCESSORS_CONF 83
|
||||
#define _SC_NPROCESSORS_ONLN 84
|
||||
#define _SC_PHYS_PAGES 85
|
||||
#define _SC_AVPHYS_PAGES 86
|
||||
#define _SC_ATEXIT_MAX 87
|
||||
#define _SC_PASS_MAX 88
|
||||
#define _SC_XOPEN_VERSION 89
|
||||
#define _SC_XOPEN_XCU_VERSION 90
|
||||
#define _SC_XOPEN_UNIX 91
|
||||
#define _SC_XOPEN_CRYPT 92
|
||||
#define _SC_XOPEN_ENH_I18N 93
|
||||
#define _SC_XOPEN_SHM 94
|
||||
#define _SC_2_CHAR_TERM 95
|
||||
#define _SC_2_UPE 97
|
||||
#define _SC_XOPEN_XPG2 98
|
||||
#define _SC_XOPEN_XPG3 99
|
||||
#define _SC_XOPEN_XPG4 100
|
||||
#define _SC_NZERO 109
|
||||
#define _SC_XBS5_ILP32_OFF32 125
|
||||
#define _SC_XBS5_ILP32_OFFBIG 126
|
||||
#define _SC_XBS5_LP64_OFF64 127
|
||||
#define _SC_XBS5_LPBIG_OFFBIG 128
|
||||
#define _SC_XOPEN_LEGACY 129
|
||||
#define _SC_XOPEN_REALTIME 130
|
||||
#define _SC_XOPEN_REALTIME_THREADS 131
|
||||
#define _SC_ADVISORY_INFO 132
|
||||
#define _SC_BARRIERS 133
|
||||
#define _SC_CLOCK_SELECTION 137
|
||||
#define _SC_CPUTIME 138
|
||||
#define _SC_THREAD_CPUTIME 139
|
||||
#define _SC_MONOTONIC_CLOCK 149
|
||||
#define _SC_READER_WRITER_LOCKS 153
|
||||
#define _SC_SPIN_LOCKS 154
|
||||
#define _SC_REGEXP 155
|
||||
#define _SC_SHELL 157
|
||||
#define _SC_SPAWN 159
|
||||
#define _SC_SPORADIC_SERVER 160
|
||||
#define _SC_THREAD_SPORADIC_SERVER 161
|
||||
#define _SC_TIMEOUTS 164
|
||||
#define _SC_TYPED_MEMORY_OBJECTS 165
|
||||
#define _SC_2_PBS 168
|
||||
#define _SC_2_PBS_ACCOUNTING 169
|
||||
#define _SC_2_PBS_LOCATE 170
|
||||
#define _SC_2_PBS_MESSAGE 171
|
||||
#define _SC_2_PBS_TRACK 172
|
||||
#define _SC_SYMLOOP_MAX 173
|
||||
#define _SC_STREAMS 174
|
||||
#define _SC_2_PBS_CHECKPOINT 175
|
||||
#define _SC_V6_ILP32_OFF32 176
|
||||
#define _SC_V6_ILP32_OFFBIG 177
|
||||
#define _SC_V6_LP64_OFF64 178
|
||||
#define _SC_V6_LPBIG_OFFBIG 179
|
||||
#define _SC_HOST_NAME_MAX 180
|
||||
#define _SC_TRACE 181
|
||||
#define _SC_TRACE_EVENT_FILTER 182
|
||||
#define _SC_TRACE_INHERIT 183
|
||||
#define _SC_TRACE_LOG 184
|
||||
#define _SC_IPV6 235
|
||||
#define _SC_RAW_SOCKETS 236
|
||||
#define _SC_V7_ILP32_OFF32 237
|
||||
#define _SC_V7_ILP32_OFFBIG 238
|
||||
#define _SC_V7_LP64_OFF64 239
|
||||
#define _SC_V7_LPBIG_OFFBIG 240
|
||||
#define _SC_SS_REPL_MAX 241
|
||||
#define _SC_TRACE_EVENT_NAME_MAX 242
|
||||
#define _SC_TRACE_NAME_MAX 243
|
||||
#define _SC_TRACE_SYS_MAX 244
|
||||
#define _SC_TRACE_USER_EVENT_MAX 245
|
||||
#define _SC_XOPEN_STREAMS 246
|
||||
#define _SC_THREAD_ROBUST_PRIO_INHERIT 247
|
||||
#define _SC_THREAD_ROBUST_PRIO_PROTECT 248
|
||||
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue