Added missing posixoptions and sysconf constants according POSIX.1-2017 standard
Change-Id: I2721ea4f2c3dbe0ef6a11c3a61da6034b4a7fd48 Reviewed-on: https://review.haiku-os.org/c/haiku/+/4371 Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org> Reviewed-by: waddlesplash <waddlesplash@gmail.com> Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>
This commit is contained in:
parent
4562b1727c
commit
d53856a1b6
@ -44,8 +44,9 @@
|
||||
#define PATH_MAX (1024)
|
||||
#define PIPE_BUF (4 * 1024)
|
||||
#define PIPE_MAX (512)
|
||||
#define PTHREAD_KEYS_MAX 256
|
||||
#define PTHREAD_KEYS_MAX (256)
|
||||
#define PTHREAD_STACK_MIN (2 * PAGESIZE)
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS (4)
|
||||
#define SSIZE_MAX __HAIKU_SADDR_MAX
|
||||
#define TTY_NAME_MAX (256)
|
||||
#define TZNAME_MAX (32)
|
||||
@ -78,6 +79,21 @@
|
||||
|
||||
#define _POSIX2_LINE_MAX (2048)
|
||||
|
||||
#define BC_BASE_MAX (99)
|
||||
#define BC_DIM_MAX (2048)
|
||||
#define BC_SCALE_MAX (99)
|
||||
#define BC_STRING_MAX (1000)
|
||||
|
||||
|
||||
#define COLL_WEIGHTS_MAX (10)
|
||||
#define EXPR_NEST_MAX (32)
|
||||
#define LINE_MAX (2048)
|
||||
|
||||
#define MQ_OPEN_MAX (0) /* MSG */
|
||||
#define MQ_PRIO_MAX (0) /* MSG */
|
||||
|
||||
#define RE_DUP_MAX (255) /* for conformance, redefined in regex.h */
|
||||
|
||||
#ifdef _XOPEN_SOURCE
|
||||
/* The XSI name for PAGESIZE, with extra underscore included. Only define if
|
||||
* _XOPEN_SOURCE was requested, otherwise it could conflict with the application.
|
||||
|
@ -49,8 +49,6 @@
|
||||
#define PTHREAD_PRIO_INHERIT 1
|
||||
#define PTHREAD_PRIO_PROTECT 2
|
||||
|
||||
#define PTHREAD_DESTRUCTOR_ITERATIONS 4
|
||||
|
||||
|
||||
/* private structure */
|
||||
struct __pthread_cleanup_handler {
|
||||
|
@ -10,6 +10,8 @@
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <config/HaikuConfig.h>
|
||||
|
||||
|
||||
/* access modes */
|
||||
#define R_OK 4
|
||||
@ -29,31 +31,116 @@
|
||||
#define F_TEST 3 /* test a section for locks by other processes */
|
||||
|
||||
/* POSIX version support */
|
||||
#define _POSIX_VERSION (199009L) /* TODO: Update! */
|
||||
#define _POSIX_VERSION (200809L)
|
||||
#define _POSIX2_VERSION (200809L)
|
||||
#define _XOPEN_VERSION (700)
|
||||
|
||||
|
||||
#define _POSIX_CHOWN_RESTRICTED 1
|
||||
#define _POSIX_JOB_CONTROL 1
|
||||
#define _POSIX_NO_TRUNC 0
|
||||
#define _POSIX_SAVED_IDS 1
|
||||
#define _POSIX_VDISABLE ((unsigned char)-2)
|
||||
/* TODO: Check this! */
|
||||
/* TODO: Update these to the current POSIX version! Ideally after actually
|
||||
supporting the features. */
|
||||
#define _POSIX_BARRIERS (200112L)
|
||||
#define _POSIX_SEMAPHORES (200112L)
|
||||
#define _POSIX_THREADS (200112L)
|
||||
|
||||
/*
|
||||
* POSIX options and options groups.
|
||||
* Please keep this list in the same order as the applicable standard.
|
||||
* https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap02.html#tag_02_01_06
|
||||
*/
|
||||
#define _POSIX_ADVISORY_INFO (200809L)
|
||||
#define _POSIX_ASYNCHRONOUS_IO (-1)
|
||||
#define _POSIX_BARRIERS (200809L)
|
||||
#define _POSIX_CHOWN_RESTRICTED (1)
|
||||
#define _POSIX_CLOCK_SELECTION (200809L)
|
||||
#define _POSIX_CPUTIME (200809L)
|
||||
#define _POSIX_FSYNC (200809L)
|
||||
#define _POSIX_IPV6 (200809L)
|
||||
#define _POSIX_JOB_CONTROL (1)
|
||||
#define _POSIX_MAPPED_FILES (200809L)
|
||||
#define _POSIX_THREAD_PROCESS_SHARED (200809L)
|
||||
#define _POSIX_MEMLOCK (-1)
|
||||
#define _POSIX_MEMLOCK_RANGE (200809L)
|
||||
#define _POSIX_MEMORY_PROTECTION (200809L)
|
||||
#define _POSIX_MESSAGE_PASSING (-1)
|
||||
#define _POSIX_MONOTONIC_CLOCK (200809L) /* aio_suspend() is missing in Haiku1 */
|
||||
#define _POSIX_NO_TRUNC (0)
|
||||
#define _POSIX_PRIORITIZED_IO (-1)
|
||||
#define _POSIX_PRIORITY_SCHEDULING (-1)
|
||||
#define _POSIX_RAW_SOCKETS (-1)
|
||||
#define _POSIX_READER_WRITER_LOCKS (200809L)
|
||||
#define _POSIX_REALTIME_SIGNALS (200809L)
|
||||
#define _POSIX_REGEXP (200809L)
|
||||
#define _POSIX_SAVED_IDS (1)
|
||||
#define _POSIX_SEMAPHORES (200112L)
|
||||
#define _POSIX_SHARED_MEMORY_OBJECTS (200809L)
|
||||
#define _POSIX_SHELL (200809L)
|
||||
#define _POSIX_SPAWN (200809L)
|
||||
#define _POSIX_SPIN_LOCKS (-1)
|
||||
#define _POSIX_SPORADIC_SERVER (-1)
|
||||
#define _POSIX_SYNCHRONIZED_IO (-1) /* missing fdatasync() */
|
||||
#define _POSIX_THREAD_ATTR_STACKADDR (200809L)
|
||||
#define _POSIX_THREAD_ATTR_STACKSIZE (200809L)
|
||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING (-1) /* currently unsupported */
|
||||
#define _POSIX_REALTIME_SIGNALS (200809L)
|
||||
#define _POSIX_MEMORY_PROTECTION (200809L)
|
||||
#define _POSIX_MONOTONIC_CLOCK (200809L)
|
||||
#define _POSIX_TIMERS (200809L)
|
||||
#define _POSIX_CPUTIME (200809L)
|
||||
#define _POSIX_THREAD_CPUTIME (200809L)
|
||||
#define _POSIX_THREAD_PRIO_INHERIT (-1) /* not inplemented */
|
||||
#define _POSIX_THREAD_PRIO_PROTECT (-1)
|
||||
#define _POSIX_THREAD_PRIORITY_SCHEDULING (-1)
|
||||
#define _POSIX_THREAD_PROCESS_SHARED (200809L)
|
||||
#define _POSIX_THREAD_ROBUST_PRIO_INHERIT (-1)
|
||||
#define _POSIX_THREAD_ROBUST_PRIO_PROTECT (-1)
|
||||
#define _POSIX_THREAD_SAFE_FUNCTIONS (200809L)
|
||||
#define _POSIX_THREAD_SPORADIC_SERVER (-1)
|
||||
#define _POSIX_THREADS (200809L)
|
||||
#define _POSIX_TIMEOUTS (-1)
|
||||
#define _POSIX_TIMERS (200809L)
|
||||
#define _POSIX_TRACE (-1)
|
||||
#define _POSIX_TRACE_EVENT_FILTER (-1)
|
||||
#define _POSIX_TRACE_INHERIT (-1)
|
||||
#define _POSIX_TRACE_LOG (-1)
|
||||
#define _POSIX_TYPED_MEMORY_OBJECTS (-1)
|
||||
|
||||
#define __ILP32_OFF32 (-1)
|
||||
#ifdef __HAIKU_ARCH_64_BIT
|
||||
#define __ILP32_OFFBIG (-1)
|
||||
#define __LP64_OFF64 (0)
|
||||
#else /* __HAIKU_ARCH_32_BIT */
|
||||
#define __ILP32_OFFBIG (0)
|
||||
#define __LP64_OFF64 (-1)
|
||||
#endif
|
||||
#define __LPBIG_OFFBIG (-1)
|
||||
|
||||
|
||||
#define _POSIX_V6_ILP32_OFF32 __ILP32_OFF32 /* OB */
|
||||
#define _POSIX_V6_ILP32_OFFBIG __ILP32_OFFBIG /* OB */
|
||||
#define _POSIX_V6_LP64_OFF64 __LP64_OFF64 /* OB */
|
||||
#define _POSIX_V6_LPBIG_OFFBIG __LPBIG_OFFBIG /* OB */
|
||||
|
||||
#define _POSIX_V7_ILP32_OFF32 __ILP32_OFF32
|
||||
#define _POSIX_V7_ILP32_OFFBIG __ILP32_OFFBIG
|
||||
#define _POSIX_V7_LP64_OFF64 __LP64_OFF64
|
||||
#define _POSIX_V7_LPBIG_OFFBIG __LPBIG_OFFBIG
|
||||
|
||||
|
||||
/* POSIX2 */
|
||||
#define _POSIX2_C_BIND (200809L)
|
||||
#define _POSIX2_C_DEV (-1)
|
||||
#define _POSIX2_CHAR_TERM (1)
|
||||
#define _POSIX2_FORT_DEV (-1)
|
||||
#define _POSIX2_FORT_RUN (-1)
|
||||
#define _POSIX2_LOCALEDEF (-1)
|
||||
#define _POSIX2_PBS (-1)
|
||||
#define _POSIX2_PBS_ACCOUNTING (-1)
|
||||
#define _POSIX2_PBS_CHECKPOINT (-1)
|
||||
#define _POSIX2_PBS_LOCATE (-1)
|
||||
#define _POSIX2_PBS_MESSAGE (-1)
|
||||
#define _POSIX2_PBS_TRACK (-1)
|
||||
#define _POSIX2_SW_DEV (-1)
|
||||
#define _POSIX2_UPE (-1)
|
||||
|
||||
/* XSI */
|
||||
#define _XOPEN_CRYPT (-1)
|
||||
#define _XOPEN_ENH_I18N (-1)
|
||||
#define _XOPEN_LEGACY (-1)
|
||||
#define _XOPEN_REALTIME (-1)
|
||||
#define _XOPEN_REALTIME_THREADS (-1)
|
||||
#define _XOPEN_SHM (-1)
|
||||
#define _XOPEN_STREAMS (-1)
|
||||
#define _XOPEN_UNIX (-1)
|
||||
#define _XOPEN_UUCP (-1)
|
||||
|
||||
/* pathconf() constants */
|
||||
/* BeOS supported values, do not touch */
|
||||
@ -136,6 +223,88 @@
|
||||
#define _SC_SYMLOOP_MAX 63
|
||||
#define _SC_SHELL 64
|
||||
#define _SC_TTY_NAME_MAX 65
|
||||
#define _SC_ADVISORY_INFO 66
|
||||
#define _SC_BARRIERS 67
|
||||
#define _SC_CLOCK_SELECTION 68
|
||||
#define _SC_FSYNC 69
|
||||
#define _SC_IPV6 70
|
||||
#define _SC_MEMLOCK 71
|
||||
#define _SC_MEMLOCK_RANGE 72
|
||||
#define _SC_MESSAGE_PASSING 73
|
||||
#define _SC_PRIORITIZED_IO 74
|
||||
#define _SC_PRIORITY_SCHEDULING 75
|
||||
#define _SC_READER_WRITER_LOCKS 76
|
||||
#define _SC_SHARED_MEMORY_OBJECTS 77
|
||||
#define _SC_SPAWN 78
|
||||
#define _SC_SPIN_LOCKS 79
|
||||
#define _SC_SPORADIC_SERVER 80
|
||||
#define _SC_SYNCHRONIZED_IO 81
|
||||
#define _SC_THREAD_PRIO_INHERIT 82
|
||||
#define _SC_THREAD_PRIO_PROTECT 83
|
||||
#define _SC_THREAD_ROBUST_PRIO_INHERIT 84
|
||||
#define _SC_THREAD_ROBUST_PRIO_PROTECT 85
|
||||
#define _SC_THREAD_SAFE_FUNCTIONS 86
|
||||
#define _SC_THREAD_SPORADIC_SERVER 87
|
||||
#define _SC_TIMEOUTS 88
|
||||
#define _SC_TRACE 89
|
||||
#define _SC_TRACE_EVENT_FILTER 90
|
||||
#define _SC_TRACE_INHERIT 91
|
||||
#define _SC_TRACE_LOG 92
|
||||
#define _SC_TYPED_MEMORY_OBJECTS 93
|
||||
#define _SC_V6_ILP32_OFF32 94 /* OB */
|
||||
#define _SC_V6_ILP32_OFFBIG 95 /* OB */
|
||||
#define _SC_V6_LP64_OFF64 96 /* OB */
|
||||
#define _SC_V6_LPBIG_OFFBIG 97 /* OB */
|
||||
#define _SC_V7_ILP32_OFF32 98
|
||||
#define _SC_V7_ILP32_OFFBIG 99
|
||||
#define _SC_V7_LP64_OFF64 100
|
||||
#define _SC_V7_LPBIG_OFFBIG 101
|
||||
#define _SC_2_C_BIND 102
|
||||
#define _SC_2_C_DEV 103
|
||||
#define _SC_2_CHAR_TERM 104
|
||||
#define _SC_2_FORT_DEV 105
|
||||
#define _SC_2_FORT_RUN 106
|
||||
#define _SC_2_LOCALEDEF 107
|
||||
#define _SC_2_PBS 108 /* OB BE */
|
||||
#define _SC_2_PBS_ACCOUNTING 109 /* OB BE */
|
||||
#define _SC_2_PBS_CHECKPOINT 110 /* OB BE */
|
||||
#define _SC_2_PBS_LOCATE 111 /* OB BE */
|
||||
#define _SC_2_PBS_MESSAGE 112 /* OB BE */
|
||||
#define _SC_2_PBS_TRACK 113 /* OB BE */
|
||||
#define _SC_2_SW_DEV 114
|
||||
#define _SC_2_UPE 115
|
||||
#define _SC_2_VERSION 116
|
||||
#define _SC_XOPEN_CRYPT 117
|
||||
#define _SC_XOPEN_ENH_I18N 118
|
||||
#define _SC_XOPEN_REALTIME 119
|
||||
#define _SC_XOPEN_REALTIME_THREADS 120
|
||||
#define _SC_XOPEN_SHM 121
|
||||
#define _SC_XOPEN_STREAMS 122
|
||||
#define _SC_XOPEN_UNIX 123
|
||||
#define _SC_XOPEN_UUCP 124
|
||||
#define _SC_XOPEN_VERSION 125
|
||||
|
||||
#if _POSIX_ASYNCHRONOUS_IO >= 0
|
||||
#define _SC_AIO_LISTIO_MAX 126
|
||||
#define _SC_AIO_MAX 127
|
||||
#define _SC_AIO_PRIO_DELTA_MAX 128
|
||||
#endif
|
||||
|
||||
#define _SC_BC_BASE_MAX 129
|
||||
#define _SC_BC_DIM_MAX 130
|
||||
#define _SC_BC_SCALE_MAX 131
|
||||
#define _SC_BC_STRING_MAX 132
|
||||
|
||||
#define _SC_COLL_WEIGHTS_MAX 133
|
||||
#define _SC_EXPR_NEST_MAX 134
|
||||
#define _SC_LINE_MAX 135
|
||||
#define _SC_LOGIN_NAME_MAX 136
|
||||
#define _SC_MQ_OPEN_MAX 137
|
||||
#define _SC_MQ_PRIO_MAX 138
|
||||
#define _SC_THREAD_DESTRUCTOR_ITERATIONS 139
|
||||
#define _SC_THREAD_KEYS_MAX 140
|
||||
#define _SC_THREAD_THREADS_MAX 141
|
||||
#define _SC_RE_DUP_MAX 142
|
||||
|
||||
|
||||
/* confstr() constants */
|
||||
|
@ -29,6 +29,7 @@
|
||||
*/
|
||||
|
||||
|
||||
#include <limits.h>
|
||||
#include <pthread.h>
|
||||
|
||||
#include "threads.h"
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -31,6 +32,8 @@
|
||||
#include <time_private.h>
|
||||
#include <unistd_private.h>
|
||||
|
||||
#include <OS.h>
|
||||
|
||||
|
||||
int
|
||||
getdtablesize(void)
|
||||
@ -59,8 +62,6 @@ long
|
||||
__sysconf(int name)
|
||||
{
|
||||
int err;
|
||||
// TODO: This is about what BeOS does, better POSIX conformance would be
|
||||
// nice, though
|
||||
|
||||
switch (name) {
|
||||
case _SC_ARG_MAX:
|
||||
@ -69,20 +70,12 @@ __sysconf(int name)
|
||||
return CHILD_MAX;
|
||||
case _SC_CLK_TCK:
|
||||
return CLK_TCK;
|
||||
case _SC_JOB_CONTROL:
|
||||
return 1;
|
||||
case _SC_HOST_NAME_MAX:
|
||||
return _POSIX_HOST_NAME_MAX;
|
||||
case _SC_NGROUPS_MAX:
|
||||
return NGROUPS_MAX;
|
||||
case _SC_OPEN_MAX:
|
||||
return getdtablesize();
|
||||
case _SC_REGEXP:
|
||||
return 1;
|
||||
case _SC_SAVED_IDS:
|
||||
return 1;
|
||||
case _SC_SHELL:
|
||||
return 1;
|
||||
case _SC_STREAM_MAX:
|
||||
return STREAM_MAX;
|
||||
case _SC_SYMLOOP_MAX:
|
||||
@ -103,10 +96,6 @@ __sysconf(int name)
|
||||
return _POSIX_SEM_NSEMS_MAX;
|
||||
case _SC_SEM_VALUE_MAX:
|
||||
return _POSIX_SEM_VALUE_MAX;
|
||||
case _SC_SEMAPHORES:
|
||||
return _POSIX_SEMAPHORES;
|
||||
case _SC_THREADS:
|
||||
return _POSIX_THREADS;
|
||||
case _SC_IOV_MAX:
|
||||
return IOV_MAX;
|
||||
case _SC_NPROCESSORS_CONF:
|
||||
@ -159,38 +148,242 @@ __sysconf(int name)
|
||||
}
|
||||
return info.max_pages - info.used_pages;
|
||||
}
|
||||
case _SC_MAPPED_FILES:
|
||||
return _POSIX_MAPPED_FILES;
|
||||
case _SC_THREAD_PROCESS_SHARED:
|
||||
return _POSIX_THREAD_PROCESS_SHARED;
|
||||
case _SC_THREAD_STACK_MIN:
|
||||
return MIN_USER_STACK_SIZE;
|
||||
case _SC_THREAD_ATTR_STACKADDR:
|
||||
return _POSIX_THREAD_ATTR_STACKADDR;
|
||||
case _SC_THREAD_ATTR_STACKSIZE:
|
||||
return _POSIX_THREAD_ATTR_STACKSIZE;
|
||||
case _SC_THREAD_PRIORITY_SCHEDULING:
|
||||
return _POSIX_THREAD_PRIORITY_SCHEDULING;
|
||||
case _SC_REALTIME_SIGNALS:
|
||||
return _POSIX_REALTIME_SIGNALS;
|
||||
case _SC_MEMORY_PROTECTION:
|
||||
return _POSIX_MEMORY_PROTECTION;
|
||||
case _SC_SIGQUEUE_MAX:
|
||||
return MAX_QUEUED_SIGNALS;
|
||||
case _SC_RTSIG_MAX:
|
||||
return SIGRTMAX - SIGRTMIN + 1;
|
||||
case _SC_MONOTONIC_CLOCK:
|
||||
return _POSIX_MONOTONIC_CLOCK;
|
||||
case _SC_DELAYTIMER_MAX:
|
||||
return MAX_USER_TIMER_OVERRUN_COUNT;
|
||||
case _SC_TIMER_MAX:
|
||||
return MAX_USER_TIMERS_PER_TEAM;
|
||||
case _SC_TIMERS:
|
||||
return _POSIX_TIMERS;
|
||||
|
||||
/* posix options */
|
||||
case _SC_ADVISORY_INFO:
|
||||
return _POSIX_ADVISORY_INFO;
|
||||
case _SC_BARRIERS:
|
||||
return _POSIX_BARRIERS;
|
||||
case _SC_CLOCK_SELECTION:
|
||||
return _POSIX_CLOCK_SELECTION;
|
||||
case _SC_CPUTIME:
|
||||
return _POSIX_CPUTIME;
|
||||
case _SC_FSYNC:
|
||||
return _POSIX_FSYNC;
|
||||
case _SC_IPV6:
|
||||
return _POSIX_IPV6;
|
||||
case _SC_JOB_CONTROL:
|
||||
return _POSIX_JOB_CONTROL;
|
||||
case _SC_MAPPED_FILES:
|
||||
return _POSIX_MAPPED_FILES;
|
||||
case _SC_MEMLOCK:
|
||||
return _POSIX_MEMLOCK;
|
||||
case _SC_MEMORY_PROTECTION:
|
||||
return _POSIX_MEMORY_PROTECTION;
|
||||
case _SC_MESSAGE_PASSING:
|
||||
return _POSIX_MESSAGE_PASSING;
|
||||
case _SC_MONOTONIC_CLOCK:
|
||||
return _POSIX_MONOTONIC_CLOCK;
|
||||
case _SC_PRIORITIZED_IO:
|
||||
return _POSIX_PRIORITIZED_IO;
|
||||
case _SC_PRIORITY_SCHEDULING:
|
||||
return _POSIX_PRIORITY_SCHEDULING;
|
||||
case _SC_READER_WRITER_LOCKS:
|
||||
return _POSIX_READER_WRITER_LOCKS;
|
||||
case _SC_REALTIME_SIGNALS:
|
||||
return _POSIX_REALTIME_SIGNALS;
|
||||
case _SC_REGEXP:
|
||||
return _POSIX_REGEXP;
|
||||
case _SC_SAVED_IDS:
|
||||
return _POSIX_SAVED_IDS;
|
||||
case _SC_SEMAPHORES:
|
||||
return _POSIX_SEMAPHORES;
|
||||
case _SC_SHARED_MEMORY_OBJECTS:
|
||||
return _POSIX_SHARED_MEMORY_OBJECTS;
|
||||
case _SC_SHELL:
|
||||
return _POSIX_SHELL;
|
||||
case _SC_SPAWN:
|
||||
return _POSIX_SPAWN;
|
||||
case _SC_SPIN_LOCKS:
|
||||
return _POSIX_SPIN_LOCKS;
|
||||
case _SC_SPORADIC_SERVER:
|
||||
return _POSIX_SPORADIC_SERVER;
|
||||
case _SC_SYNCHRONIZED_IO:
|
||||
return _POSIX_SYNCHRONIZED_IO;
|
||||
case _SC_THREAD_ATTR_STACKADDR:
|
||||
return _POSIX_THREAD_ATTR_STACKADDR;
|
||||
case _SC_THREAD_ATTR_STACKSIZE:
|
||||
return _POSIX_THREAD_ATTR_STACKSIZE;
|
||||
case _SC_THREAD_CPUTIME:
|
||||
return _POSIX_THREAD_CPUTIME;
|
||||
case _SC_THREAD_PRIO_INHERIT:
|
||||
return _POSIX_THREAD_PRIO_INHERIT;
|
||||
case _SC_THREAD_PRIO_PROTECT:
|
||||
return _POSIX_THREAD_PRIO_PROTECT;
|
||||
case _SC_THREAD_PRIORITY_SCHEDULING:
|
||||
return _POSIX_THREAD_PRIORITY_SCHEDULING;
|
||||
case _SC_THREAD_PROCESS_SHARED:
|
||||
return _POSIX_THREAD_PROCESS_SHARED;
|
||||
case _SC_THREAD_ROBUST_PRIO_INHERIT:
|
||||
return _POSIX_THREAD_ROBUST_PRIO_INHERIT;
|
||||
case _SC_THREAD_ROBUST_PRIO_PROTECT:
|
||||
return _POSIX_THREAD_ROBUST_PRIO_PROTECT;
|
||||
case _SC_THREAD_SAFE_FUNCTIONS:
|
||||
return _POSIX_THREAD_SAFE_FUNCTIONS;
|
||||
case _SC_THREADS:
|
||||
return _POSIX_THREADS;
|
||||
case _SC_TIMEOUTS:
|
||||
return _POSIX_TIMEOUTS;
|
||||
case _SC_TIMERS:
|
||||
return _POSIX_TIMERS;
|
||||
case _SC_TRACE:
|
||||
return _POSIX_TRACE;
|
||||
case _SC_TRACE_EVENT_FILTER:
|
||||
return _POSIX_TRACE_EVENT_FILTER;
|
||||
case _SC_TRACE_INHERIT:
|
||||
return _POSIX_TRACE_INHERIT;
|
||||
case _SC_TRACE_LOG:
|
||||
return _POSIX_TRACE_LOG;
|
||||
case _SC_TYPED_MEMORY_OBJECTS:
|
||||
return _POSIX_TYPED_MEMORY_OBJECTS;
|
||||
|
||||
case _SC_V6_ILP32_OFF32:
|
||||
case _SC_V7_ILP32_OFF32:
|
||||
#if _ILP32_OFF32 == 0
|
||||
if (sizeof(int) * CHAR_BIT == 32 &&
|
||||
sizeof(long) * CHAR_BIT == 32 &&
|
||||
sizeof(void *) * CHAR_BIT == 32 &&
|
||||
sizeof(off_t) * CHAR_BIT == 32)
|
||||
return 1;
|
||||
else
|
||||
return -1;
|
||||
#else
|
||||
return _ILP32_OFF32;
|
||||
#endif
|
||||
case _SC_V6_ILP32_OFFBIG:
|
||||
case _SC_V7_ILP32_OFFBIG:
|
||||
#if _ILP32_OFFBIG == 0
|
||||
if (sizeof(int) * CHAR_BIT == 32 &&
|
||||
sizeof(long) * CHAR_BIT == 32 &&
|
||||
sizeof(void *) * CHAR_BIT == 32 &&
|
||||
sizeof(off_t) * CHAR_BIT >= 64)
|
||||
return 1;
|
||||
else
|
||||
return -1;
|
||||
#else
|
||||
return _ILP32_OFFBIG;
|
||||
#endif
|
||||
case _SC_V6_LP64_OFF64:
|
||||
case _SC_V7_LP64_OFF64:
|
||||
#if _LP64_OFF64 == 0
|
||||
if (sizeof(int) * CHAR_BIT == 64 &&
|
||||
sizeof(long) * CHAR_BIT == 64 &&
|
||||
sizeof(void *) * CHAR_BIT == 64 &&
|
||||
sizeof(off_t) * CHAR_BIT == 64)
|
||||
return 1;
|
||||
else
|
||||
return -1;
|
||||
#else
|
||||
return _LP64_OFF64;
|
||||
#endif
|
||||
case _SC_V6_LPBIG_OFFBIG:
|
||||
case _SC_V7_LPBIG_OFFBIG:
|
||||
#if _LPBIG_OFFBIG == 0
|
||||
if (sizeof(int) * CHAR_BIT >= 32 &&
|
||||
sizeof(long) * CHAR_BIT >= 64 &&
|
||||
sizeof(void *) * CHAR_BIT >= 64 &&
|
||||
sizeof(off_t) * CHAR_BIT >= 64)
|
||||
return 1;
|
||||
else
|
||||
return -1;
|
||||
#else
|
||||
return _LPBIG_OFFBIG;
|
||||
#endif
|
||||
case _SC_2_C_BIND:
|
||||
return _POSIX2_C_BIND;
|
||||
case _SC_2_C_DEV:
|
||||
return _POSIX2_C_DEV;
|
||||
case _SC_2_CHAR_TERM:
|
||||
return _POSIX2_CHAR_TERM;
|
||||
case _SC_2_FORT_DEV:
|
||||
return _POSIX2_FORT_DEV;
|
||||
case _SC_2_FORT_RUN:
|
||||
return _POSIX2_FORT_RUN;
|
||||
case _SC_2_LOCALEDEF:
|
||||
return _POSIX2_LOCALEDEF;
|
||||
case _SC_2_PBS:
|
||||
return _POSIX2_PBS;
|
||||
case _SC_2_PBS_ACCOUNTING:
|
||||
return _POSIX2_PBS_ACCOUNTING;
|
||||
case _SC_2_PBS_CHECKPOINT:
|
||||
return _POSIX2_PBS_CHECKPOINT;
|
||||
case _SC_2_PBS_LOCATE:
|
||||
return _POSIX2_PBS_LOCATE;
|
||||
case _SC_2_PBS_MESSAGE:
|
||||
return _POSIX2_PBS_MESSAGE;
|
||||
case _SC_2_PBS_TRACK:
|
||||
return _POSIX2_PBS_TRACK;
|
||||
case _SC_2_VERSION:
|
||||
return _POSIX2_VERSION;
|
||||
case _SC_XOPEN_CRYPT:
|
||||
return _XOPEN_CRYPT;
|
||||
case _SC_XOPEN_ENH_I18N:
|
||||
return _XOPEN_ENH_I18N;
|
||||
case _SC_XOPEN_REALTIME:
|
||||
return _XOPEN_REALTIME;
|
||||
case _SC_XOPEN_REALTIME_THREADS:
|
||||
return _XOPEN_REALTIME_THREADS;
|
||||
case _SC_XOPEN_SHM:
|
||||
return _XOPEN_SHM;
|
||||
case _SC_XOPEN_STREAMS:
|
||||
return _XOPEN_STREAMS;
|
||||
case _SC_XOPEN_UNIX:
|
||||
return _XOPEN_UNIX;
|
||||
case _SC_XOPEN_UUCP:
|
||||
return _XOPEN_UUCP;
|
||||
case _SC_XOPEN_VERSION:
|
||||
return _XOPEN_VERSION;
|
||||
|
||||
#if _POSIX_ASYNCHRONOUS_IO >= 0
|
||||
case _SC_AIO_LISTIO_MAX:
|
||||
return AIO_LISTIO_MAX;
|
||||
case _SC_AIO_MAX:
|
||||
return AIO_MAX;
|
||||
case _SC_AIO_PRIO_DELTA_MAX:
|
||||
return AIO_PRIO_DELTA_MAX;
|
||||
#endif
|
||||
|
||||
case _SC_BC_BASE_MAX:
|
||||
return BC_BASE_MAX;
|
||||
case _SC_BC_DIM_MAX:
|
||||
return BC_DIM_MAX;
|
||||
case _SC_BC_SCALE_MAX:
|
||||
return BC_SCALE_MAX;
|
||||
case _SC_BC_STRING_MAX:
|
||||
return BC_STRING_MAX;
|
||||
|
||||
case _SC_COLL_WEIGHTS_MAX:
|
||||
return COLL_WEIGHTS_MAX;
|
||||
case _SC_EXPR_NEST_MAX:
|
||||
return EXPR_NEST_MAX;
|
||||
case _SC_LINE_MAX:
|
||||
return LINE_MAX;
|
||||
case _SC_LOGIN_NAME_MAX:
|
||||
return LOGIN_NAME_MAX;
|
||||
case _SC_MQ_OPEN_MAX:
|
||||
return MQ_OPEN_MAX;
|
||||
case _SC_MQ_PRIO_MAX:
|
||||
return MQ_PRIO_MAX;
|
||||
case _SC_THREAD_DESTRUCTOR_ITERATIONS:
|
||||
return PTHREAD_DESTRUCTOR_ITERATIONS;
|
||||
case _SC_THREAD_KEYS_MAX:
|
||||
return PTHREAD_KEYS_MAX;
|
||||
case _SC_THREAD_THREADS_MAX:
|
||||
system_info info;
|
||||
get_system_info(&info);
|
||||
return (int)info.max_threads;
|
||||
case _SC_RE_DUP_MAX:
|
||||
return RE_DUP_MAX;
|
||||
|
||||
// not POSIX (anymore)
|
||||
case _SC_PIPE:
|
||||
|
Loading…
x
Reference in New Issue
Block a user