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