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 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 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_NODAD) 271 initConstant(env, c, "IFA_F_NODAD", IFA_F_NODAD); 272 #endif 273 #if defined(IFA_F_OPTIMISTIC) 274 initConstant(env, c, "IFA_F_OPTIMISTIC", IFA_F_OPTIMISTIC); 275 #endif 276 #if defined(IFA_F_PERMANENT) 277 initConstant(env, c, "IFA_F_PERMANENT", IFA_F_PERMANENT); 278 #endif 279 #if defined(IFA_F_SECONDARY) 280 initConstant(env, c, "IFA_F_SECONDARY", IFA_F_SECONDARY); 281 #endif 282 #if defined(IFA_F_TEMPORARY) 283 initConstant(env, c, "IFA_F_TEMPORARY", IFA_F_TEMPORARY); 284 #endif 285 #if defined(IFA_F_TENTATIVE) 286 initConstant(env, c, "IFA_F_TENTATIVE", IFA_F_TENTATIVE); 287 #endif 288 initConstant(env, c, "IFF_ALLMULTI", IFF_ALLMULTI); 289 #if defined(IFF_AUTOMEDIA) 290 initConstant(env, c, "IFF_AUTOMEDIA", IFF_AUTOMEDIA); 291 #endif 292 initConstant(env, c, "IFF_BROADCAST", IFF_BROADCAST); 293 initConstant(env, c, "IFF_DEBUG", IFF_DEBUG); 294 #if defined(IFF_DYNAMIC) 295 initConstant(env, c, "IFF_DYNAMIC", IFF_DYNAMIC); 296 #endif 297 initConstant(env, c, "IFF_LOOPBACK", IFF_LOOPBACK); 298 #if defined(IFF_MASTER) 299 initConstant(env, c, "IFF_MASTER", IFF_MASTER); 300 #endif 301 initConstant(env, c, "IFF_MULTICAST", IFF_MULTICAST); 302 initConstant(env, c, "IFF_NOARP", IFF_NOARP); 303 initConstant(env, c, "IFF_NOTRAILERS", IFF_NOTRAILERS); 304 initConstant(env, c, "IFF_POINTOPOINT", IFF_POINTOPOINT); 305 #if defined(IFF_PORTSEL) 306 initConstant(env, c, "IFF_PORTSEL", IFF_PORTSEL); 307 #endif 308 initConstant(env, c, "IFF_PROMISC", IFF_PROMISC); 309 initConstant(env, c, "IFF_RUNNING", IFF_RUNNING); 310 #if defined(IFF_SLAVE) 311 initConstant(env, c, "IFF_SLAVE", IFF_SLAVE); 312 #endif 313 initConstant(env, c, "IFF_UP", IFF_UP); 314 initConstant(env, c, "IPPROTO_ICMP", IPPROTO_ICMP); 315 initConstant(env, c, "IPPROTO_ICMPV6", IPPROTO_ICMPV6); 316 initConstant(env, c, "IPPROTO_IP", IPPROTO_IP); 317 initConstant(env, c, "IPPROTO_IPV6", IPPROTO_IPV6); 318 initConstant(env, c, "IPPROTO_RAW", IPPROTO_RAW); 319 initConstant(env, c, "IPPROTO_TCP", IPPROTO_TCP); 320 initConstant(env, c, "IPPROTO_UDP", IPPROTO_UDP); 321 initConstant(env, c, "IPV6_CHECKSUM", IPV6_CHECKSUM); 322 initConstant(env, c, "IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS); 323 initConstant(env, c, "IPV6_MULTICAST_IF", IPV6_MULTICAST_IF); 324 initConstant(env, c, "IPV6_MULTICAST_LOOP", IPV6_MULTICAST_LOOP); 325 #if defined(IPV6_RECVDSTOPTS) 326 initConstant(env, c, "IPV6_RECVDSTOPTS", IPV6_RECVDSTOPTS); 327 #endif 328 #if defined(IPV6_RECVHOPLIMIT) 329 initConstant(env, c, "IPV6_RECVHOPLIMIT", IPV6_RECVHOPLIMIT); 330 #endif 331 #if defined(IPV6_RECVHOPOPTS) 332 initConstant(env, c, "IPV6_RECVHOPOPTS", IPV6_RECVHOPOPTS); 333 #endif 334 #if defined(IPV6_RECVPKTINFO) 335 initConstant(env, c, "IPV6_RECVPKTINFO", IPV6_RECVPKTINFO); 336 #endif 337 #if defined(IPV6_RECVRTHDR) 338 initConstant(env, c, "IPV6_RECVRTHDR", IPV6_RECVRTHDR); 339 #endif 340 #if defined(IPV6_RECVTCLASS) 341 initConstant(env, c, "IPV6_RECVTCLASS", IPV6_RECVTCLASS); 342 #endif 343 #if defined(IPV6_TCLASS) 344 initConstant(env, c, "IPV6_TCLASS", IPV6_TCLASS); 345 #endif 346 initConstant(env, c, "IPV6_UNICAST_HOPS", IPV6_UNICAST_HOPS); 347 initConstant(env, c, "IPV6_V6ONLY", IPV6_V6ONLY); 348 initConstant(env, c, "IP_MULTICAST_ALL", IP_MULTICAST_ALL); 349 initConstant(env, c, "IP_MULTICAST_IF", IP_MULTICAST_IF); 350 initConstant(env, c, "IP_MULTICAST_LOOP", IP_MULTICAST_LOOP); 351 initConstant(env, c, "IP_MULTICAST_TTL", IP_MULTICAST_TTL); 352 initConstant(env, c, "IP_RECVTOS", IP_RECVTOS); 353 initConstant(env, c, "IP_TOS", IP_TOS); 354 initConstant(env, c, "IP_TTL", IP_TTL); 355 #if defined(_LINUX_CAPABILITY_VERSION_3) 356 initConstant(env, c, "_LINUX_CAPABILITY_VERSION_3", _LINUX_CAPABILITY_VERSION_3); 357 #endif 358 initConstant(env, c, "MAP_FIXED", MAP_FIXED); 359 initConstant(env, c, "MAP_ANONYMOUS", MAP_ANONYMOUS); 360 initConstant(env, c, "MAP_POPULATE", MAP_POPULATE); 361 initConstant(env, c, "MAP_PRIVATE", MAP_PRIVATE); 362 initConstant(env, c, "MAP_SHARED", MAP_SHARED); 363 #if defined(MCAST_JOIN_GROUP) 364 initConstant(env, c, "MCAST_JOIN_GROUP", MCAST_JOIN_GROUP); 365 #endif 366 #if defined(MCAST_LEAVE_GROUP) 367 initConstant(env, c, "MCAST_LEAVE_GROUP", MCAST_LEAVE_GROUP); 368 #endif 369 #if defined(MCAST_JOIN_SOURCE_GROUP) 370 initConstant(env, c, "MCAST_JOIN_SOURCE_GROUP", MCAST_JOIN_SOURCE_GROUP); 371 #endif 372 #if defined(MCAST_LEAVE_SOURCE_GROUP) 373 initConstant(env, c, "MCAST_LEAVE_SOURCE_GROUP", MCAST_LEAVE_SOURCE_GROUP); 374 #endif 375 #if defined(MCAST_BLOCK_SOURCE) 376 initConstant(env, c, "MCAST_BLOCK_SOURCE", MCAST_BLOCK_SOURCE); 377 #endif 378 #if defined(MCAST_UNBLOCK_SOURCE) 379 initConstant(env, c, "MCAST_UNBLOCK_SOURCE", MCAST_UNBLOCK_SOURCE); 380 #endif 381 initConstant(env, c, "MCL_CURRENT", MCL_CURRENT); 382 initConstant(env, c, "MCL_FUTURE", MCL_FUTURE); 383 #if defined(MFD_CLOEXEC) 384 initConstant(env, c, "MFD_CLOEXEC", MFD_CLOEXEC); 385 #endif 386 initConstant(env, c, "MSG_CTRUNC", MSG_CTRUNC); 387 initConstant(env, c, "MSG_DONTROUTE", MSG_DONTROUTE); 388 initConstant(env, c, "MSG_EOR", MSG_EOR); 389 initConstant(env, c, "MSG_OOB", MSG_OOB); 390 initConstant(env, c, "MSG_PEEK", MSG_PEEK); 391 initConstant(env, c, "MSG_TRUNC", MSG_TRUNC); 392 initConstant(env, c, "MSG_WAITALL", MSG_WAITALL); 393 initConstant(env, c, "MS_ASYNC", MS_ASYNC); 394 initConstant(env, c, "MS_INVALIDATE", MS_INVALIDATE); 395 initConstant(env, c, "MS_SYNC", MS_SYNC); 396 initConstant(env, c, "NETLINK_NETFILTER", NETLINK_NETFILTER); 397 initConstant(env, c, "NETLINK_ROUTE", NETLINK_ROUTE); 398 initConstant(env, c, "NETLINK_INET_DIAG", NETLINK_INET_DIAG); 399 initConstant(env, c, "NI_DGRAM", NI_DGRAM); 400 initConstant(env, c, "NI_NAMEREQD", NI_NAMEREQD); 401 initConstant(env, c, "NI_NOFQDN", NI_NOFQDN); 402 initConstant(env, c, "NI_NUMERICHOST", NI_NUMERICHOST); 403 initConstant(env, c, "NI_NUMERICSERV", NI_NUMERICSERV); 404 initConstant(env, c, "O_ACCMODE", O_ACCMODE); 405 initConstant(env, c, "O_APPEND", O_APPEND); 406 initConstant(env, c, "O_CLOEXEC", O_CLOEXEC); 407 initConstant(env, c, "O_CREAT", O_CREAT); 408 initConstant(env, c, "O_DIRECT", O_DIRECT); 409 initConstant(env, c, "O_EXCL", O_EXCL); 410 initConstant(env, c, "O_NOCTTY", O_NOCTTY); 411 initConstant(env, c, "O_NOFOLLOW", O_NOFOLLOW); 412 initConstant(env, c, "O_NONBLOCK", O_NONBLOCK); 413 initConstant(env, c, "O_RDONLY", O_RDONLY); 414 initConstant(env, c, "O_RDWR", O_RDWR); 415 initConstant(env, c, "O_SYNC", O_SYNC); 416 initConstant(env, c, "O_DSYNC", O_DSYNC); 417 initConstant(env, c, "O_TRUNC", O_TRUNC); 418 initConstant(env, c, "O_WRONLY", O_WRONLY); 419 initConstant(env, c, "POLLERR", POLLERR); 420 initConstant(env, c, "POLLHUP", POLLHUP); 421 initConstant(env, c, "POLLIN", POLLIN); 422 initConstant(env, c, "POLLNVAL", POLLNVAL); 423 initConstant(env, c, "POLLOUT", POLLOUT); 424 initConstant(env, c, "POLLPRI", POLLPRI); 425 initConstant(env, c, "POLLRDBAND", POLLRDBAND); 426 initConstant(env, c, "POLLRDNORM", POLLRDNORM); 427 initConstant(env, c, "POLLWRBAND", POLLWRBAND); 428 initConstant(env, c, "POLLWRNORM", POLLWRNORM); 429 #if defined(PR_CAP_AMBIENT) 430 initConstant(env, c, "PR_CAP_AMBIENT", PR_CAP_AMBIENT); 431 #endif 432 #if defined(PR_CAP_AMBIENT_RAISE) 433 initConstant(env, c, "PR_CAP_AMBIENT_RAISE", PR_CAP_AMBIENT_RAISE); 434 #endif 435 #if defined(PR_GET_DUMPABLE) 436 initConstant(env, c, "PR_GET_DUMPABLE", PR_GET_DUMPABLE); 437 #endif 438 #if defined(PR_SET_DUMPABLE) 439 initConstant(env, c, "PR_SET_DUMPABLE", PR_SET_DUMPABLE); 440 #endif 441 #if defined(PR_SET_NO_NEW_PRIVS) 442 initConstant(env, c, "PR_SET_NO_NEW_PRIVS", PR_SET_NO_NEW_PRIVS); 443 #endif 444 initConstant(env, c, "PROT_EXEC", PROT_EXEC); 445 initConstant(env, c, "PROT_NONE", PROT_NONE); 446 initConstant(env, c, "PROT_READ", PROT_READ); 447 initConstant(env, c, "PROT_WRITE", PROT_WRITE); 448 initConstant(env, c, "R_OK", R_OK); 449 initConstant(env, c, "RLIMIT_NOFILE", RLIMIT_NOFILE); 450 // NOTE: The RT_* constants are not preprocessor defines, they're enum 451 // members. The best we can do (barring UAPI / kernel version checks) is 452 // to hope they exist on all host linuxes we're building on. These 453 // constants have been around since 2.6.35 at least, so we should be ok. 454 initConstant(env, c, "RT_SCOPE_HOST", RT_SCOPE_HOST); 455 initConstant(env, c, "RT_SCOPE_LINK", RT_SCOPE_LINK); 456 initConstant(env, c, "RT_SCOPE_NOWHERE", RT_SCOPE_NOWHERE); 457 initConstant(env, c, "RT_SCOPE_SITE", RT_SCOPE_SITE); 458 initConstant(env, c, "RT_SCOPE_UNIVERSE", RT_SCOPE_UNIVERSE); 459 initConstant(env, c, "RTMGRP_IPV4_IFADDR", RTMGRP_IPV4_IFADDR); 460 initConstant(env, c, "RTMGRP_IPV4_MROUTE", RTMGRP_IPV4_MROUTE); 461 initConstant(env, c, "RTMGRP_IPV4_ROUTE", RTMGRP_IPV4_ROUTE); 462 initConstant(env, c, "RTMGRP_IPV4_RULE", RTMGRP_IPV4_RULE); 463 initConstant(env, c, "RTMGRP_IPV6_IFADDR", RTMGRP_IPV6_IFADDR); 464 initConstant(env, c, "RTMGRP_IPV6_IFINFO", RTMGRP_IPV6_IFINFO); 465 initConstant(env, c, "RTMGRP_IPV6_MROUTE", RTMGRP_IPV6_MROUTE); 466 initConstant(env, c, "RTMGRP_IPV6_PREFIX", RTMGRP_IPV6_PREFIX); 467 initConstant(env, c, "RTMGRP_IPV6_ROUTE", RTMGRP_IPV6_ROUTE); 468 initConstant(env, c, "RTMGRP_LINK", RTMGRP_LINK); 469 initConstant(env, c, "RTMGRP_NEIGH", RTMGRP_NEIGH); 470 initConstant(env, c, "RTMGRP_NOTIFY", RTMGRP_NOTIFY); 471 initConstant(env, c, "RTMGRP_TC", RTMGRP_TC); 472 initConstant(env, c, "SEEK_CUR", SEEK_CUR); 473 initConstant(env, c, "SEEK_END", SEEK_END); 474 initConstant(env, c, "SEEK_SET", SEEK_SET); 475 initConstant(env, c, "SHUT_RD", SHUT_RD); 476 initConstant(env, c, "SHUT_RDWR", SHUT_RDWR); 477 initConstant(env, c, "SHUT_WR", SHUT_WR); 478 initConstant(env, c, "SIGABRT", SIGABRT); 479 initConstant(env, c, "SIGALRM", SIGALRM); 480 initConstant(env, c, "SIGBUS", SIGBUS); 481 initConstant(env, c, "SIGCHLD", SIGCHLD); 482 initConstant(env, c, "SIGCONT", SIGCONT); 483 initConstant(env, c, "SIGFPE", SIGFPE); 484 initConstant(env, c, "SIGHUP", SIGHUP); 485 initConstant(env, c, "SIGILL", SIGILL); 486 initConstant(env, c, "SIGINT", SIGINT); 487 initConstant(env, c, "SIGIO", SIGIO); 488 initConstant(env, c, "SIGKILL", SIGKILL); 489 initConstant(env, c, "SIGPIPE", SIGPIPE); 490 initConstant(env, c, "SIGPROF", SIGPROF); 491 #if defined(SIGPWR) 492 initConstant(env, c, "SIGPWR", SIGPWR); 493 #endif 494 initConstant(env, c, "SIGQUIT", SIGQUIT); 495 #if defined(SIGRTMAX) 496 initConstant(env, c, "SIGRTMAX", SIGRTMAX); 497 #endif 498 #if defined(SIGRTMIN) 499 initConstant(env, c, "SIGRTMIN", SIGRTMIN); 500 #endif 501 initConstant(env, c, "SIGSEGV", SIGSEGV); 502 #if defined(SIGSTKFLT) 503 initConstant(env, c, "SIGSTKFLT", SIGSTKFLT); 504 #endif 505 initConstant(env, c, "SIGSTOP", SIGSTOP); 506 initConstant(env, c, "SIGSYS", SIGSYS); 507 initConstant(env, c, "SIGTERM", SIGTERM); 508 initConstant(env, c, "SIGTRAP", SIGTRAP); 509 initConstant(env, c, "SIGTSTP", SIGTSTP); 510 initConstant(env, c, "SIGTTIN", SIGTTIN); 511 initConstant(env, c, "SIGTTOU", SIGTTOU); 512 initConstant(env, c, "SIGURG", SIGURG); 513 initConstant(env, c, "SIGUSR1", SIGUSR1); 514 initConstant(env, c, "SIGUSR2", SIGUSR2); 515 initConstant(env, c, "SIGVTALRM", SIGVTALRM); 516 initConstant(env, c, "SIGWINCH", SIGWINCH); 517 initConstant(env, c, "SIGXCPU", SIGXCPU); 518 initConstant(env, c, "SIGXFSZ", SIGXFSZ); 519 initConstant(env, c, "SIOCGIFADDR", SIOCGIFADDR); 520 initConstant(env, c, "SIOCGIFBRDADDR", SIOCGIFBRDADDR); 521 initConstant(env, c, "SIOCGIFDSTADDR", SIOCGIFDSTADDR); 522 initConstant(env, c, "SIOCGIFNETMASK", SIOCGIFNETMASK); 523 initConstant(env, c, "SOCK_CLOEXEC", SOCK_CLOEXEC); 524 initConstant(env, c, "SOCK_DGRAM", SOCK_DGRAM); 525 initConstant(env, c, "SOCK_NONBLOCK", SOCK_NONBLOCK); 526 initConstant(env, c, "SOCK_RAW", SOCK_RAW); 527 initConstant(env, c, "SOCK_SEQPACKET", SOCK_SEQPACKET); 528 initConstant(env, c, "SOCK_STREAM", SOCK_STREAM); 529 initConstant(env, c, "SOL_SOCKET", SOL_SOCKET); 530 #if defined(SOL_UDP) 531 initConstant(env, c, "SOL_UDP", SOL_UDP); 532 #endif 533 #if defined(SO_BINDTODEVICE) 534 initConstant(env, c, "SO_BINDTODEVICE", SO_BINDTODEVICE); 535 #endif 536 initConstant(env, c, "SO_BROADCAST", SO_BROADCAST); 537 initConstant(env, c, "SO_DEBUG", SO_DEBUG); 538 #if defined(SO_DOMAIN) 539 initConstant(env, c, "SO_DOMAIN", SO_DOMAIN); 540 #endif 541 initConstant(env, c, "SO_DONTROUTE", SO_DONTROUTE); 542 initConstant(env, c, "SO_ERROR", SO_ERROR); 543 initConstant(env, c, "SO_KEEPALIVE", SO_KEEPALIVE); 544 initConstant(env, c, "SO_LINGER", SO_LINGER); 545 initConstant(env, c, "SO_OOBINLINE", SO_OOBINLINE); 546 #if defined(SO_PASSCRED) 547 initConstant(env, c, "SO_PASSCRED", SO_PASSCRED); 548 #endif 549 #if defined(SO_PEERCRED) 550 initConstant(env, c, "SO_PEERCRED", SO_PEERCRED); 551 #endif 552 #if defined(SO_PROTOCOL) 553 initConstant(env, c, "SO_PROTOCOL", SO_PROTOCOL); 554 #endif 555 initConstant(env, c, "SO_RCVBUF", SO_RCVBUF); 556 initConstant(env, c, "SO_RCVLOWAT", SO_RCVLOWAT); 557 initConstant(env, c, "SO_RCVTIMEO", SO_RCVTIMEO); 558 initConstant(env, c, "SO_REUSEADDR", SO_REUSEADDR); 559 initConstant(env, c, "SO_SNDBUF", SO_SNDBUF); 560 initConstant(env, c, "SO_SNDLOWAT", SO_SNDLOWAT); 561 initConstant(env, c, "SO_SNDTIMEO", SO_SNDTIMEO); 562 initConstant(env, c, "SO_TYPE", SO_TYPE); 563 initConstant(env, c, "SPLICE_F_MOVE", SPLICE_F_MOVE); 564 initConstant(env, c, "SPLICE_F_NONBLOCK", SPLICE_F_NONBLOCK); 565 initConstant(env, c, "SPLICE_F_MORE", SPLICE_F_MORE); 566 initConstant(env, c, "STDERR_FILENO", STDERR_FILENO); 567 initConstant(env, c, "STDIN_FILENO", STDIN_FILENO); 568 initConstant(env, c, "STDOUT_FILENO", STDOUT_FILENO); 569 initConstant(env, c, "ST_MANDLOCK", ST_MANDLOCK); 570 initConstant(env, c, "ST_NOATIME", ST_NOATIME); 571 initConstant(env, c, "ST_NODEV", ST_NODEV); 572 initConstant(env, c, "ST_NODIRATIME", ST_NODIRATIME); 573 initConstant(env, c, "ST_NOEXEC", ST_NOEXEC); 574 initConstant(env, c, "ST_NOSUID", ST_NOSUID); 575 initConstant(env, c, "ST_RDONLY", ST_RDONLY); 576 initConstant(env, c, "ST_RELATIME", ST_RELATIME); 577 initConstant(env, c, "ST_SYNCHRONOUS", ST_SYNCHRONOUS); 578 initConstant(env, c, "S_IFBLK", S_IFBLK); 579 initConstant(env, c, "S_IFCHR", S_IFCHR); 580 initConstant(env, c, "S_IFDIR", S_IFDIR); 581 initConstant(env, c, "S_IFIFO", S_IFIFO); 582 initConstant(env, c, "S_IFLNK", S_IFLNK); 583 initConstant(env, c, "S_IFMT", S_IFMT); 584 initConstant(env, c, "S_IFREG", S_IFREG); 585 initConstant(env, c, "S_IFSOCK", S_IFSOCK); 586 initConstant(env, c, "S_IRGRP", S_IRGRP); 587 initConstant(env, c, "S_IROTH", S_IROTH); 588 initConstant(env, c, "S_IRUSR", S_IRUSR); 589 initConstant(env, c, "S_IRWXG", S_IRWXG); 590 initConstant(env, c, "S_IRWXO", S_IRWXO); 591 initConstant(env, c, "S_IRWXU", S_IRWXU); 592 initConstant(env, c, "S_ISGID", S_ISGID); 593 initConstant(env, c, "S_ISUID", S_ISUID); 594 initConstant(env, c, "S_ISVTX", S_ISVTX); 595 initConstant(env, c, "S_IWGRP", S_IWGRP); 596 initConstant(env, c, "S_IWOTH", S_IWOTH); 597 initConstant(env, c, "S_IWUSR", S_IWUSR); 598 initConstant(env, c, "S_IXGRP", S_IXGRP); 599 initConstant(env, c, "S_IXOTH", S_IXOTH); 600 initConstant(env, c, "S_IXUSR", S_IXUSR); 601 initConstant(env, c, "TCP_NODELAY", TCP_NODELAY); 602 #if defined(TCP_USER_TIMEOUT) 603 initConstant(env, c, "TCP_USER_TIMEOUT", TCP_USER_TIMEOUT); 604 #endif 605 initConstant(env, c, "TIOCOUTQ", TIOCOUTQ); 606 initConstant(env, c, "UDP_ENCAP", UDP_ENCAP); 607 initConstant(env, c, "UDP_ENCAP_ESPINUDP_NON_IKE", UDP_ENCAP_ESPINUDP_NON_IKE); 608 initConstant(env, c, "UDP_ENCAP_ESPINUDP", UDP_ENCAP_ESPINUDP); 609 #if defined(UDP_GRO) 610 initConstant(env, c, "UDP_GRO", UDP_GRO); 611 #endif 612 #if defined(UDP_SEGMENT) 613 initConstant(env, c, "UDP_SEGMENT", UDP_SEGMENT); 614 #endif 615 // UNIX_PATH_MAX is mentioned in some versions of unix(7), but not actually declared. 616 initConstant(env, c, "UNIX_PATH_MAX", sizeof(sockaddr_un::sun_path)); 617 initConstant(env, c, "WCONTINUED", WCONTINUED); 618 initConstant(env, c, "WEXITED", WEXITED); 619 initConstant(env, c, "WNOHANG", WNOHANG); 620 initConstant(env, c, "WNOWAIT", WNOWAIT); 621 initConstant(env, c, "WSTOPPED", WSTOPPED); 622 initConstant(env, c, "WUNTRACED", WUNTRACED); 623 initConstant(env, c, "W_OK", W_OK); 624 initConstant(env, c, "XATTR_CREATE", XATTR_CREATE); 625 initConstant(env, c, "XATTR_REPLACE", XATTR_REPLACE); 626 initConstant(env, c, "X_OK", X_OK); 627 initConstant(env, c, "_SC_2_CHAR_TERM", _SC_2_CHAR_TERM); 628 initConstant(env, c, "_SC_2_C_BIND", _SC_2_C_BIND); 629 initConstant(env, c, "_SC_2_C_DEV", _SC_2_C_DEV); 630 #if defined(_SC_2_C_VERSION) 631 initConstant(env, c, "_SC_2_C_VERSION", _SC_2_C_VERSION); 632 #endif 633 initConstant(env, c, "_SC_2_FORT_DEV", _SC_2_FORT_DEV); 634 initConstant(env, c, "_SC_2_FORT_RUN", _SC_2_FORT_RUN); 635 initConstant(env, c, "_SC_2_LOCALEDEF", _SC_2_LOCALEDEF); 636 initConstant(env, c, "_SC_2_SW_DEV", _SC_2_SW_DEV); 637 initConstant(env, c, "_SC_2_UPE", _SC_2_UPE); 638 initConstant(env, c, "_SC_2_VERSION", _SC_2_VERSION); 639 initConstant(env, c, "_SC_AIO_LISTIO_MAX", _SC_AIO_LISTIO_MAX); 640 initConstant(env, c, "_SC_AIO_MAX", _SC_AIO_MAX); 641 initConstant(env, c, "_SC_AIO_PRIO_DELTA_MAX", _SC_AIO_PRIO_DELTA_MAX); 642 initConstant(env, c, "_SC_ARG_MAX", _SC_ARG_MAX); 643 initConstant(env, c, "_SC_ASYNCHRONOUS_IO", _SC_ASYNCHRONOUS_IO); 644 initConstant(env, c, "_SC_ATEXIT_MAX", _SC_ATEXIT_MAX); 645 #if defined(_SC_AVPHYS_PAGES) 646 initConstant(env, c, "_SC_AVPHYS_PAGES", _SC_AVPHYS_PAGES); 647 #endif 648 initConstant(env, c, "_SC_BC_BASE_MAX", _SC_BC_BASE_MAX); 649 initConstant(env, c, "_SC_BC_DIM_MAX", _SC_BC_DIM_MAX); 650 initConstant(env, c, "_SC_BC_SCALE_MAX", _SC_BC_SCALE_MAX); 651 initConstant(env, c, "_SC_BC_STRING_MAX", _SC_BC_STRING_MAX); 652 initConstant(env, c, "_SC_CHILD_MAX", _SC_CHILD_MAX); 653 initConstant(env, c, "_SC_CLK_TCK", _SC_CLK_TCK); 654 initConstant(env, c, "_SC_COLL_WEIGHTS_MAX", _SC_COLL_WEIGHTS_MAX); 655 initConstant(env, c, "_SC_DELAYTIMER_MAX", _SC_DELAYTIMER_MAX); 656 initConstant(env, c, "_SC_EXPR_NEST_MAX", _SC_EXPR_NEST_MAX); 657 initConstant(env, c, "_SC_FSYNC", _SC_FSYNC); 658 initConstant(env, c, "_SC_GETGR_R_SIZE_MAX", _SC_GETGR_R_SIZE_MAX); 659 initConstant(env, c, "_SC_GETPW_R_SIZE_MAX", _SC_GETPW_R_SIZE_MAX); 660 initConstant(env, c, "_SC_IOV_MAX", _SC_IOV_MAX); 661 initConstant(env, c, "_SC_JOB_CONTROL", _SC_JOB_CONTROL); 662 initConstant(env, c, "_SC_LINE_MAX", _SC_LINE_MAX); 663 initConstant(env, c, "_SC_LOGIN_NAME_MAX", _SC_LOGIN_NAME_MAX); 664 initConstant(env, c, "_SC_MAPPED_FILES", _SC_MAPPED_FILES); 665 initConstant(env, c, "_SC_MEMLOCK", _SC_MEMLOCK); 666 initConstant(env, c, "_SC_MEMLOCK_RANGE", _SC_MEMLOCK_RANGE); 667 initConstant(env, c, "_SC_MEMORY_PROTECTION", _SC_MEMORY_PROTECTION); 668 initConstant(env, c, "_SC_MESSAGE_PASSING", _SC_MESSAGE_PASSING); 669 initConstant(env, c, "_SC_MQ_OPEN_MAX", _SC_MQ_OPEN_MAX); 670 initConstant(env, c, "_SC_MQ_PRIO_MAX", _SC_MQ_PRIO_MAX); 671 initConstant(env, c, "_SC_NGROUPS_MAX", _SC_NGROUPS_MAX); 672 initConstant(env, c, "_SC_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF); 673 initConstant(env, c, "_SC_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN); 674 initConstant(env, c, "_SC_OPEN_MAX", _SC_OPEN_MAX); 675 initConstant(env, c, "_SC_PAGESIZE", _SC_PAGESIZE); 676 initConstant(env, c, "_SC_PAGE_SIZE", _SC_PAGE_SIZE); 677 initConstant(env, c, "_SC_PASS_MAX", _SC_PASS_MAX); 678 #if defined(_SC_PHYS_PAGES) 679 initConstant(env, c, "_SC_PHYS_PAGES", _SC_PHYS_PAGES); 680 #endif 681 initConstant(env, c, "_SC_PRIORITIZED_IO", _SC_PRIORITIZED_IO); 682 initConstant(env, c, "_SC_PRIORITY_SCHEDULING", _SC_PRIORITY_SCHEDULING); 683 initConstant(env, c, "_SC_REALTIME_SIGNALS", _SC_REALTIME_SIGNALS); 684 initConstant(env, c, "_SC_RE_DUP_MAX", _SC_RE_DUP_MAX); 685 initConstant(env, c, "_SC_RTSIG_MAX", _SC_RTSIG_MAX); 686 initConstant(env, c, "_SC_SAVED_IDS", _SC_SAVED_IDS); 687 initConstant(env, c, "_SC_SEMAPHORES", _SC_SEMAPHORES); 688 initConstant(env, c, "_SC_SEM_NSEMS_MAX", _SC_SEM_NSEMS_MAX); 689 initConstant(env, c, "_SC_SEM_VALUE_MAX", _SC_SEM_VALUE_MAX); 690 initConstant(env, c, "_SC_SHARED_MEMORY_OBJECTS", _SC_SHARED_MEMORY_OBJECTS); 691 initConstant(env, c, "_SC_SIGQUEUE_MAX", _SC_SIGQUEUE_MAX); 692 initConstant(env, c, "_SC_STREAM_MAX", _SC_STREAM_MAX); 693 initConstant(env, c, "_SC_SYNCHRONIZED_IO", _SC_SYNCHRONIZED_IO); 694 initConstant(env, c, "_SC_THREADS", _SC_THREADS); 695 initConstant(env, c, "_SC_THREAD_ATTR_STACKADDR", _SC_THREAD_ATTR_STACKADDR); 696 initConstant(env, c, "_SC_THREAD_ATTR_STACKSIZE", _SC_THREAD_ATTR_STACKSIZE); 697 initConstant(env, c, "_SC_THREAD_DESTRUCTOR_ITERATIONS", _SC_THREAD_DESTRUCTOR_ITERATIONS); 698 initConstant(env, c, "_SC_THREAD_KEYS_MAX", _SC_THREAD_KEYS_MAX); 699 initConstant(env, c, "_SC_THREAD_PRIORITY_SCHEDULING", _SC_THREAD_PRIORITY_SCHEDULING); 700 initConstant(env, c, "_SC_THREAD_PRIO_INHERIT", _SC_THREAD_PRIO_INHERIT); 701 initConstant(env, c, "_SC_THREAD_PRIO_PROTECT", _SC_THREAD_PRIO_PROTECT); 702 initConstant(env, c, "_SC_THREAD_SAFE_FUNCTIONS", _SC_THREAD_SAFE_FUNCTIONS); 703 initConstant(env, c, "_SC_THREAD_STACK_MIN", _SC_THREAD_STACK_MIN); 704 initConstant(env, c, "_SC_THREAD_THREADS_MAX", _SC_THREAD_THREADS_MAX); 705 initConstant(env, c, "_SC_TIMERS", _SC_TIMERS); 706 initConstant(env, c, "_SC_TIMER_MAX", _SC_TIMER_MAX); 707 initConstant(env, c, "_SC_TTY_NAME_MAX", _SC_TTY_NAME_MAX); 708 initConstant(env, c, "_SC_TZNAME_MAX", _SC_TZNAME_MAX); 709 initConstant(env, c, "_SC_VERSION", _SC_VERSION); 710 initConstant(env, c, "_SC_XBS5_ILP32_OFF32", _SC_XBS5_ILP32_OFF32); 711 initConstant(env, c, "_SC_XBS5_ILP32_OFFBIG", _SC_XBS5_ILP32_OFFBIG); 712 initConstant(env, c, "_SC_XBS5_LP64_OFF64", _SC_XBS5_LP64_OFF64); 713 initConstant(env, c, "_SC_XBS5_LPBIG_OFFBIG", _SC_XBS5_LPBIG_OFFBIG); 714 initConstant(env, c, "_SC_XOPEN_CRYPT", _SC_XOPEN_CRYPT); 715 initConstant(env, c, "_SC_XOPEN_ENH_I18N", _SC_XOPEN_ENH_I18N); 716 initConstant(env, c, "_SC_XOPEN_LEGACY", _SC_XOPEN_LEGACY); 717 initConstant(env, c, "_SC_XOPEN_REALTIME", _SC_XOPEN_REALTIME); 718 initConstant(env, c, "_SC_XOPEN_REALTIME_THREADS", _SC_XOPEN_REALTIME_THREADS); 719 initConstant(env, c, "_SC_XOPEN_SHM", _SC_XOPEN_SHM); 720 initConstant(env, c, "_SC_XOPEN_UNIX", _SC_XOPEN_UNIX); 721 initConstant(env, c, "_SC_XOPEN_VERSION", _SC_XOPEN_VERSION); 722 initConstant(env, c, "_SC_XOPEN_XCU_VERSION", _SC_XOPEN_XCU_VERSION); 723 } 724 725 static JNINativeMethod gMethods[] = { 726 NATIVE_METHOD(OsConstants, initConstants, "()V"), 727 }; 728 void register_android_system_OsConstants(JNIEnv* env) { 729 jniRegisterNativeMethods(env, "android/system/OsConstants", gMethods, NELEM(gMethods)); 730 } 731