1 /*
2  * Copyright 2011 The Emscripten Authors.  All rights reserved.
3  * Emscripten is available under two separate licenses, the MIT license and the
4  * University of Illinois/NCSA Open Source License.  Both these licenses can be
5  * found in the LICENSE file.
6  */
7 
8 #include <stdio.h>
9 #include <errno.h>
10 #include <unistd.h>
11 
main()12 int main() {
13   int vals[] = {
14     _SC_PAGE_SIZE,
15     _SC_PAGESIZE,
16     _SC_ADVISORY_INFO,
17     _SC_BARRIERS,
18     _SC_ASYNCHRONOUS_IO,
19     _SC_CLOCK_SELECTION,
20     _SC_CPUTIME,
21     _SC_FSYNC,
22     _SC_IPV6,
23     _SC_MAPPED_FILES,
24     _SC_MEMLOCK,
25     _SC_MEMLOCK_RANGE,
26     _SC_MEMORY_PROTECTION,
27     _SC_MESSAGE_PASSING,
28     _SC_MONOTONIC_CLOCK,
29     _SC_PRIORITIZED_IO,
30     _SC_PRIORITY_SCHEDULING,
31     _SC_RAW_SOCKETS,
32     _SC_READER_WRITER_LOCKS,
33     _SC_REALTIME_SIGNALS,
34     _SC_SEMAPHORES,
35     _SC_SHARED_MEMORY_OBJECTS,
36     _SC_SPAWN,
37     _SC_SPIN_LOCKS,
38     _SC_SYNCHRONIZED_IO,
39     _SC_THREAD_ATTR_STACKADDR,
40     _SC_THREAD_ATTR_STACKSIZE,
41     _SC_THREAD_CPUTIME,
42     _SC_THREAD_PRIO_INHERIT,
43     _SC_THREAD_PRIO_PROTECT,
44     _SC_THREAD_PRIORITY_SCHEDULING,
45     _SC_THREAD_PROCESS_SHARED,
46     _SC_THREAD_SAFE_FUNCTIONS,
47     _SC_THREADS,
48     _SC_TIMEOUTS,
49     _SC_TIMERS,
50     _SC_VERSION,
51     _SC_2_C_BIND,
52     _SC_2_C_DEV,
53     _SC_2_CHAR_TERM,
54     _SC_2_LOCALEDEF,
55     _SC_2_SW_DEV,
56     _SC_2_VERSION,
57     _SC_MQ_OPEN_MAX,
58     _SC_XOPEN_STREAMS,
59     _SC_XBS5_LP64_OFF64,
60     _SC_XBS5_LPBIG_OFFBIG,
61     _SC_AIO_LISTIO_MAX,
62     _SC_AIO_MAX,
63     _SC_SPORADIC_SERVER,
64     _SC_THREAD_SPORADIC_SERVER,
65     _SC_TRACE,
66     _SC_TRACE_EVENT_FILTER,
67     _SC_TRACE_EVENT_NAME_MAX,
68     _SC_TRACE_INHERIT,
69     _SC_TRACE_LOG,
70     _SC_TRACE_NAME_MAX,
71     _SC_TRACE_SYS_MAX,
72     _SC_TRACE_USER_EVENT_MAX,
73     _SC_TYPED_MEMORY_OBJECTS,
74     _SC_V6_LP64_OFF64,
75     _SC_V6_LPBIG_OFFBIG,
76     _SC_2_FORT_DEV,
77     _SC_2_FORT_RUN,
78     _SC_2_PBS,
79     _SC_2_PBS_ACCOUNTING,
80     _SC_2_PBS_CHECKPOINT,
81     _SC_2_PBS_LOCATE,
82     _SC_2_PBS_MESSAGE,
83     _SC_2_PBS_TRACK,
84     _SC_2_UPE,
85     _SC_THREAD_THREADS_MAX,
86     _SC_SEM_NSEMS_MAX,
87     _SC_SYMLOOP_MAX,
88     _SC_TIMER_MAX,
89     _SC_V6_ILP32_OFF32,
90     _SC_V6_ILP32_OFFBIG,
91     _SC_JOB_CONTROL,
92     _SC_REGEXP,
93     _SC_SAVED_IDS,
94     _SC_SHELL,
95     _SC_XBS5_ILP32_OFF32,
96     _SC_XBS5_ILP32_OFFBIG,
97     _SC_XOPEN_CRYPT,
98     _SC_XOPEN_ENH_I18N,
99     _SC_XOPEN_LEGACY,
100     _SC_XOPEN_REALTIME,
101     _SC_XOPEN_REALTIME_THREADS,
102     _SC_XOPEN_SHM,
103     _SC_XOPEN_UNIX,
104     _SC_THREAD_KEYS_MAX,
105     _SC_IOV_MAX,
106     _SC_GETGR_R_SIZE_MAX,
107     _SC_GETPW_R_SIZE_MAX,
108     _SC_OPEN_MAX,
109     _SC_RTSIG_MAX,
110     _SC_EXPR_NEST_MAX,
111     _SC_TTY_NAME_MAX,
112     _SC_ATEXIT_MAX,
113     _SC_DELAYTIMER_MAX,
114     _SC_SEM_VALUE_MAX,
115     _SC_SIGQUEUE_MAX,
116     _SC_CHILD_MAX,
117     _SC_BC_SCALE_MAX,
118     _SC_BC_BASE_MAX,
119     _SC_LINE_MAX,
120     _SC_BC_DIM_MAX,
121     _SC_ARG_MAX,
122     _SC_NGROUPS_MAX,
123     _SC_MQ_PRIO_MAX,
124     _SC_RE_DUP_MAX,
125     _SC_THREAD_STACK_MIN,
126     _SC_BC_STRING_MAX,
127     _SC_XOPEN_VERSION,
128     _SC_LOGIN_NAME_MAX,
129     _SC_COLL_WEIGHTS_MAX,
130     _SC_CLK_TCK,
131     _SC_HOST_NAME_MAX,
132     _SC_AIO_PRIO_DELTA_MAX,
133     _SC_STREAM_MAX,
134     _SC_TZNAME_MAX,
135     _SC_THREAD_DESTRUCTOR_ITERATIONS
136   };
137   char* names[] = {
138     "_SC_PAGE_SIZE",
139     "_SC_PAGESIZE",
140     "_SC_ADVISORY_INFO",
141     "_SC_BARRIERS",
142     "_SC_ASYNCHRONOUS_IO",
143     "_SC_CLOCK_SELECTION",
144     "_SC_CPUTIME",
145     "_SC_FSYNC",
146     "_SC_IPV6",
147     "_SC_MAPPED_FILES",
148     "_SC_MEMLOCK",
149     "_SC_MEMLOCK_RANGE",
150     "_SC_MEMORY_PROTECTION",
151     "_SC_MESSAGE_PASSING",
152     "_SC_MONOTONIC_CLOCK",
153     "_SC_PRIORITIZED_IO",
154     "_SC_PRIORITY_SCHEDULING",
155     "_SC_RAW_SOCKETS",
156     "_SC_READER_WRITER_LOCKS",
157     "_SC_REALTIME_SIGNALS",
158     "_SC_SEMAPHORES",
159     "_SC_SHARED_MEMORY_OBJECTS",
160     "_SC_SPAWN",
161     "_SC_SPIN_LOCKS",
162     "_SC_SYNCHRONIZED_IO",
163     "_SC_THREAD_ATTR_STACKADDR",
164     "_SC_THREAD_ATTR_STACKSIZE",
165     "_SC_THREAD_CPUTIME",
166     "_SC_THREAD_PRIO_INHERIT",
167     "_SC_THREAD_PRIO_PROTECT",
168     "_SC_THREAD_PRIORITY_SCHEDULING",
169     "_SC_THREAD_PROCESS_SHARED",
170     "_SC_THREAD_SAFE_FUNCTIONS",
171     "_SC_THREADS",
172     "_SC_TIMEOUTS",
173     "_SC_TIMERS",
174     "_SC_VERSION",
175     "_SC_2_C_BIND",
176     "_SC_2_C_DEV",
177     "_SC_2_CHAR_TERM",
178     "_SC_2_LOCALEDEF",
179     "_SC_2_SW_DEV",
180     "_SC_2_VERSION",
181     "_SC_MQ_OPEN_MAX",
182     "_SC_XOPEN_STREAMS",
183     "_SC_XBS5_LP64_OFF64",
184     "_SC_XBS5_LPBIG_OFFBIG",
185     "_SC_AIO_LISTIO_MAX",
186     "_SC_AIO_MAX",
187     "_SC_SPORADIC_SERVER",
188     "_SC_THREAD_SPORADIC_SERVER",
189     "_SC_TRACE",
190     "_SC_TRACE_EVENT_FILTER",
191     "_SC_TRACE_EVENT_NAME_MAX",
192     "_SC_TRACE_INHERIT",
193     "_SC_TRACE_LOG",
194     "_SC_TRACE_NAME_MAX",
195     "_SC_TRACE_SYS_MAX",
196     "_SC_TRACE_USER_EVENT_MAX",
197     "_SC_TYPED_MEMORY_OBJECTS",
198     "_SC_V6_LP64_OFF64",
199     "_SC_V6_LPBIG_OFFBIG",
200     "_SC_2_FORT_DEV",
201     "_SC_2_FORT_RUN",
202     "_SC_2_PBS",
203     "_SC_2_PBS_ACCOUNTING",
204     "_SC_2_PBS_CHECKPOINT",
205     "_SC_2_PBS_LOCATE",
206     "_SC_2_PBS_MESSAGE",
207     "_SC_2_PBS_TRACK",
208     "_SC_2_UPE",
209     "_SC_THREAD_THREADS_MAX",
210     "_SC_SEM_NSEMS_MAX",
211     "_SC_SYMLOOP_MAX",
212     "_SC_TIMER_MAX",
213     "_SC_V6_ILP32_OFF32",
214     "_SC_V6_ILP32_OFFBIG",
215     "_SC_JOB_CONTROL",
216     "_SC_REGEXP",
217     "_SC_SAVED_IDS",
218     "_SC_SHELL",
219     "_SC_XBS5_ILP32_OFF32",
220     "_SC_XBS5_ILP32_OFFBIG",
221     "_SC_XOPEN_CRYPT",
222     "_SC_XOPEN_ENH_I18N",
223     "_SC_XOPEN_LEGACY",
224     "_SC_XOPEN_REALTIME",
225     "_SC_XOPEN_REALTIME_THREADS",
226     "_SC_XOPEN_SHM",
227     "_SC_XOPEN_UNIX",
228     "_SC_THREAD_KEYS_MAX",
229     "_SC_IOV_MAX",
230     "_SC_GETGR_R_SIZE_MAX",
231     "_SC_GETPW_R_SIZE_MAX",
232     "_SC_OPEN_MAX",
233     "_SC_RTSIG_MAX",
234     "_SC_EXPR_NEST_MAX",
235     "_SC_TTY_NAME_MAX",
236     "_SC_ATEXIT_MAX",
237     "_SC_DELAYTIMER_MAX",
238     "_SC_SEM_VALUE_MAX",
239     "_SC_SIGQUEUE_MAX",
240     "_SC_CHILD_MAX",
241     "_SC_BC_SCALE_MAX",
242     "_SC_BC_BASE_MAX",
243     "_SC_LINE_MAX",
244     "_SC_BC_DIM_MAX",
245     "_SC_ARG_MAX",
246     "_SC_NGROUPS_MAX",
247     "_SC_MQ_PRIO_MAX",
248     "_SC_RE_DUP_MAX",
249     "_SC_THREAD_STACK_MIN",
250     "_SC_BC_STRING_MAX",
251     "_SC_XOPEN_VERSION",
252     "_SC_LOGIN_NAME_MAX",
253     "_SC_COLL_WEIGHTS_MAX",
254     "_SC_CLK_TCK",
255     "_SC_HOST_NAME_MAX",
256     "_SC_AIO_PRIO_DELTA_MAX",
257     "_SC_STREAM_MAX",
258     "_SC_TZNAME_MAX",
259     "_SC_THREAD_DESTRUCTOR_ITERATIONS"
260   };
261   char buffer[256];
262 
263   for (int i = 0; i < sizeof vals / sizeof vals[0]; i++) {
264     printf("%s: %ld\n", names[i], sysconf(vals[i]));
265     printf("errno: %d\n\n", errno);
266     errno = 0;
267   }
268 
269   printf("(invalid): %ld\n", sysconf(-123));
270   printf("errno: %d\n", errno);
271 
272   return 0;
273 }
274