aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library.js245
-rw-r--r--system/include/libc/sys/unistd.h2
2 files changed, 123 insertions, 124 deletions
diff --git a/src/library.js b/src/library.js
index 9b48a1a2..c164e767 100644
--- a/src/library.js
+++ b/src/library.js
@@ -1958,140 +1958,137 @@ LibraryManager.library = {
sysconf: function(name) {
// long sysconf(int name);
// http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
- // WARNING: Except for PAGE_SIZE, this is generated by a C program using
- // glibc. All the constants depend on values provided by glibc, and
- // code compiled with other C libraries is not guaranteed to work.
switch(name) {
- case 30: return PAGE_SIZE; // _SC_PAGE_SIZE / _SC_PAGESIZE
- case 132: // _SC_ADVISORY_INFO
- case 133: // _SC_BARRIERS
- case 12: // _SC_ASYNCHRONOUS_IO
- case 137: // _SC_CLOCK_SELECTION
- case 138: // _SC_CPUTIME
- case 15: // _SC_FSYNC
- case 235: // _SC_IPV6
- case 16: // _SC_MAPPED_FILES
- case 17: // _SC_MEMLOCK
- case 18: // _SC_MEMLOCK_RANGE
- case 19: // _SC_MEMORY_PROTECTION
- case 20: // _SC_MESSAGE_PASSING
- case 149: // _SC_MONOTONIC_CLOCK
- case 13: // _SC_PRIORITIZED_IO
- case 10: // _SC_PRIORITY_SCHEDULING
- case 236: // _SC_RAW_SOCKETS
- case 153: // _SC_READER_WRITER_LOCKS
- case 9: // _SC_REALTIME_SIGNALS
- case 21: // _SC_SEMAPHORES
- case 22: // _SC_SHARED_MEMORY_OBJECTS
- case 159: // _SC_SPAWN
- case 154: // _SC_SPIN_LOCKS
- case 14: // _SC_SYNCHRONIZED_IO
- case 77: // _SC_THREAD_ATTR_STACKADDR
- case 78: // _SC_THREAD_ATTR_STACKSIZE
- case 139: // _SC_THREAD_CPUTIME
- case 80: // _SC_THREAD_PRIO_INHERIT
- case 81: // _SC_THREAD_PRIO_PROTECT
- case 79: // _SC_THREAD_PRIORITY_SCHEDULING
- case 82: // _SC_THREAD_PROCESS_SHARED
- case 68: // _SC_THREAD_SAFE_FUNCTIONS
- case 67: // _SC_THREADS
- case 164: // _SC_TIMEOUTS
- case 11: // _SC_TIMERS
- case 29: // _SC_VERSION
- case 47: // _SC_2_C_BIND
- case 48: // _SC_2_C_DEV
- case 95: // _SC_2_CHAR_TERM
- case 52: // _SC_2_LOCALEDEF
- case 51: // _SC_2_SW_DEV
- case 46: // _SC_2_VERSION
+ case {{{ cDefine('_SC_PAGE_SIZE') }}}: return PAGE_SIZE;
+ case {{{ cDefine('_SC_ADVISORY_INFO') }}}:
+ case {{{ cDefine('_SC_BARRIERS') }}}:
+ case {{{ cDefine('_SC_ASYNCHRONOUS_IO') }}}:
+ case {{{ cDefine('_SC_CLOCK_SELECTION') }}}:
+ case {{{ cDefine('_SC_CPUTIME') }}}:
+ case {{{ cDefine('_SC_FSYNC') }}}:
+ case {{{ cDefine('_SC_IPV6') }}}:
+ case {{{ cDefine('_SC_MAPPED_FILES') }}}:
+ case {{{ cDefine('_SC_MEMLOCK') }}}:
+ case {{{ cDefine('_SC_MEMLOCK_RANGE') }}}:
+ case {{{ cDefine('_SC_MEMORY_PROTECTION') }}}:
+ case {{{ cDefine('_SC_MESSAGE_PASSING') }}}:
+ case {{{ cDefine('_SC_MONOTONIC_CLOCK') }}}:
+ case {{{ cDefine('_SC_PRIORITIZED_IO') }}}:
+ case {{{ cDefine('_SC_PRIORITY_SCHEDULING') }}}:
+ case {{{ cDefine('_SC_RAW_SOCKETS') }}}:
+ case {{{ cDefine('_SC_READER_WRITER_LOCKS') }}}:
+ case {{{ cDefine('_SC_REALTIME_SIGNALS') }}}:
+ case {{{ cDefine('_SC_SEMAPHORES') }}}:
+ case {{{ cDefine('_SC_SHARED_MEMORY_OBJECTS') }}}:
+ case {{{ cDefine('_SC_SPAWN') }}}:
+ case {{{ cDefine('_SC_SPIN_LOCKS') }}}:
+ case {{{ cDefine('_SC_SYNCHRONIZED_IO') }}}:
+ case {{{ cDefine('_SC_THREAD_ATTR_STACKADDR') }}}:
+ case {{{ cDefine('_SC_THREAD_ATTR_STACKSIZE') }}}:
+ case {{{ cDefine('_SC_THREAD_CPUTIME') }}}:
+ case {{{ cDefine('_SC_THREAD_PRIO_INHERIT') }}}:
+ case {{{ cDefine('_SC_THREAD_PRIO_PROTECT') }}}:
+ case {{{ cDefine('_SC_THREAD_PRIORITY_SCHEDULING') }}}:
+ case {{{ cDefine('_SC_THREAD_PROCESS_SHARED') }}}:
+ case {{{ cDefine('_SC_THREAD_SAFE_FUNCTIONS') }}}:
+ case {{{ cDefine('_SC_THREADS') }}}:
+ case {{{ cDefine('_SC_TIMEOUTS') }}}:
+ case {{{ cDefine('_SC_TIMERS') }}}:
+ case {{{ cDefine('_SC_VERSION') }}}:
+ case {{{ cDefine('_SC_2_C_BIND') }}}:
+ case {{{ cDefine('_SC_2_C_DEV') }}}:
+ case {{{ cDefine('_SC_2_CHAR_TERM') }}}:
+ case {{{ cDefine('_SC_2_LOCALEDEF') }}}:
+ case {{{ cDefine('_SC_2_SW_DEV') }}}:
+ case {{{ cDefine('_SC_2_VERSION') }}}:
return 200809;
- case 27: // _SC_MQ_OPEN_MAX
- case 246: // _SC_XOPEN_STREAMS
- case 127: // _SC_XBS5_LP64_OFF64
- case 128: // _SC_XBS5_LPBIG_OFFBIG
- case 23: // _SC_AIO_LISTIO_MAX
- case 24: // _SC_AIO_MAX
- case 160: // _SC_SPORADIC_SERVER
- case 161: // _SC_THREAD_SPORADIC_SERVER
- case 181: // _SC_TRACE
- case 182: // _SC_TRACE_EVENT_FILTER
- case 242: // _SC_TRACE_EVENT_NAME_MAX
- case 183: // _SC_TRACE_INHERIT
- case 184: // _SC_TRACE_LOG
- case 243: // _SC_TRACE_NAME_MAX
- case 244: // _SC_TRACE_SYS_MAX
- case 245: // _SC_TRACE_USER_EVENT_MAX
- case 165: // _SC_TYPED_MEMORY_OBJECTS
- case 178: // _SC_V6_LP64_OFF64
- case 179: // _SC_V6_LPBIG_OFFBIG
- case 49: // _SC_2_FORT_DEV
- case 50: // _SC_2_FORT_RUN
- case 168: // _SC_2_PBS
- case 169: // _SC_2_PBS_ACCOUNTING
- case 175: // _SC_2_PBS_CHECKPOINT
- case 170: // _SC_2_PBS_LOCATE
- case 171: // _SC_2_PBS_MESSAGE
- case 172: // _SC_2_PBS_TRACK
- case 97: // _SC_2_UPE
- case 76: // _SC_THREAD_THREADS_MAX
- case 32: // _SC_SEM_NSEMS_MAX
- case 173: // _SC_SYMLOOP_MAX
- case 35: // _SC_TIMER_MAX
+ case {{{ cDefine('_SC_MQ_OPEN_MAX') }}}:
+ case {{{ cDefine('_SC_XOPEN_STREAMS') }}}:
+ case {{{ cDefine('_SC_XBS5_LP64_OFF64') }}}:
+ case {{{ cDefine('_SC_XBS5_LPBIG_OFFBIG') }}}:
+ case {{{ cDefine('_SC_AIO_LISTIO_MAX') }}}:
+ case {{{ cDefine('_SC_AIO_MAX') }}}:
+ case {{{ cDefine('_SC_SPORADIC_SERVER') }}}:
+ case {{{ cDefine('_SC_THREAD_SPORADIC_SERVER') }}}:
+ case {{{ cDefine('_SC_TRACE') }}}:
+ case {{{ cDefine('_SC_TRACE_EVENT_FILTER') }}}:
+ case {{{ cDefine('_SC_TRACE_EVENT_NAME_MAX') }}}:
+ case {{{ cDefine('_SC_TRACE_INHERIT') }}}:
+ case {{{ cDefine('_SC_TRACE_LOG') }}}:
+ case {{{ cDefine('_SC_TRACE_NAME_MAX') }}}:
+ case {{{ cDefine('_SC_TRACE_SYS_MAX') }}}:
+ case {{{ cDefine('_SC_TRACE_USER_EVENT_MAX') }}}:
+ case {{{ cDefine('_SC_TYPED_MEMORY_OBJECTS') }}}:
+ case {{{ cDefine('_SC_V6_LP64_OFF64') }}}:
+ case {{{ cDefine('_SC_V6_LPBIG_OFFBIG') }}}:
+ case {{{ cDefine('_SC_2_FORT_DEV') }}}:
+ case {{{ cDefine('_SC_2_FORT_RUN') }}}:
+ case {{{ cDefine('_SC_2_PBS') }}}:
+ case {{{ cDefine('_SC_2_PBS_ACCOUNTING') }}}:
+ case {{{ cDefine('_SC_2_PBS_CHECKPOINT') }}}:
+ case {{{ cDefine('_SC_2_PBS_LOCATE') }}}:
+ case {{{ cDefine('_SC_2_PBS_MESSAGE') }}}:
+ case {{{ cDefine('_SC_2_PBS_TRACK') }}}:
+ case {{{ cDefine('_SC_2_UPE') }}}:
+ case {{{ cDefine('_SC_THREAD_THREADS_MAX') }}}:
+ case {{{ cDefine('_SC_SEM_NSEMS_MAX') }}}:
+ case {{{ cDefine('_SC_SYMLOOP_MAX') }}}:
+ case {{{ cDefine('_SC_TIMER_MAX') }}}:
return -1;
- case 176: // _SC_V6_ILP32_OFF32
- case 177: // _SC_V6_ILP32_OFFBIG
- case 7: // _SC_JOB_CONTROL
- case 155: // _SC_REGEXP
- case 8: // _SC_SAVED_IDS
- case 157: // _SC_SHELL
- case 125: // _SC_XBS5_ILP32_OFF32
- case 126: // _SC_XBS5_ILP32_OFFBIG
- case 92: // _SC_XOPEN_CRYPT
- case 93: // _SC_XOPEN_ENH_I18N
- case 129: // _SC_XOPEN_LEGACY
- case 130: // _SC_XOPEN_REALTIME
- case 131: // _SC_XOPEN_REALTIME_THREADS
- case 94: // _SC_XOPEN_SHM
- case 91: // _SC_XOPEN_UNIX
+ case {{{ cDefine('_SC_V6_ILP32_OFF32') }}}:
+ case {{{ cDefine('_SC_V6_ILP32_OFFBIG') }}}:
+ case {{{ cDefine('_SC_JOB_CONTROL') }}}:
+ case {{{ cDefine('_SC_REGEXP') }}}:
+ case {{{ cDefine('_SC_SAVED_IDS') }}}:
+ case {{{ cDefine('_SC_SHELL') }}}:
+ case {{{ cDefine('_SC_XBS5_ILP32_OFF32') }}}:
+ case {{{ cDefine('_SC_XBS5_ILP32_OFFBIG') }}}:
+ case {{{ cDefine('_SC_XOPEN_CRYPT') }}}:
+ case {{{ cDefine('_SC_XOPEN_ENH_I18N') }}}:
+ case {{{ cDefine('_SC_XOPEN_LEGACY') }}}:
+ case {{{ cDefine('_SC_XOPEN_REALTIME') }}}:
+ case {{{ cDefine('_SC_XOPEN_REALTIME_THREADS') }}}:
+ case {{{ cDefine('_SC_XOPEN_SHM') }}}:
+ case {{{ cDefine('_SC_XOPEN_UNIX') }}}:
return 1;
- case 74: // _SC_THREAD_KEYS_MAX
- case 60: // _SC_IOV_MAX
- case 69: // _SC_GETGR_R_SIZE_MAX
- case 70: // _SC_GETPW_R_SIZE_MAX
- case 4: // _SC_OPEN_MAX
+ case {{{ cDefine('_SC_THREAD_KEYS_MAX') }}}:
+ case {{{ cDefine('_SC_IOV_MAX') }}}:
+ case {{{ cDefine('_SC_GETGR_R_SIZE_MAX') }}}:
+ case {{{ cDefine('_SC_GETPW_R_SIZE_MAX') }}}:
+ case {{{ cDefine('_SC_OPEN_MAX') }}}:
return 1024;
- case 31: // _SC_RTSIG_MAX
- case 42: // _SC_EXPR_NEST_MAX
- case 72: // _SC_TTY_NAME_MAX
+ case {{{ cDefine('_SC_RTSIG_MAX') }}}:
+ case {{{ cDefine('_SC_EXPR_NEST_MAX') }}}:
+ case {{{ cDefine('_SC_TTY_NAME_MAX') }}}:
return 32;
- case 87: // _SC_ATEXIT_MAX
- case 26: // _SC_DELAYTIMER_MAX
- case 33: // _SC_SEM_VALUE_MAX
+ case {{{ cDefine('_SC_ATEXIT_MAX') }}}:
+ case {{{ cDefine('_SC_DELAYTIMER_MAX') }}}:
+ case {{{ cDefine('_SC_SEM_VALUE_MAX') }}}:
return 2147483647;
- case 34: // _SC_SIGQUEUE_MAX
- case 1: // _SC_CHILD_MAX
+ case {{{ cDefine('_SC_SIGQUEUE_MAX') }}}:
+ case {{{ cDefine('_SC_CHILD_MAX') }}}:
return 47839;
- case 38: // _SC_BC_SCALE_MAX
- case 36: // _SC_BC_BASE_MAX
+ case {{{ cDefine('_SC_BC_SCALE_MAX') }}}:
+ case {{{ cDefine('_SC_BC_BASE_MAX') }}}:
return 99;
- case 43: // _SC_LINE_MAX
- case 37: // _SC_BC_DIM_MAX
+ case {{{ cDefine('_SC_LINE_MAX') }}}:
+ case {{{ cDefine('_SC_BC_DIM_MAX') }}}:
return 2048;
- case 0: return 2097152; // _SC_ARG_MAX
- case 3: return 65536; // _SC_NGROUPS_MAX
- case 28: return 32768; // _SC_MQ_PRIO_MAX
- case 44: return 32767; // _SC_RE_DUP_MAX
- case 75: return 16384; // _SC_THREAD_STACK_MIN
- case 39: return 1000; // _SC_BC_STRING_MAX
- case 89: return 700; // _SC_XOPEN_VERSION
- case 71: return 256; // _SC_LOGIN_NAME_MAX
- case 40: return 255; // _SC_COLL_WEIGHTS_MAX
- case 2: return 100; // _SC_CLK_TCK
- case 180: return 64; // _SC_HOST_NAME_MAX
- case 25: return 20; // _SC_AIO_PRIO_DELTA_MAX
- case 5: return 16; // _SC_STREAM_MAX
- case 6: return 6; // _SC_TZNAME_MAX
- case 73: return 4; // _SC_THREAD_DESTRUCTOR_ITERATIONS
+ case {{{ cDefine('_SC_ARG_MAX') }}}: return 2097152;
+ case {{{ cDefine('_SC_NGROUPS_MAX') }}}: return 65536;
+ case {{{ cDefine('_SC_MQ_PRIO_MAX') }}}: return 32768;
+ case {{{ cDefine('_SC_RE_DUP_MAX') }}}: return 32767;
+ case {{{ cDefine('_SC_THREAD_STACK_MIN') }}}: return 16384;
+ case {{{ cDefine('_SC_BC_STRING_MAX') }}}: return 1000;
+ case {{{ cDefine('_SC_XOPEN_VERSION') }}}: return 700;
+ case {{{ cDefine('_SC_LOGIN_NAME_MAX') }}}: return 256;
+ case {{{ cDefine('_SC_COLL_WEIGHTS_MAX') }}}: return 255;
+ case {{{ cDefine('_SC_CLK_TCK') }}}: return 100;
+ case {{{ cDefine('_SC_HOST_NAME_MAX') }}}: return 64;
+ case {{{ cDefine('_SC_AIO_PRIO_DELTA_MAX') }}}: return 20;
+ case {{{ cDefine('_SC_STREAM_MAX') }}}: return 16;
+ case {{{ cDefine('_SC_TZNAME_MAX') }}}: return 6;
+ case {{{ cDefine('_SC_THREAD_DESTRUCTOR_ITERATIONS') }}}: return 4;
}
___setErrNo(ERRNO_CODES.EINVAL);
return -1;
diff --git a/system/include/libc/sys/unistd.h b/system/include/libc/sys/unistd.h
index a285d8d1..57be7421 100644
--- a/system/include/libc/sys/unistd.h
+++ b/system/include/libc/sys/unistd.h
@@ -406,6 +406,8 @@ int _EXFUN(unlinkat, (int, const char *, int));
#define _SC_THREAD_ROBUST_PRIO_INHERIT 122
#define _SC_THREAD_ROBUST_PRIO_PROTECT 123
#define _SC_XOPEN_UUCP 124
+/* XXX Emscripten */
+#define _SC_SHARED_MEMORY_OBJECTS 199
/*
* pathconf values per IEEE Std 1003.1, 2008 Edition