1 /*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #define LOG_TAG "OsConstants"
18
19 #include <errno.h>
20 #include <fcntl.h>
21 #include <netdb.h>
22 #include <netinet/icmp6.h>
23 #include <netinet/in.h>
24 #include <netinet/ip_icmp.h>
25 #include <netinet/tcp.h>
26 #include <poll.h>
27 #include <signal.h>
28 #include <stdlib.h>
29 #include <sys/ioctl.h>
30 #include <sys/mman.h>
31 #include <sys/prctl.h>
32 #include <sys/resource.h>
33 #include <sys/socket.h>
34 #include <sys/stat.h>
35 #include <sys/un.h>
36 #include <sys/wait.h>
37 #include <sys/xattr.h>
38 #include <unistd.h>
39
40 #include <net/if_arp.h>
41 #include <linux/if_ether.h>
42
43 // After the others because these are not necessarily self-contained in glibc.
44 #include <linux/if_addr.h>
45 #include <linux/rtnetlink.h>
46
47 // Include linux socket constants for setting sockopts
48 #include <linux/udp.h>
49
50 #include <net/if.h> // After <sys/socket.h> to work around a Mac header file bug.
51
52 #if defined(__BIONIC__)
53 #include <linux/capability.h>
54 #endif
55
56 #include <nativehelper/JNIHelp.h>
57 #include <nativehelper/jni_macros.h>
58
59 #include "Portability.h"
60
initConstant(JNIEnv * env,jclass c,const char * fieldName,int value)61 static void initConstant(JNIEnv* env, jclass c, const char* fieldName, int value) {
62 jfieldID field = env->GetStaticFieldID(c, fieldName, "I");
63 env->SetStaticIntField(c, field, value);
64 }
65
OsConstants_initConstants(JNIEnv * env,jclass c)66 static void OsConstants_initConstants(JNIEnv* env, jclass c) {
67 initConstant(env, c, "AF_INET", AF_INET);
68 initConstant(env, c, "AF_INET6", AF_INET6);
69 initConstant(env, c, "AF_PACKET", AF_PACKET);
70 initConstant(env, c, "AF_NETLINK", AF_NETLINK);
71 initConstant(env, c, "AF_UNIX", AF_UNIX);
72 initConstant(env, c, "AF_VSOCK", AF_VSOCK);
73 initConstant(env, c, "AF_UNSPEC", AF_UNSPEC);
74 initConstant(env, c, "AI_ADDRCONFIG", AI_ADDRCONFIG);
75 initConstant(env, c, "AI_ALL", AI_ALL);
76 initConstant(env, c, "AI_CANONNAME", AI_CANONNAME);
77 initConstant(env, c, "AI_NUMERICHOST", AI_NUMERICHOST);
78 #if defined(AI_NUMERICSERV)
79 initConstant(env, c, "AI_NUMERICSERV", AI_NUMERICSERV);
80 #endif
81 initConstant(env, c, "AI_PASSIVE", AI_PASSIVE);
82 initConstant(env, c, "AI_V4MAPPED", AI_V4MAPPED);
83 initConstant(env, c, "ARPHRD_ETHER", ARPHRD_ETHER);
84 initConstant(env, c, "VMADDR_PORT_ANY", VMADDR_PORT_ANY);
85 initConstant(env, c, "VMADDR_CID_ANY", VMADDR_CID_ANY);
86 initConstant(env, c, "VMADDR_CID_LOCAL", VMADDR_CID_LOCAL);
87 initConstant(env, c, "VMADDR_CID_HOST", VMADDR_CID_HOST);
88 initConstant(env, c, "ARPHRD_LOOPBACK", ARPHRD_LOOPBACK);
89 #if defined(CAP_LAST_CAP)
90 initConstant(env, c, "CAP_AUDIT_CONTROL", CAP_AUDIT_CONTROL);
91 initConstant(env, c, "CAP_AUDIT_WRITE", CAP_AUDIT_WRITE);
92 initConstant(env, c, "CAP_BLOCK_SUSPEND", CAP_BLOCK_SUSPEND);
93 initConstant(env, c, "CAP_CHOWN", CAP_CHOWN);
94 initConstant(env, c, "CAP_DAC_OVERRIDE", CAP_DAC_OVERRIDE);
95 initConstant(env, c, "CAP_DAC_READ_SEARCH", CAP_DAC_READ_SEARCH);
96 initConstant(env, c, "CAP_FOWNER", CAP_FOWNER);
97 initConstant(env, c, "CAP_FSETID", CAP_FSETID);
98 initConstant(env, c, "CAP_IPC_LOCK", CAP_IPC_LOCK);
99 initConstant(env, c, "CAP_IPC_OWNER", CAP_IPC_OWNER);
100 initConstant(env, c, "CAP_KILL", CAP_KILL);
101 initConstant(env, c, "CAP_LAST_CAP", CAP_LAST_CAP);
102 initConstant(env, c, "CAP_LEASE", CAP_LEASE);
103 initConstant(env, c, "CAP_LINUX_IMMUTABLE", CAP_LINUX_IMMUTABLE);
104 initConstant(env, c, "CAP_MAC_ADMIN", CAP_MAC_ADMIN);
105 initConstant(env, c, "CAP_MAC_OVERRIDE", CAP_MAC_OVERRIDE);
106 initConstant(env, c, "CAP_MKNOD", CAP_MKNOD);
107 initConstant(env, c, "CAP_NET_ADMIN", CAP_NET_ADMIN);
108 initConstant(env, c, "CAP_NET_BIND_SERVICE", CAP_NET_BIND_SERVICE);
109 initConstant(env, c, "CAP_NET_BROADCAST", CAP_NET_BROADCAST);
110 initConstant(env, c, "CAP_NET_RAW", CAP_NET_RAW);
111 initConstant(env, c, "CAP_SETFCAP", CAP_SETFCAP);
112 initConstant(env, c, "CAP_SETGID", CAP_SETGID);
113 initConstant(env, c, "CAP_SETPCAP", CAP_SETPCAP);
114 initConstant(env, c, "CAP_SETUID", CAP_SETUID);
115 initConstant(env, c, "CAP_SYS_ADMIN", CAP_SYS_ADMIN);
116 initConstant(env, c, "CAP_SYS_BOOT", CAP_SYS_BOOT);
117 initConstant(env, c, "CAP_SYS_CHROOT", CAP_SYS_CHROOT);
118 initConstant(env, c, "CAP_SYSLOG", CAP_SYSLOG);
119 initConstant(env, c, "CAP_SYS_MODULE", CAP_SYS_MODULE);
120 initConstant(env, c, "CAP_SYS_NICE", CAP_SYS_NICE);
121 initConstant(env, c, "CAP_SYS_PACCT", CAP_SYS_PACCT);
122 initConstant(env, c, "CAP_SYS_PTRACE", CAP_SYS_PTRACE);
123 initConstant(env, c, "CAP_SYS_RAWIO", CAP_SYS_RAWIO);
124 initConstant(env, c, "CAP_SYS_RESOURCE", CAP_SYS_RESOURCE);
125 initConstant(env, c, "CAP_SYS_TIME", CAP_SYS_TIME);
126 initConstant(env, c, "CAP_SYS_TTY_CONFIG", CAP_SYS_TTY_CONFIG);
127 initConstant(env, c, "CAP_WAKE_ALARM", CAP_WAKE_ALARM);
128 #endif
129 initConstant(env, c, "E2BIG", E2BIG);
130 initConstant(env, c, "EACCES", EACCES);
131 initConstant(env, c, "EADDRINUSE", EADDRINUSE);
132 initConstant(env, c, "EADDRNOTAVAIL", EADDRNOTAVAIL);
133 initConstant(env, c, "EAFNOSUPPORT", EAFNOSUPPORT);
134 initConstant(env, c, "EAGAIN", EAGAIN);
135 initConstant(env, c, "EAI_AGAIN", EAI_AGAIN);
136 initConstant(env, c, "EAI_BADFLAGS", EAI_BADFLAGS);
137 initConstant(env, c, "EAI_FAIL", EAI_FAIL);
138 initConstant(env, c, "EAI_FAMILY", EAI_FAMILY);
139 initConstant(env, c, "EAI_MEMORY", EAI_MEMORY);
140 initConstant(env, c, "EAI_NODATA", EAI_NODATA);
141 initConstant(env, c, "EAI_NONAME", EAI_NONAME);
142 #if defined(EAI_OVERFLOW)
143 initConstant(env, c, "EAI_OVERFLOW", EAI_OVERFLOW);
144 #endif
145 initConstant(env, c, "EAI_SERVICE", EAI_SERVICE);
146 initConstant(env, c, "EAI_SOCKTYPE", EAI_SOCKTYPE);
147 initConstant(env, c, "EAI_SYSTEM", EAI_SYSTEM);
148 initConstant(env, c, "EALREADY", EALREADY);
149 initConstant(env, c, "EBADF", EBADF);
150 initConstant(env, c, "EBADMSG", EBADMSG);
151 initConstant(env, c, "EBUSY", EBUSY);
152 initConstant(env, c, "ECANCELED", ECANCELED);
153 initConstant(env, c, "ECHILD", ECHILD);
154 initConstant(env, c, "ECONNABORTED", ECONNABORTED);
155 initConstant(env, c, "ECONNREFUSED", ECONNREFUSED);
156 initConstant(env, c, "ECONNRESET", ECONNRESET);
157 initConstant(env, c, "EDEADLK", EDEADLK);
158 initConstant(env, c, "EDESTADDRREQ", EDESTADDRREQ);
159 initConstant(env, c, "EDOM", EDOM);
160 initConstant(env, c, "EDQUOT", EDQUOT);
161 initConstant(env, c, "EEXIST", EEXIST);
162 initConstant(env, c, "EFAULT", EFAULT);
163 initConstant(env, c, "EFBIG", EFBIG);
164 initConstant(env, c, "EHOSTUNREACH", EHOSTUNREACH);
165 initConstant(env, c, "EIDRM", EIDRM);
166 initConstant(env, c, "EILSEQ", EILSEQ);
167 initConstant(env, c, "EINPROGRESS", EINPROGRESS);
168 initConstant(env, c, "EINTR", EINTR);
169 initConstant(env, c, "EINVAL", EINVAL);
170 initConstant(env, c, "EIO", EIO);
171 initConstant(env, c, "EISCONN", EISCONN);
172 initConstant(env, c, "EISDIR", EISDIR);
173 initConstant(env, c, "ELOOP", ELOOP);
174 initConstant(env, c, "EMFILE", EMFILE);
175 initConstant(env, c, "EMLINK", EMLINK);
176 initConstant(env, c, "EMSGSIZE", EMSGSIZE);
177 initConstant(env, c, "EMULTIHOP", EMULTIHOP);
178 initConstant(env, c, "ENAMETOOLONG", ENAMETOOLONG);
179 initConstant(env, c, "ENETDOWN", ENETDOWN);
180 initConstant(env, c, "ENETRESET", ENETRESET);
181 initConstant(env, c, "ENETUNREACH", ENETUNREACH);
182 initConstant(env, c, "ENFILE", ENFILE);
183 initConstant(env, c, "ENOBUFS", ENOBUFS);
184 initConstant(env, c, "ENODATA", ENODATA);
185 initConstant(env, c, "ENODEV", ENODEV);
186 initConstant(env, c, "ENOENT", ENOENT);
187 initConstant(env, c, "ENOEXEC", ENOEXEC);
188 initConstant(env, c, "ENOLCK", ENOLCK);
189 initConstant(env, c, "ENOLINK", ENOLINK);
190 initConstant(env, c, "ENOMEM", ENOMEM);
191 initConstant(env, c, "ENOMSG", ENOMSG);
192 initConstant(env, c, "ENONET", ENONET);
193 initConstant(env, c, "ENOPROTOOPT", ENOPROTOOPT);
194 initConstant(env, c, "ENOSPC", ENOSPC);
195 initConstant(env, c, "ENOSR", ENOSR);
196 initConstant(env, c, "ENOSTR", ENOSTR);
197 initConstant(env, c, "ENOSYS", ENOSYS);
198 initConstant(env, c, "ENOTCONN", ENOTCONN);
199 initConstant(env, c, "ENOTDIR", ENOTDIR);
200 initConstant(env, c, "ENOTEMPTY", ENOTEMPTY);
201 initConstant(env, c, "ENOTSOCK", ENOTSOCK);
202 initConstant(env, c, "ENOTSUP", ENOTSUP);
203 initConstant(env, c, "ENOTTY", ENOTTY);
204 initConstant(env, c, "ENXIO", ENXIO);
205 initConstant(env, c, "EOPNOTSUPP", EOPNOTSUPP);
206 initConstant(env, c, "EOVERFLOW", EOVERFLOW);
207 initConstant(env, c, "EPERM", EPERM);
208 initConstant(env, c, "EPIPE", EPIPE);
209 initConstant(env, c, "EPROTO", EPROTO);
210 initConstant(env, c, "EPROTONOSUPPORT", EPROTONOSUPPORT);
211 initConstant(env, c, "EPROTOTYPE", EPROTOTYPE);
212 initConstant(env, c, "ERANGE", ERANGE);
213 initConstant(env, c, "EROFS", EROFS);
214 initConstant(env, c, "ESPIPE", ESPIPE);
215 initConstant(env, c, "ESRCH", ESRCH);
216 initConstant(env, c, "ESTALE", ESTALE);
217 initConstant(env, c, "ETH_P_ALL", ETH_P_ALL);
218 initConstant(env, c, "ETH_P_ARP", ETH_P_ARP);
219 initConstant(env, c, "ETH_P_IP", ETH_P_IP);
220 initConstant(env, c, "ETH_P_IPV6", ETH_P_IPV6);
221 initConstant(env, c, "ETIME", ETIME);
222 initConstant(env, c, "ETIMEDOUT", ETIMEDOUT);
223 initConstant(env, c, "ETXTBSY", ETXTBSY);
224 initConstant(env, c, "EUSERS", EUSERS);
225 #if EWOULDBLOCK != EAGAIN
226 #error EWOULDBLOCK != EAGAIN
227 #endif
228 initConstant(env, c, "EXDEV", EXDEV);
229 initConstant(env, c, "EXIT_FAILURE", EXIT_FAILURE);
230 initConstant(env, c, "EXIT_SUCCESS", EXIT_SUCCESS);
231 initConstant(env, c, "FD_CLOEXEC", FD_CLOEXEC);
232 initConstant(env, c, "FIONREAD", FIONREAD);
233 initConstant(env, c, "F_DUPFD", F_DUPFD);
234 initConstant(env, c, "F_DUPFD_CLOEXEC", F_DUPFD_CLOEXEC);
235 initConstant(env, c, "F_GETFD", F_GETFD);
236 initConstant(env, c, "F_GETFL", F_GETFL);
237 initConstant(env, c, "F_GETLK", F_GETLK);
238 #if defined(F_GETLK64)
239 initConstant(env, c, "F_GETLK64", F_GETLK64);
240 #endif
241 initConstant(env, c, "F_GETOWN", F_GETOWN);
242 initConstant(env, c, "F_OK", F_OK);
243 initConstant(env, c, "F_RDLCK", F_RDLCK);
244 initConstant(env, c, "F_SETFD", F_SETFD);
245 initConstant(env, c, "F_SETFL", F_SETFL);
246 initConstant(env, c, "F_SETLK", F_SETLK);
247 #if defined(F_SETLK64)
248 initConstant(env, c, "F_SETLK64", F_SETLK64);
249 #endif
250 initConstant(env, c, "F_SETLKW", F_SETLKW);
251 #if defined(F_SETLKW64)
252 initConstant(env, c, "F_SETLKW64", F_SETLKW64);
253 #endif
254 initConstant(env, c, "F_SETOWN", F_SETOWN);
255 initConstant(env, c, "F_UNLCK", F_UNLCK);
256 initConstant(env, c, "F_WRLCK", F_WRLCK);
257 initConstant(env, c, "ICMP_ECHO", ICMP_ECHO);
258 initConstant(env, c, "ICMP_ECHOREPLY", ICMP_ECHOREPLY);
259 initConstant(env, c, "ICMP6_ECHO_REQUEST", ICMP6_ECHO_REQUEST);
260 initConstant(env, c, "ICMP6_ECHO_REPLY", ICMP6_ECHO_REPLY);
261 #if defined(IFA_F_DADFAILED)
262 initConstant(env, c, "IFA_F_DADFAILED", IFA_F_DADFAILED);
263 #endif
264 #if defined(IFA_F_DEPRECATED)
265 initConstant(env, c, "IFA_F_DEPRECATED", IFA_F_DEPRECATED);
266 #endif
267 #if defined(IFA_F_HOMEADDRESS)
268 initConstant(env, c, "IFA_F_HOMEADDRESS", IFA_F_HOMEADDRESS);
269 #endif
270 #if defined(IFA_F_MANAGETEMPADDR)
271 initConstant(env, c, "IFA_F_MANAGETEMPADDR", IFA_F_MANAGETEMPADDR);
272 #endif
273 #if defined(IFA_F_NODAD)
274 initConstant(env, c, "IFA_F_NODAD", IFA_F_NODAD);
275 #endif
276 #if defined(IFA_F_NOPREFIXROUTE)
277 initConstant(env, c, "IFA_F_NOPREFIXROUTE", IFA_F_NOPREFIXROUTE);
278 #endif
279 #if defined(IFA_F_OPTIMISTIC)
280 initConstant(env, c, "IFA_F_OPTIMISTIC", IFA_F_OPTIMISTIC);
281 #endif
282 #if defined(IFA_F_PERMANENT)
283 initConstant(env, c, "IFA_F_PERMANENT", IFA_F_PERMANENT);
284 #endif
285 #if defined(IFA_F_SECONDARY)
286 initConstant(env, c, "IFA_F_SECONDARY", IFA_F_SECONDARY);
287 #endif
288 #if defined(IFA_F_TEMPORARY)
289 initConstant(env, c, "IFA_F_TEMPORARY", IFA_F_TEMPORARY);
290 #endif
291 #if defined(IFA_F_TENTATIVE)
292 initConstant(env, c, "IFA_F_TENTATIVE", IFA_F_TENTATIVE);
293 #endif
294 initConstant(env, c, "IFF_ALLMULTI", IFF_ALLMULTI);
295 #if defined(IFF_AUTOMEDIA)
296 initConstant(env, c, "IFF_AUTOMEDIA", IFF_AUTOMEDIA);
297 #endif
298 initConstant(env, c, "IFF_BROADCAST", IFF_BROADCAST);
299 initConstant(env, c, "IFF_DEBUG", IFF_DEBUG);
300 #if defined(IFF_DYNAMIC)
301 initConstant(env, c, "IFF_DYNAMIC", IFF_DYNAMIC);
302 #endif
303 initConstant(env, c, "IFF_LOOPBACK", IFF_LOOPBACK);
304 #if defined(IFF_MASTER)
305 initConstant(env, c, "IFF_MASTER", IFF_MASTER);
306 #endif
307 initConstant(env, c, "IFF_MULTICAST", IFF_MULTICAST);
308 initConstant(env, c, "IFF_NOARP", IFF_NOARP);
309 initConstant(env, c, "IFF_NOTRAILERS", IFF_NOTRAILERS);
310 initConstant(env, c, "IFF_POINTOPOINT", IFF_POINTOPOINT);
311 #if defined(IFF_PORTSEL)
312 initConstant(env, c, "IFF_PORTSEL", IFF_PORTSEL);
313 #endif
314 initConstant(env, c, "IFF_PROMISC", IFF_PROMISC);
315 initConstant(env, c, "IFF_RUNNING", IFF_RUNNING);
316 #if defined(IFF_SLAVE)
317 initConstant(env, c, "IFF_SLAVE", IFF_SLAVE);
318 #endif
319 initConstant(env, c, "IFF_UP", IFF_UP);
320 initConstant(env, c, "IPPROTO_ICMP", IPPROTO_ICMP);
321 initConstant(env, c, "IPPROTO_ICMPV6", IPPROTO_ICMPV6);
322 initConstant(env, c, "IPPROTO_IP", IPPROTO_IP);
323 initConstant(env, c, "IPPROTO_IPV6", IPPROTO_IPV6);
324 initConstant(env, c, "IPPROTO_RAW", IPPROTO_RAW);
325 initConstant(env, c, "IPPROTO_TCP", IPPROTO_TCP);
326 initConstant(env, c, "IPPROTO_UDP", IPPROTO_UDP);
327 initConstant(env, c, "IPPROTO_ESP", IPPROTO_ESP);
328 initConstant(env, c, "IPV6_CHECKSUM", IPV6_CHECKSUM);
329 initConstant(env, c, "IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS);
330 initConstant(env, c, "IPV6_MULTICAST_IF", IPV6_MULTICAST_IF);
331 initConstant(env, c, "IPV6_MULTICAST_LOOP", IPV6_MULTICAST_LOOP);
332 #if defined(IPV6_PKTINFO)
333 initConstant(env, c, "IPV6_PKTINFO", IPV6_PKTINFO);
334 #endif
335 #if defined(IPV6_RECVDSTOPTS)
336 initConstant(env, c, "IPV6_RECVDSTOPTS", IPV6_RECVDSTOPTS);
337 #endif
338 #if defined(IPV6_RECVHOPLIMIT)
339 initConstant(env, c, "IPV6_RECVHOPLIMIT", IPV6_RECVHOPLIMIT);
340 #endif
341 #if defined(IPV6_RECVHOPOPTS)
342 initConstant(env, c, "IPV6_RECVHOPOPTS", IPV6_RECVHOPOPTS);
343 #endif
344 #if defined(IPV6_RECVPKTINFO)
345 initConstant(env, c, "IPV6_RECVPKTINFO", IPV6_RECVPKTINFO);
346 #endif
347 #if defined(IPV6_RECVRTHDR)
348 initConstant(env, c, "IPV6_RECVRTHDR", IPV6_RECVRTHDR);
349 #endif
350 #if defined(IPV6_RECVTCLASS)
351 initConstant(env, c, "IPV6_RECVTCLASS", IPV6_RECVTCLASS);
352 #endif
353 #if defined(IPV6_TCLASS)
354 initConstant(env, c, "IPV6_TCLASS", IPV6_TCLASS);
355 #endif
356 initConstant(env, c, "IPV6_UNICAST_HOPS", IPV6_UNICAST_HOPS);
357 initConstant(env, c, "IPV6_V6ONLY", IPV6_V6ONLY);
358 initConstant(env, c, "IP_MULTICAST_ALL", IP_MULTICAST_ALL);
359 initConstant(env, c, "IP_MULTICAST_IF", IP_MULTICAST_IF);
360 initConstant(env, c, "IP_MULTICAST_LOOP", IP_MULTICAST_LOOP);
361 initConstant(env, c, "IP_MULTICAST_TTL", IP_MULTICAST_TTL);
362 initConstant(env, c, "IP_RECVTOS", IP_RECVTOS);
363 initConstant(env, c, "IP_TOS", IP_TOS);
364 initConstant(env, c, "IP_TTL", IP_TTL);
365 #if defined(_LINUX_CAPABILITY_VERSION_3)
366 initConstant(env, c, "_LINUX_CAPABILITY_VERSION_3", _LINUX_CAPABILITY_VERSION_3);
367 #endif
368 initConstant(env, c, "MAP_FIXED", MAP_FIXED);
369 initConstant(env, c, "MAP_ANONYMOUS", MAP_ANONYMOUS);
370 initConstant(env, c, "MAP_POPULATE", MAP_POPULATE);
371 initConstant(env, c, "MAP_PRIVATE", MAP_PRIVATE);
372 initConstant(env, c, "MAP_SHARED", MAP_SHARED);
373 #if defined(MCAST_JOIN_GROUP)
374 initConstant(env, c, "MCAST_JOIN_GROUP", MCAST_JOIN_GROUP);
375 #endif
376 #if defined(MCAST_LEAVE_GROUP)
377 initConstant(env, c, "MCAST_LEAVE_GROUP", MCAST_LEAVE_GROUP);
378 #endif
379 #if defined(MCAST_JOIN_SOURCE_GROUP)
380 initConstant(env, c, "MCAST_JOIN_SOURCE_GROUP", MCAST_JOIN_SOURCE_GROUP);
381 #endif
382 #if defined(MCAST_LEAVE_SOURCE_GROUP)
383 initConstant(env, c, "MCAST_LEAVE_SOURCE_GROUP", MCAST_LEAVE_SOURCE_GROUP);
384 #endif
385 #if defined(MCAST_BLOCK_SOURCE)
386 initConstant(env, c, "MCAST_BLOCK_SOURCE", MCAST_BLOCK_SOURCE);
387 #endif
388 #if defined(MCAST_UNBLOCK_SOURCE)
389 initConstant(env, c, "MCAST_UNBLOCK_SOURCE", MCAST_UNBLOCK_SOURCE);
390 #endif
391 initConstant(env, c, "MCL_CURRENT", MCL_CURRENT);
392 initConstant(env, c, "MCL_FUTURE", MCL_FUTURE);
393 #if defined(MFD_CLOEXEC)
394 initConstant(env, c, "MFD_CLOEXEC", MFD_CLOEXEC);
395 #endif
396 initConstant(env, c, "MSG_CTRUNC", MSG_CTRUNC);
397 initConstant(env, c, "MSG_DONTROUTE", MSG_DONTROUTE);
398 initConstant(env, c, "MSG_EOR", MSG_EOR);
399 initConstant(env, c, "MSG_OOB", MSG_OOB);
400 initConstant(env, c, "MSG_PEEK", MSG_PEEK);
401 initConstant(env, c, "MSG_TRUNC", MSG_TRUNC);
402 initConstant(env, c, "MSG_WAITALL", MSG_WAITALL);
403 initConstant(env, c, "MS_ASYNC", MS_ASYNC);
404 initConstant(env, c, "MS_INVALIDATE", MS_INVALIDATE);
405 initConstant(env, c, "MS_SYNC", MS_SYNC);
406 initConstant(env, c, "NETLINK_NETFILTER", NETLINK_NETFILTER);
407 initConstant(env, c, "NETLINK_ROUTE", NETLINK_ROUTE);
408 initConstant(env, c, "NETLINK_INET_DIAG", NETLINK_INET_DIAG);
409 initConstant(env, c, "NETLINK_XFRM", NETLINK_XFRM);
410 initConstant(env, c, "NI_DGRAM", NI_DGRAM);
411 initConstant(env, c, "NI_NAMEREQD", NI_NAMEREQD);
412 initConstant(env, c, "NI_NOFQDN", NI_NOFQDN);
413 initConstant(env, c, "NI_NUMERICHOST", NI_NUMERICHOST);
414 initConstant(env, c, "NI_NUMERICSERV", NI_NUMERICSERV);
415 initConstant(env, c, "O_ACCMODE", O_ACCMODE);
416 initConstant(env, c, "O_APPEND", O_APPEND);
417 initConstant(env, c, "O_CLOEXEC", O_CLOEXEC);
418 initConstant(env, c, "O_CREAT", O_CREAT);
419 initConstant(env, c, "O_DIRECT", O_DIRECT);
420 initConstant(env, c, "O_EXCL", O_EXCL);
421 initConstant(env, c, "O_NOCTTY", O_NOCTTY);
422 initConstant(env, c, "O_NOFOLLOW", O_NOFOLLOW);
423 initConstant(env, c, "O_NONBLOCK", O_NONBLOCK);
424 initConstant(env, c, "O_RDONLY", O_RDONLY);
425 initConstant(env, c, "O_RDWR", O_RDWR);
426 initConstant(env, c, "O_SYNC", O_SYNC);
427 initConstant(env, c, "O_DSYNC", O_DSYNC);
428 initConstant(env, c, "O_TRUNC", O_TRUNC);
429 initConstant(env, c, "O_WRONLY", O_WRONLY);
430 initConstant(env, c, "POLLERR", POLLERR);
431 initConstant(env, c, "POLLHUP", POLLHUP);
432 initConstant(env, c, "POLLIN", POLLIN);
433 initConstant(env, c, "POLLNVAL", POLLNVAL);
434 initConstant(env, c, "POLLOUT", POLLOUT);
435 initConstant(env, c, "POLLPRI", POLLPRI);
436 initConstant(env, c, "POLLRDBAND", POLLRDBAND);
437 initConstant(env, c, "POLLRDNORM", POLLRDNORM);
438 initConstant(env, c, "POLLWRBAND", POLLWRBAND);
439 initConstant(env, c, "POLLWRNORM", POLLWRNORM);
440 #if defined(PR_CAP_AMBIENT)
441 initConstant(env, c, "PR_CAP_AMBIENT", PR_CAP_AMBIENT);
442 #endif
443 #if defined(PR_CAP_AMBIENT_RAISE)
444 initConstant(env, c, "PR_CAP_AMBIENT_RAISE", PR_CAP_AMBIENT_RAISE);
445 #endif
446 #if defined(PR_GET_DUMPABLE)
447 initConstant(env, c, "PR_GET_DUMPABLE", PR_GET_DUMPABLE);
448 #endif
449 #if defined(PR_SET_DUMPABLE)
450 initConstant(env, c, "PR_SET_DUMPABLE", PR_SET_DUMPABLE);
451 #endif
452 #if defined(PR_SET_NO_NEW_PRIVS)
453 initConstant(env, c, "PR_SET_NO_NEW_PRIVS", PR_SET_NO_NEW_PRIVS);
454 #endif
455 initConstant(env, c, "PROT_EXEC", PROT_EXEC);
456 initConstant(env, c, "PROT_NONE", PROT_NONE);
457 initConstant(env, c, "PROT_READ", PROT_READ);
458 initConstant(env, c, "PROT_WRITE", PROT_WRITE);
459 initConstant(env, c, "R_OK", R_OK);
460 initConstant(env, c, "RLIMIT_NOFILE", RLIMIT_NOFILE);
461 // NOTE: The RT_* constants are not preprocessor defines, they're enum
462 // members. The best we can do (barring UAPI / kernel version checks) is
463 // to hope they exist on all host linuxes we're building on. These
464 // constants have been around since 2.6.35 at least, so we should be ok.
465 initConstant(env, c, "RT_SCOPE_HOST", RT_SCOPE_HOST);
466 initConstant(env, c, "RT_SCOPE_LINK", RT_SCOPE_LINK);
467 initConstant(env, c, "RT_SCOPE_NOWHERE", RT_SCOPE_NOWHERE);
468 initConstant(env, c, "RT_SCOPE_SITE", RT_SCOPE_SITE);
469 initConstant(env, c, "RT_SCOPE_UNIVERSE", RT_SCOPE_UNIVERSE);
470 initConstant(env, c, "RTMGRP_IPV4_IFADDR", RTMGRP_IPV4_IFADDR);
471 initConstant(env, c, "RTMGRP_IPV4_MROUTE", RTMGRP_IPV4_MROUTE);
472 initConstant(env, c, "RTMGRP_IPV4_ROUTE", RTMGRP_IPV4_ROUTE);
473 initConstant(env, c, "RTMGRP_IPV4_RULE", RTMGRP_IPV4_RULE);
474 initConstant(env, c, "RTMGRP_IPV6_IFADDR", RTMGRP_IPV6_IFADDR);
475 initConstant(env, c, "RTMGRP_IPV6_IFINFO", RTMGRP_IPV6_IFINFO);
476 initConstant(env, c, "RTMGRP_IPV6_MROUTE", RTMGRP_IPV6_MROUTE);
477 initConstant(env, c, "RTMGRP_IPV6_PREFIX", RTMGRP_IPV6_PREFIX);
478 initConstant(env, c, "RTMGRP_IPV6_ROUTE", RTMGRP_IPV6_ROUTE);
479 initConstant(env, c, "RTMGRP_LINK", RTMGRP_LINK);
480 initConstant(env, c, "RTMGRP_NEIGH", RTMGRP_NEIGH);
481 initConstant(env, c, "RTMGRP_NOTIFY", RTMGRP_NOTIFY);
482 initConstant(env, c, "RTMGRP_TC", RTMGRP_TC);
483 initConstant(env, c, "SEEK_CUR", SEEK_CUR);
484 initConstant(env, c, "SEEK_END", SEEK_END);
485 initConstant(env, c, "SEEK_SET", SEEK_SET);
486 initConstant(env, c, "SHUT_RD", SHUT_RD);
487 initConstant(env, c, "SHUT_RDWR", SHUT_RDWR);
488 initConstant(env, c, "SHUT_WR", SHUT_WR);
489 initConstant(env, c, "SIGABRT", SIGABRT);
490 initConstant(env, c, "SIGALRM", SIGALRM);
491 initConstant(env, c, "SIGBUS", SIGBUS);
492 initConstant(env, c, "SIGCHLD", SIGCHLD);
493 initConstant(env, c, "SIGCONT", SIGCONT);
494 initConstant(env, c, "SIGFPE", SIGFPE);
495 initConstant(env, c, "SIGHUP", SIGHUP);
496 initConstant(env, c, "SIGILL", SIGILL);
497 initConstant(env, c, "SIGINT", SIGINT);
498 initConstant(env, c, "SIGIO", SIGIO);
499 initConstant(env, c, "SIGKILL", SIGKILL);
500 initConstant(env, c, "SIGPIPE", SIGPIPE);
501 initConstant(env, c, "SIGPROF", SIGPROF);
502 #if defined(SIGPWR)
503 initConstant(env, c, "SIGPWR", SIGPWR);
504 #endif
505 initConstant(env, c, "SIGQUIT", SIGQUIT);
506 #if defined(SIGRTMAX)
507 initConstant(env, c, "SIGRTMAX", SIGRTMAX);
508 #endif
509 #if defined(SIGRTMIN)
510 initConstant(env, c, "SIGRTMIN", SIGRTMIN);
511 #endif
512 initConstant(env, c, "SIGSEGV", SIGSEGV);
513 #if defined(SIGSTKFLT)
514 initConstant(env, c, "SIGSTKFLT", SIGSTKFLT);
515 #endif
516 initConstant(env, c, "SIGSTOP", SIGSTOP);
517 initConstant(env, c, "SIGSYS", SIGSYS);
518 initConstant(env, c, "SIGTERM", SIGTERM);
519 initConstant(env, c, "SIGTRAP", SIGTRAP);
520 initConstant(env, c, "SIGTSTP", SIGTSTP);
521 initConstant(env, c, "SIGTTIN", SIGTTIN);
522 initConstant(env, c, "SIGTTOU", SIGTTOU);
523 initConstant(env, c, "SIGURG", SIGURG);
524 initConstant(env, c, "SIGUSR1", SIGUSR1);
525 initConstant(env, c, "SIGUSR2", SIGUSR2);
526 initConstant(env, c, "SIGVTALRM", SIGVTALRM);
527 initConstant(env, c, "SIGWINCH", SIGWINCH);
528 initConstant(env, c, "SIGXCPU", SIGXCPU);
529 initConstant(env, c, "SIGXFSZ", SIGXFSZ);
530 initConstant(env, c, "SIOCGIFADDR", SIOCGIFADDR);
531 initConstant(env, c, "SIOCGIFBRDADDR", SIOCGIFBRDADDR);
532 initConstant(env, c, "SIOCGIFDSTADDR", SIOCGIFDSTADDR);
533 initConstant(env, c, "SIOCGIFNETMASK", SIOCGIFNETMASK);
534 initConstant(env, c, "SOCK_CLOEXEC", SOCK_CLOEXEC);
535 initConstant(env, c, "SOCK_DGRAM", SOCK_DGRAM);
536 initConstant(env, c, "SOCK_NONBLOCK", SOCK_NONBLOCK);
537 initConstant(env, c, "SOCK_RAW", SOCK_RAW);
538 initConstant(env, c, "SOCK_SEQPACKET", SOCK_SEQPACKET);
539 initConstant(env, c, "SOCK_STREAM", SOCK_STREAM);
540 initConstant(env, c, "SOL_SOCKET", SOL_SOCKET);
541 #if defined(SOL_UDP)
542 initConstant(env, c, "SOL_UDP", SOL_UDP);
543 #endif
544 initConstant(env, c, "SOL_PACKET", SOL_PACKET);
545 #if defined(SO_BINDTODEVICE)
546 initConstant(env, c, "SO_BINDTODEVICE", SO_BINDTODEVICE);
547 #endif
548 initConstant(env, c, "SO_BROADCAST", SO_BROADCAST);
549 initConstant(env, c, "SO_DEBUG", SO_DEBUG);
550 #if defined(SO_DOMAIN)
551 initConstant(env, c, "SO_DOMAIN", SO_DOMAIN);
552 #endif
553 initConstant(env, c, "SO_DONTROUTE", SO_DONTROUTE);
554 initConstant(env, c, "SO_ERROR", SO_ERROR);
555 initConstant(env, c, "SO_KEEPALIVE", SO_KEEPALIVE);
556 initConstant(env, c, "SO_LINGER", SO_LINGER);
557 initConstant(env, c, "SO_OOBINLINE", SO_OOBINLINE);
558 #if defined(SO_PASSCRED)
559 initConstant(env, c, "SO_PASSCRED", SO_PASSCRED);
560 #endif
561 #if defined(SO_PEERCRED)
562 initConstant(env, c, "SO_PEERCRED", SO_PEERCRED);
563 #endif
564 #if defined(SO_PROTOCOL)
565 initConstant(env, c, "SO_PROTOCOL", SO_PROTOCOL);
566 #endif
567 initConstant(env, c, "SO_RCVBUF", SO_RCVBUF);
568 initConstant(env, c, "SO_RCVLOWAT", SO_RCVLOWAT);
569 initConstant(env, c, "SO_RCVTIMEO", SO_RCVTIMEO);
570 initConstant(env, c, "SO_REUSEADDR", SO_REUSEADDR);
571 initConstant(env, c, "SO_SNDBUF", SO_SNDBUF);
572 initConstant(env, c, "SO_SNDLOWAT", SO_SNDLOWAT);
573 initConstant(env, c, "SO_SNDTIMEO", SO_SNDTIMEO);
574 initConstant(env, c, "SO_TYPE", SO_TYPE);
575 #if defined(PACKET_IGNORE_OUTGOING)
576 initConstant(env, c, "PACKET_IGNORE_OUTGOING", PACKET_IGNORE_OUTGOING);
577 #endif
578 initConstant(env, c, "SPLICE_F_MOVE", SPLICE_F_MOVE);
579 initConstant(env, c, "SPLICE_F_NONBLOCK", SPLICE_F_NONBLOCK);
580 initConstant(env, c, "SPLICE_F_MORE", SPLICE_F_MORE);
581 initConstant(env, c, "STDERR_FILENO", STDERR_FILENO);
582 initConstant(env, c, "STDIN_FILENO", STDIN_FILENO);
583 initConstant(env, c, "STDOUT_FILENO", STDOUT_FILENO);
584 initConstant(env, c, "ST_MANDLOCK", ST_MANDLOCK);
585 initConstant(env, c, "ST_NOATIME", ST_NOATIME);
586 initConstant(env, c, "ST_NODEV", ST_NODEV);
587 initConstant(env, c, "ST_NODIRATIME", ST_NODIRATIME);
588 initConstant(env, c, "ST_NOEXEC", ST_NOEXEC);
589 initConstant(env, c, "ST_NOSUID", ST_NOSUID);
590 initConstant(env, c, "ST_RDONLY", ST_RDONLY);
591 initConstant(env, c, "ST_RELATIME", ST_RELATIME);
592 initConstant(env, c, "ST_SYNCHRONOUS", ST_SYNCHRONOUS);
593 initConstant(env, c, "S_IFBLK", S_IFBLK);
594 initConstant(env, c, "S_IFCHR", S_IFCHR);
595 initConstant(env, c, "S_IFDIR", S_IFDIR);
596 initConstant(env, c, "S_IFIFO", S_IFIFO);
597 initConstant(env, c, "S_IFLNK", S_IFLNK);
598 initConstant(env, c, "S_IFMT", S_IFMT);
599 initConstant(env, c, "S_IFREG", S_IFREG);
600 initConstant(env, c, "S_IFSOCK", S_IFSOCK);
601 initConstant(env, c, "S_IRGRP", S_IRGRP);
602 initConstant(env, c, "S_IROTH", S_IROTH);
603 initConstant(env, c, "S_IRUSR", S_IRUSR);
604 initConstant(env, c, "S_IRWXG", S_IRWXG);
605 initConstant(env, c, "S_IRWXO", S_IRWXO);
606 initConstant(env, c, "S_IRWXU", S_IRWXU);
607 initConstant(env, c, "S_ISGID", S_ISGID);
608 initConstant(env, c, "S_ISUID", S_ISUID);
609 initConstant(env, c, "S_ISVTX", S_ISVTX);
610 initConstant(env, c, "S_IWGRP", S_IWGRP);
611 initConstant(env, c, "S_IWOTH", S_IWOTH);
612 initConstant(env, c, "S_IWUSR", S_IWUSR);
613 initConstant(env, c, "S_IXGRP", S_IXGRP);
614 initConstant(env, c, "S_IXOTH", S_IXOTH);
615 initConstant(env, c, "S_IXUSR", S_IXUSR);
616 initConstant(env, c, "TCP_NODELAY", TCP_NODELAY);
617 #if defined(TCP_USER_TIMEOUT)
618 initConstant(env, c, "TCP_USER_TIMEOUT", TCP_USER_TIMEOUT);
619 #endif
620 initConstant(env, c, "TIOCOUTQ", TIOCOUTQ);
621 initConstant(env, c, "UDP_ENCAP", UDP_ENCAP);
622 initConstant(env, c, "UDP_ENCAP_ESPINUDP_NON_IKE", UDP_ENCAP_ESPINUDP_NON_IKE);
623 initConstant(env, c, "UDP_ENCAP_ESPINUDP", UDP_ENCAP_ESPINUDP);
624 #if defined(UDP_GRO)
625 initConstant(env, c, "UDP_GRO", UDP_GRO);
626 #endif
627 #if defined(UDP_SEGMENT)
628 initConstant(env, c, "UDP_SEGMENT", UDP_SEGMENT);
629 #endif
630 // UNIX_PATH_MAX is mentioned in some versions of unix(7), but not actually declared.
631 initConstant(env, c, "UNIX_PATH_MAX", sizeof(sockaddr_un::sun_path));
632 initConstant(env, c, "WCONTINUED", WCONTINUED);
633 initConstant(env, c, "WEXITED", WEXITED);
634 initConstant(env, c, "WNOHANG", WNOHANG);
635 initConstant(env, c, "WNOWAIT", WNOWAIT);
636 initConstant(env, c, "WSTOPPED", WSTOPPED);
637 initConstant(env, c, "WUNTRACED", WUNTRACED);
638 initConstant(env, c, "W_OK", W_OK);
639 initConstant(env, c, "XATTR_CREATE", XATTR_CREATE);
640 initConstant(env, c, "XATTR_REPLACE", XATTR_REPLACE);
641 initConstant(env, c, "X_OK", X_OK);
642 initConstant(env, c, "_SC_2_CHAR_TERM", _SC_2_CHAR_TERM);
643 initConstant(env, c, "_SC_2_C_BIND", _SC_2_C_BIND);
644 initConstant(env, c, "_SC_2_C_DEV", _SC_2_C_DEV);
645 #if defined(_SC_2_C_VERSION)
646 initConstant(env, c, "_SC_2_C_VERSION", _SC_2_C_VERSION);
647 #endif
648 initConstant(env, c, "_SC_2_FORT_DEV", _SC_2_FORT_DEV);
649 initConstant(env, c, "_SC_2_FORT_RUN", _SC_2_FORT_RUN);
650 initConstant(env, c, "_SC_2_LOCALEDEF", _SC_2_LOCALEDEF);
651 initConstant(env, c, "_SC_2_SW_DEV", _SC_2_SW_DEV);
652 initConstant(env, c, "_SC_2_UPE", _SC_2_UPE);
653 initConstant(env, c, "_SC_2_VERSION", _SC_2_VERSION);
654 initConstant(env, c, "_SC_AIO_LISTIO_MAX", _SC_AIO_LISTIO_MAX);
655 initConstant(env, c, "_SC_AIO_MAX", _SC_AIO_MAX);
656 initConstant(env, c, "_SC_AIO_PRIO_DELTA_MAX", _SC_AIO_PRIO_DELTA_MAX);
657 initConstant(env, c, "_SC_ARG_MAX", _SC_ARG_MAX);
658 initConstant(env, c, "_SC_ASYNCHRONOUS_IO", _SC_ASYNCHRONOUS_IO);
659 initConstant(env, c, "_SC_ATEXIT_MAX", _SC_ATEXIT_MAX);
660 #if defined(_SC_AVPHYS_PAGES)
661 initConstant(env, c, "_SC_AVPHYS_PAGES", _SC_AVPHYS_PAGES);
662 #endif
663 initConstant(env, c, "_SC_BC_BASE_MAX", _SC_BC_BASE_MAX);
664 initConstant(env, c, "_SC_BC_DIM_MAX", _SC_BC_DIM_MAX);
665 initConstant(env, c, "_SC_BC_SCALE_MAX", _SC_BC_SCALE_MAX);
666 initConstant(env, c, "_SC_BC_STRING_MAX", _SC_BC_STRING_MAX);
667 initConstant(env, c, "_SC_CHILD_MAX", _SC_CHILD_MAX);
668 initConstant(env, c, "_SC_CLK_TCK", _SC_CLK_TCK);
669 initConstant(env, c, "_SC_COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX);
670 initConstant(env, c, "_SC_DELAYTIMER_MAX", _SC_DELAYTIMER_MAX);
671 initConstant(env, c, "_SC_EXPR_NEST_MAX", _SC_EXPR_NEST_MAX);
672 initConstant(env, c, "_SC_FSYNC", _SC_FSYNC);
673 initConstant(env, c, "_SC_GETGR_R_SIZE_MAX", _SC_GETGR_R_SIZE_MAX);
674 initConstant(env, c, "_SC_GETPW_R_SIZE_MAX", _SC_GETPW_R_SIZE_MAX);
675 initConstant(env, c, "_SC_IOV_MAX", _SC_IOV_MAX);
676 initConstant(env, c, "_SC_JOB_CONTROL", _SC_JOB_CONTROL);
677 initConstant(env, c, "_SC_LINE_MAX", _SC_LINE_MAX);
678 initConstant(env, c, "_SC_LOGIN_NAME_MAX", _SC_LOGIN_NAME_MAX);
679 initConstant(env, c, "_SC_MAPPED_FILES", _SC_MAPPED_FILES);
680 initConstant(env, c, "_SC_MEMLOCK", _SC_MEMLOCK);
681 initConstant(env, c, "_SC_MEMLOCK_RANGE", _SC_MEMLOCK_RANGE);
682 initConstant(env, c, "_SC_MEMORY_PROTECTION", _SC_MEMORY_PROTECTION);
683 initConstant(env, c, "_SC_MESSAGE_PASSING", _SC_MESSAGE_PASSING);
684 initConstant(env, c, "_SC_MQ_OPEN_MAX", _SC_MQ_OPEN_MAX);
685 initConstant(env, c, "_SC_MQ_PRIO_MAX", _SC_MQ_PRIO_MAX);
686 initConstant(env, c, "_SC_NGROUPS_MAX", _SC_NGROUPS_MAX);
687 initConstant(env, c, "_SC_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF);
688 initConstant(env, c, "_SC_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN);
689 initConstant(env, c, "_SC_OPEN_MAX", _SC_OPEN_MAX);
690 initConstant(env, c, "_SC_PAGESIZE", _SC_PAGESIZE);
691 initConstant(env, c, "_SC_PAGE_SIZE", _SC_PAGE_SIZE);
692 initConstant(env, c, "_SC_PASS_MAX", _SC_PASS_MAX);
693 #if defined(_SC_PHYS_PAGES)
694 initConstant(env, c, "_SC_PHYS_PAGES", _SC_PHYS_PAGES);
695 #endif
696 initConstant(env, c, "_SC_PRIORITIZED_IO", _SC_PRIORITIZED_IO);
697 initConstant(env, c, "_SC_PRIORITY_SCHEDULING", _SC_PRIORITY_SCHEDULING);
698 initConstant(env, c, "_SC_REALTIME_SIGNALS", _SC_REALTIME_SIGNALS);
699 initConstant(env, c, "_SC_RE_DUP_MAX", _SC_RE_DUP_MAX);
700 initConstant(env, c, "_SC_RTSIG_MAX", _SC_RTSIG_MAX);
701 initConstant(env, c, "_SC_SAVED_IDS", _SC_SAVED_IDS);
702 initConstant(env, c, "_SC_SEMAPHORES", _SC_SEMAPHORES);
703 initConstant(env, c, "_SC_SEM_NSEMS_MAX", _SC_SEM_NSEMS_MAX);
704 initConstant(env, c, "_SC_SEM_VALUE_MAX", _SC_SEM_VALUE_MAX);
705 initConstant(env, c, "_SC_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS);
706 initConstant(env, c, "_SC_SIGQUEUE_MAX", _SC_SIGQUEUE_MAX);
707 initConstant(env, c, "_SC_STREAM_MAX", _SC_STREAM_MAX);
708 initConstant(env, c, "_SC_SYNCHRONIZED_IO", _SC_SYNCHRONIZED_IO);
709 initConstant(env, c, "_SC_THREADS", _SC_THREADS);
710 initConstant(env, c, "_SC_THREAD_ATTR_STACKADDR", _SC_THREAD_ATTR_STACKADDR);
711 initConstant(env, c, "_SC_THREAD_ATTR_STACKSIZE", _SC_THREAD_ATTR_STACKSIZE);
712 initConstant(env, c, "_SC_THREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS);
713 initConstant(env, c, "_SC_THREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX);
714 initConstant(env, c, "_SC_THREAD_PRIORITY_SCHEDULING", _SC_THREAD_PRIORITY_SCHEDULING);
715 initConstant(env, c, "_SC_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT);
716 initConstant(env, c, "_SC_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT);
717 initConstant(env, c, "_SC_THREAD_SAFE_FUNCTIONS", _SC_THREAD_SAFE_FUNCTIONS);
718 initConstant(env, c, "_SC_THREAD_STACK_MIN", _SC_THREAD_STACK_MIN);
719 initConstant(env, c, "_SC_THREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX);
720 initConstant(env, c, "_SC_TIMERS", _SC_TIMERS);
721 initConstant(env, c, "_SC_TIMER_MAX", _SC_TIMER_MAX);
722 initConstant(env, c, "_SC_TTY_NAME_MAX", _SC_TTY_NAME_MAX);
723 initConstant(env, c, "_SC_TZNAME_MAX", _SC_TZNAME_MAX);
724 initConstant(env, c, "_SC_VERSION", _SC_VERSION);
725 initConstant(env, c, "_SC_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32);
726 initConstant(env, c, "_SC_XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG);
727 initConstant(env, c, "_SC_XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64);
728 initConstant(env, c, "_SC_XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG);
729 initConstant(env, c, "_SC_XOPEN_CRYPT", _SC_XOPEN_CRYPT);
730 initConstant(env, c, "_SC_XOPEN_ENH_I18N", _SC_XOPEN_ENH_I18N);
731 initConstant(env, c, "_SC_XOPEN_LEGACY", _SC_XOPEN_LEGACY);
732 initConstant(env, c, "_SC_XOPEN_REALTIME", _SC_XOPEN_REALTIME);
733 initConstant(env, c, "_SC_XOPEN_REALTIME_THREADS", _SC_XOPEN_REALTIME_THREADS);
734 initConstant(env, c, "_SC_XOPEN_SHM", _SC_XOPEN_SHM);
735 initConstant(env, c, "_SC_XOPEN_UNIX", _SC_XOPEN_UNIX);
736 initConstant(env, c, "_SC_XOPEN_VERSION", _SC_XOPEN_VERSION);
737 initConstant(env, c, "_SC_XOPEN_XCU_VERSION", _SC_XOPEN_XCU_VERSION);
738 }
739
740 static JNINativeMethod gMethods[] = {
741 NATIVE_METHOD(OsConstants, initConstants, "()V"),
742 };
register_android_system_OsConstants(JNIEnv * env)743 void register_android_system_OsConstants(JNIEnv* env) {
744 jniRegisterNativeMethods(env, "android/system/OsConstants", gMethods, NELEM(gMethods));
745 }
746