OsConstants.java revision b974666d79ebc392b37ec1ae83aae57ae6331c08
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
17package libcore.io;
18
19public final class OsConstants {
20    private OsConstants() { }
21
22    public static boolean S_ISBLK(int mode) { return (mode & S_IFMT) == S_IFBLK; }
23    public static boolean S_ISCHR(int mode) { return (mode & S_IFMT) == S_IFCHR; }
24    public static boolean S_ISDIR(int mode) { return (mode & S_IFMT) == S_IFDIR; }
25    public static boolean S_ISFIFO(int mode) { return (mode & S_IFMT) == S_IFIFO; }
26    public static boolean S_ISREG(int mode) { return (mode & S_IFMT) == S_IFREG; }
27    public static boolean S_ISLNK(int mode) { return (mode & S_IFMT) == S_IFLNK; }
28    public static boolean S_ISSOCK(int mode) { return (mode & S_IFMT) == S_IFSOCK; }
29
30    public static int WEXITSTATUS(int status) { return (status & 0xff00) >> 8; }
31    public static boolean WCOREDUMP(int status) { return (status & 0x80) != 0; }
32    public static int WTERMSIG(int status) { return status & 0x7f; }
33    public static int WSTOPSIG(int status) { return WEXITSTATUS(status); }
34    public static boolean WIFEXITED(int status) { return (WTERMSIG(status) == 0); }
35    public static boolean WIFSTOPPED(int status) { return (WTERMSIG(status) == 0x7f); }
36    public static boolean WIFSIGNALED(int status) { return (WTERMSIG(status + 1) >= 2); }
37
38    public static final int AF_INET = placeholder();
39    public static final int AF_INET6 = placeholder();
40    public static final int AF_UNIX = placeholder();
41    public static final int AF_UNSPEC = placeholder();
42    public static final int E2BIG = placeholder();
43    public static final int EACCES = placeholder();
44    public static final int EADDRINUSE = placeholder();
45    public static final int EADDRNOTAVAIL = placeholder();
46    public static final int EAFNOSUPPORT = placeholder();
47    public static final int EAGAIN = placeholder();
48    public static final int EALREADY = placeholder();
49    public static final int EBADF = placeholder();
50    public static final int EBADMSG = placeholder();
51    public static final int EBUSY = placeholder();
52    public static final int ECANCELED = placeholder();
53    public static final int ECHILD = placeholder();
54    public static final int ECONNABORTED = placeholder();
55    public static final int ECONNREFUSED = placeholder();
56    public static final int ECONNRESET = placeholder();
57    public static final int EDEADLK = placeholder();
58    public static final int EDESTADDRREQ = placeholder();
59    public static final int EDOM = placeholder();
60    public static final int EDQUOT = placeholder();
61    public static final int EEXIST = placeholder();
62    public static final int EFAULT = placeholder();
63    public static final int EFBIG = placeholder();
64    public static final int EHOSTUNREACH = placeholder();
65    public static final int EIDRM = placeholder();
66    public static final int EILSEQ = placeholder();
67    public static final int EINPROGRESS = placeholder();
68    public static final int EINTR = placeholder();
69    public static final int EINVAL = placeholder();
70    public static final int EIO = placeholder();
71    public static final int EISCONN = placeholder();
72    public static final int EISDIR = placeholder();
73    public static final int ELOOP = placeholder();
74    public static final int EMFILE = placeholder();
75    public static final int EMLINK = placeholder();
76    public static final int EMSGSIZE = placeholder();
77    public static final int EMULTIHOP = placeholder();
78    public static final int ENAMETOOLONG = placeholder();
79    public static final int ENETDOWN = placeholder();
80    public static final int ENETRESET = placeholder();
81    public static final int ENETUNREACH = placeholder();
82    public static final int ENFILE = placeholder();
83    public static final int ENOBUFS = placeholder();
84    public static final int ENODATA = placeholder();
85    public static final int ENODEV = placeholder();
86    public static final int ENOENT = placeholder();
87    public static final int ENOEXEC = placeholder();
88    public static final int ENOLCK = placeholder();
89    public static final int ENOLINK = placeholder();
90    public static final int ENOMEM = placeholder();
91    public static final int ENOMSG = placeholder();
92    public static final int ENOPROTOOPT = placeholder();
93    public static final int ENOSPC = placeholder();
94    public static final int ENOSR = placeholder();
95    public static final int ENOSTR = placeholder();
96    public static final int ENOSYS = placeholder();
97    public static final int ENOTCONN = placeholder();
98    public static final int ENOTDIR = placeholder();
99    public static final int ENOTEMPTY = placeholder();
100    public static final int ENOTSOCK = placeholder();
101    public static final int ENOTSUP = placeholder();
102    public static final int ENOTTY = placeholder();
103    public static final int ENXIO = placeholder();
104    public static final int EOPNOTSUPP = placeholder();
105    public static final int EOVERFLOW = placeholder();
106    public static final int EPERM = placeholder();
107    public static final int EPIPE = placeholder();
108    public static final int EPROTO = placeholder();
109    public static final int EPROTONOSUPPORT = placeholder();
110    public static final int EPROTOTYPE = placeholder();
111    public static final int ERANGE = placeholder();
112    public static final int EROFS = placeholder();
113    public static final int ESPIPE = placeholder();
114    public static final int ESRCH = placeholder();
115    public static final int ESTALE = placeholder();
116    public static final int ETIME = placeholder();
117    public static final int ETIMEDOUT = placeholder();
118    public static final int ETXTBSY = placeholder();
119    public static final int EWOULDBLOCK = placeholder();
120    public static final int EXDEV = placeholder();
121    public static final int EXIT_FAILURE = placeholder();
122    public static final int EXIT_SUCCESS = placeholder();
123    public static final int FD_CLOEXEC = placeholder();
124    public static final int FIONREAD = placeholder();
125    public static final int F_DUPFD = placeholder();
126    public static final int F_GETFD = placeholder();
127    public static final int F_GETFL = placeholder();
128    public static final int F_GETLK = placeholder();
129    public static final int F_GETLK64 = placeholder();
130    public static final int F_GETOWN = placeholder();
131    public static final int F_OK = placeholder();
132    public static final int F_RDLCK = placeholder();
133    public static final int F_SETFD = placeholder();
134    public static final int F_SETFL = placeholder();
135    public static final int F_SETLK = placeholder();
136    public static final int F_SETLK64 = placeholder();
137    public static final int F_SETLKW = placeholder();
138    public static final int F_SETLKW64 = placeholder();
139    public static final int F_SETOWN = placeholder();
140    public static final int F_UNLCK = placeholder();
141    public static final int F_WRLCK = placeholder();
142    public static final int IPPROTO_ICMP = placeholder();
143    public static final int IPPROTO_IP = placeholder();
144    public static final int IPPROTO_IPV6 = placeholder();
145    public static final int IPPROTO_RAW = placeholder();
146    public static final int IPPROTO_TCP = placeholder();
147    public static final int IPPROTO_UDP = placeholder();
148    public static final int IPV6_CHECKSUM = placeholder();
149    public static final int IPV6_MULTICAST_HOPS = placeholder();
150    public static final int IPV6_MULTICAST_IF = placeholder();
151    public static final int IPV6_MULTICAST_LOOP = placeholder();
152    public static final int IPV6_RECVDSTOPTS = placeholder();
153    public static final int IPV6_RECVHOPLIMIT = placeholder();
154    public static final int IPV6_RECVHOPOPTS = placeholder();
155    public static final int IPV6_RECVPKTINFO = placeholder();
156    public static final int IPV6_RECVRTHDR = placeholder();
157    public static final int IPV6_RECVTCLASS = placeholder();
158    public static final int IPV6_TCLASS = placeholder();
159    public static final int IPV6_UNICAST_HOPS = placeholder();
160    public static final int IPV6_V6ONLY = placeholder();
161    public static final int IP_MULTICAST_IF = placeholder();
162    public static final int IP_MULTICAST_LOOP = placeholder();
163    public static final int IP_MULTICAST_TTL = placeholder();
164    public static final int IP_TOS = placeholder();
165    public static final int IP_TTL = placeholder();
166    public static final int MAP_FIXED = placeholder();
167    public static final int MAP_PRIVATE = placeholder();
168    public static final int MAP_SHARED = placeholder();
169    public static final int MCAST_JOIN_GROUP = placeholder();
170    public static final int MCAST_LEAVE_GROUP = placeholder();
171    public static final int MCL_CURRENT = placeholder();
172    public static final int MCL_FUTURE = placeholder();
173    public static final int MSG_CTRUNC = placeholder();
174    public static final int MSG_DONTROUTE = placeholder();
175    public static final int MSG_EOR = placeholder();
176    public static final int MSG_OOB = placeholder();
177    public static final int MSG_PEEK = placeholder();
178    public static final int MSG_TRUNC = placeholder();
179    public static final int MSG_WAITALL = placeholder();
180    public static final int MS_ASYNC = placeholder();
181    public static final int MS_INVALIDATE = placeholder();
182    public static final int MS_SYNC = placeholder();
183    public static final int O_ACCMODE = placeholder();
184    public static final int O_APPEND = placeholder();
185    public static final int O_CREAT = placeholder();
186    public static final int O_EXCL = placeholder();
187    public static final int O_NOCTTY = placeholder();
188    public static final int O_NONBLOCK = placeholder();
189    public static final int O_RDONLY = placeholder();
190    public static final int O_RDWR = placeholder();
191    public static final int O_SYNC = placeholder();
192    public static final int O_TRUNC = placeholder();
193    public static final int O_WRONLY = placeholder();
194    public static final int PROT_EXEC = placeholder();
195    public static final int PROT_NONE = placeholder();
196    public static final int PROT_READ = placeholder();
197    public static final int PROT_WRITE = placeholder();
198    public static final int R_OK = placeholder();
199    public static final int SEEK_CUR = placeholder();
200    public static final int SEEK_END = placeholder();
201    public static final int SEEK_SET = placeholder();
202    public static final int SHUT_RD = placeholder();
203    public static final int SHUT_RDWR = placeholder();
204    public static final int SHUT_WR = placeholder();
205    public static final int SOCK_DGRAM = placeholder();
206    public static final int SOCK_RAW = placeholder();
207    public static final int SOCK_SEQPACKET = placeholder();
208    public static final int SOCK_STREAM = placeholder();
209    public static final int SOL_SOCKET = placeholder();
210    public static final int SO_BINDTODEVICE = placeholder();
211    public static final int SO_BROADCAST = placeholder();
212    public static final int SO_DEBUG = placeholder();
213    public static final int SO_DONTROUTE = placeholder();
214    public static final int SO_ERROR = placeholder();
215    public static final int SO_KEEPALIVE = placeholder();
216    public static final int SO_LINGER = placeholder();
217    public static final int SO_OOBINLINE = placeholder();
218    public static final int SO_RCVBUF = placeholder();
219    public static final int SO_RCVLOWAT = placeholder();
220    public static final int SO_RCVTIMEO = placeholder();
221    public static final int SO_REUSEADDR = placeholder();
222    public static final int SO_SNDBUF = placeholder();
223    public static final int SO_SNDLOWAT = placeholder();
224    public static final int SO_SNDTIMEO = placeholder();
225    public static final int SO_TYPE = placeholder();
226    public static final int STDERR_FILENO = placeholder();
227    public static final int STDIN_FILENO = placeholder();
228    public static final int STDOUT_FILENO = placeholder();
229    public static final int S_IFBLK = placeholder();
230    public static final int S_IFCHR = placeholder();
231    public static final int S_IFDIR = placeholder();
232    public static final int S_IFIFO = placeholder();
233    public static final int S_IFLNK = placeholder();
234    public static final int S_IFMT = placeholder();
235    public static final int S_IFREG = placeholder();
236    public static final int S_IFSOCK = placeholder();
237    public static final int S_IRGRP = placeholder();
238    public static final int S_IROTH = placeholder();
239    public static final int S_IRUSR = placeholder();
240    public static final int S_IRWXG = placeholder();
241    public static final int S_IRWXO = placeholder();
242    public static final int S_IRWXU = placeholder();
243    public static final int S_ISGID = placeholder();
244    public static final int S_ISUID = placeholder();
245    public static final int S_ISVTX = placeholder();
246    public static final int S_IWGRP = placeholder();
247    public static final int S_IWOTH = placeholder();
248    public static final int S_IWUSR = placeholder();
249    public static final int S_IXGRP = placeholder();
250    public static final int S_IXOTH = placeholder();
251    public static final int S_IXUSR = placeholder();
252    public static final int TCP_NODELAY = placeholder();
253    public static final int WCONTINUED = placeholder();
254    public static final int WEXITED = placeholder();
255    public static final int WNOHANG = placeholder();
256    public static final int WNOWAIT = placeholder();
257    public static final int WSTOPPED = placeholder();
258    public static final int WUNTRACED = placeholder();
259    public static final int W_OK = placeholder();
260    public static final int X_OK = placeholder();
261    public static final int _SC_2_CHAR_TERM = placeholder();
262    public static final int _SC_2_C_BIND = placeholder();
263    public static final int _SC_2_C_DEV = placeholder();
264    public static final int _SC_2_C_VERSION = placeholder();
265    public static final int _SC_2_FORT_DEV = placeholder();
266    public static final int _SC_2_FORT_RUN = placeholder();
267    public static final int _SC_2_LOCALEDEF = placeholder();
268    public static final int _SC_2_SW_DEV = placeholder();
269    public static final int _SC_2_UPE = placeholder();
270    public static final int _SC_2_VERSION = placeholder();
271    public static final int _SC_AIO_LISTIO_MAX = placeholder();
272    public static final int _SC_AIO_MAX = placeholder();
273    public static final int _SC_AIO_PRIO_DELTA_MAX = placeholder();
274    public static final int _SC_ARG_MAX = placeholder();
275    public static final int _SC_ASYNCHRONOUS_IO = placeholder();
276    public static final int _SC_ATEXIT_MAX = placeholder();
277    public static final int _SC_AVPHYS_PAGES = placeholder();
278    public static final int _SC_BC_BASE_MAX = placeholder();
279    public static final int _SC_BC_DIM_MAX = placeholder();
280    public static final int _SC_BC_SCALE_MAX = placeholder();
281    public static final int _SC_BC_STRING_MAX = placeholder();
282    public static final int _SC_CHILD_MAX = placeholder();
283    public static final int _SC_CLK_TCK = placeholder();
284    public static final int _SC_COLL_WEIGHTS_MAX = placeholder();
285    public static final int _SC_DELAYTIMER_MAX = placeholder();
286    public static final int _SC_EXPR_NEST_MAX = placeholder();
287    public static final int _SC_FSYNC = placeholder();
288    public static final int _SC_GETGR_R_SIZE_MAX = placeholder();
289    public static final int _SC_GETPW_R_SIZE_MAX = placeholder();
290    public static final int _SC_IOV_MAX = placeholder();
291    public static final int _SC_JOB_CONTROL = placeholder();
292    public static final int _SC_LINE_MAX = placeholder();
293    public static final int _SC_LOGIN_NAME_MAX = placeholder();
294    public static final int _SC_MAPPED_FILES = placeholder();
295    public static final int _SC_MEMLOCK = placeholder();
296    public static final int _SC_MEMLOCK_RANGE = placeholder();
297    public static final int _SC_MEMORY_PROTECTION = placeholder();
298    public static final int _SC_MESSAGE_PASSING = placeholder();
299    public static final int _SC_MQ_OPEN_MAX = placeholder();
300    public static final int _SC_MQ_PRIO_MAX = placeholder();
301    public static final int _SC_NGROUPS_MAX = placeholder();
302    public static final int _SC_NPROCESSORS_CONF = placeholder();
303    public static final int _SC_NPROCESSORS_ONLN = placeholder();
304    public static final int _SC_OPEN_MAX = placeholder();
305    public static final int _SC_PAGESIZE = placeholder();
306    public static final int _SC_PAGE_SIZE = placeholder();
307    public static final int _SC_PASS_MAX = placeholder();
308    public static final int _SC_PHYS_PAGES = placeholder();
309    public static final int _SC_PRIORITIZED_IO = placeholder();
310    public static final int _SC_PRIORITY_SCHEDULING = placeholder();
311    public static final int _SC_REALTIME_SIGNALS = placeholder();
312    public static final int _SC_RE_DUP_MAX = placeholder();
313    public static final int _SC_RTSIG_MAX = placeholder();
314    public static final int _SC_SAVED_IDS = placeholder();
315    public static final int _SC_SEMAPHORES = placeholder();
316    public static final int _SC_SEM_NSEMS_MAX = placeholder();
317    public static final int _SC_SEM_VALUE_MAX = placeholder();
318    public static final int _SC_SHARED_MEMORY_OBJECTS = placeholder();
319    public static final int _SC_SIGQUEUE_MAX = placeholder();
320    public static final int _SC_STREAM_MAX = placeholder();
321    public static final int _SC_SYNCHRONIZED_IO = placeholder();
322    public static final int _SC_THREADS = placeholder();
323    public static final int _SC_THREAD_ATTR_STACKADDR = placeholder();
324    public static final int _SC_THREAD_ATTR_STACKSIZE = placeholder();
325    public static final int _SC_THREAD_DESTRUCTOR_ITERATIONS = placeholder();
326    public static final int _SC_THREAD_KEYS_MAX = placeholder();
327    public static final int _SC_THREAD_PRIORITY_SCHEDULING = placeholder();
328    public static final int _SC_THREAD_PRIO_INHERIT = placeholder();
329    public static final int _SC_THREAD_PRIO_PROTECT = placeholder();
330    public static final int _SC_THREAD_SAFE_FUNCTIONS = placeholder();
331    public static final int _SC_THREAD_STACK_MIN = placeholder();
332    public static final int _SC_THREAD_THREADS_MAX = placeholder();
333    public static final int _SC_TIMERS = placeholder();
334    public static final int _SC_TIMER_MAX = placeholder();
335    public static final int _SC_TTY_NAME_MAX = placeholder();
336    public static final int _SC_TZNAME_MAX = placeholder();
337    public static final int _SC_VERSION = placeholder();
338    public static final int _SC_XBS5_ILP32_OFF32 = placeholder();
339    public static final int _SC_XBS5_ILP32_OFFBIG = placeholder();
340    public static final int _SC_XBS5_LP64_OFF64 = placeholder();
341    public static final int _SC_XBS5_LPBIG_OFFBIG = placeholder();
342    public static final int _SC_XOPEN_CRYPT = placeholder();
343    public static final int _SC_XOPEN_ENH_I18N = placeholder();
344    public static final int _SC_XOPEN_LEGACY = placeholder();
345    public static final int _SC_XOPEN_REALTIME = placeholder();
346    public static final int _SC_XOPEN_REALTIME_THREADS = placeholder();
347    public static final int _SC_XOPEN_SHM = placeholder();
348    public static final int _SC_XOPEN_UNIX = placeholder();
349    public static final int _SC_XOPEN_VERSION = placeholder();
350    public static final int _SC_XOPEN_XCU_VERSION = placeholder();
351
352    public static String errnoName(int errno) {
353        if (errno == E2BIG) {
354            return "E2BIG";
355        }
356        if (errno == EACCES) {
357            return "EACCES";
358        }
359        if (errno == EADDRINUSE) {
360            return "EADDRINUSE";
361        }
362        if (errno == EADDRNOTAVAIL) {
363            return "EADDRNOTAVAIL";
364        }
365        if (errno == EAFNOSUPPORT) {
366            return "EAFNOSUPPORT";
367        }
368        if (errno == EAGAIN) {
369            return "EAGAIN";
370        }
371        if (errno == EALREADY) {
372            return "EALREADY";
373        }
374        if (errno == EBADF) {
375            return "EBADF";
376        }
377        if (errno == EBADMSG) {
378            return "EBADMSG";
379        }
380        if (errno == EBUSY) {
381            return "EBUSY";
382        }
383        if (errno == ECANCELED) {
384            return "ECANCELED";
385        }
386        if (errno == ECHILD) {
387            return "ECHILD";
388        }
389        if (errno == ECONNABORTED) {
390            return "ECONNABORTED";
391        }
392        if (errno == ECONNREFUSED) {
393            return "ECONNREFUSED";
394        }
395        if (errno == ECONNRESET) {
396            return "ECONNRESET";
397        }
398        if (errno == EDEADLK) {
399            return "EDEADLK";
400        }
401        if (errno == EDESTADDRREQ) {
402            return "EDESTADDRREQ";
403        }
404        if (errno == EDOM) {
405            return "EDOM";
406        }
407        if (errno == EDQUOT) {
408            return "EDQUOT";
409        }
410        if (errno == EEXIST) {
411            return "EEXIST";
412        }
413        if (errno == EFAULT) {
414            return "EFAULT";
415        }
416        if (errno == EFBIG) {
417            return "EFBIG";
418        }
419        if (errno == EHOSTUNREACH) {
420            return "EHOSTUNREACH";
421        }
422        if (errno == EIDRM) {
423            return "EIDRM";
424        }
425        if (errno == EILSEQ) {
426            return "EILSEQ";
427        }
428        if (errno == EINPROGRESS) {
429            return "EINPROGRESS";
430        }
431        if (errno == EINTR) {
432            return "EINTR";
433        }
434        if (errno == EINVAL) {
435            return "EINVAL";
436        }
437        if (errno == EIO) {
438            return "EIO";
439        }
440        if (errno == EISCONN) {
441            return "EISCONN";
442        }
443        if (errno == EISDIR) {
444            return "EISDIR";
445        }
446        if (errno == ELOOP) {
447            return "ELOOP";
448        }
449        if (errno == EMFILE) {
450            return "EMFILE";
451        }
452        if (errno == EMLINK) {
453            return "EMLINK";
454        }
455        if (errno == EMSGSIZE) {
456            return "EMSGSIZE";
457        }
458        if (errno == EMULTIHOP) {
459            return "EMULTIHOP";
460        }
461        if (errno == ENAMETOOLONG) {
462            return "ENAMETOOLONG";
463        }
464        if (errno == ENETDOWN) {
465            return "ENETDOWN";
466        }
467        if (errno == ENETRESET) {
468            return "ENETRESET";
469        }
470        if (errno == ENETUNREACH) {
471            return "ENETUNREACH";
472        }
473        if (errno == ENFILE) {
474            return "ENFILE";
475        }
476        if (errno == ENOBUFS) {
477            return "ENOBUFS";
478        }
479        if (errno == ENODATA) {
480            return "ENODATA";
481        }
482        if (errno == ENODEV) {
483            return "ENODEV";
484        }
485        if (errno == ENOENT) {
486            return "ENOENT";
487        }
488        if (errno == ENOEXEC) {
489            return "ENOEXEC";
490        }
491        if (errno == ENOLCK) {
492            return "ENOLCK";
493        }
494        if (errno == ENOLINK) {
495            return "ENOLINK";
496        }
497        if (errno == ENOMEM) {
498            return "ENOMEM";
499        }
500        if (errno == ENOMSG) {
501            return "ENOMSG";
502        }
503        if (errno == ENOPROTOOPT) {
504            return "ENOPROTOOPT";
505        }
506        if (errno == ENOSPC) {
507            return "ENOSPC";
508        }
509        if (errno == ENOSR) {
510            return "ENOSR";
511        }
512        if (errno == ENOSTR) {
513            return "ENOSTR";
514        }
515        if (errno == ENOSYS) {
516            return "ENOSYS";
517        }
518        if (errno == ENOTCONN) {
519            return "ENOTCONN";
520        }
521        if (errno == ENOTDIR) {
522            return "ENOTDIR";
523        }
524        if (errno == ENOTEMPTY) {
525            return "ENOTEMPTY";
526        }
527        if (errno == ENOTSOCK) {
528            return "ENOTSOCK";
529        }
530        if (errno == ENOTSUP) {
531            return "ENOTSUP";
532        }
533        if (errno == ENOTTY) {
534            return "ENOTTY";
535        }
536        if (errno == ENXIO) {
537            return "ENXIO";
538        }
539        if (errno == EOPNOTSUPP) {
540            return "EOPNOTSUPP";
541        }
542        if (errno == EOVERFLOW) {
543            return "EOVERFLOW";
544        }
545        if (errno == EPERM) {
546            return "EPERM";
547        }
548        if (errno == EPIPE) {
549            return "EPIPE";
550        }
551        if (errno == EPROTO) {
552            return "EPROTO";
553        }
554        if (errno == EPROTONOSUPPORT) {
555            return "EPROTONOSUPPORT";
556        }
557        if (errno == EPROTOTYPE) {
558            return "EPROTOTYPE";
559        }
560        if (errno == ERANGE) {
561            return "ERANGE";
562        }
563        if (errno == EROFS) {
564            return "EROFS";
565        }
566        if (errno == ESPIPE) {
567            return "ESPIPE";
568        }
569        if (errno == ESRCH) {
570            return "ESRCH";
571        }
572        if (errno == ESTALE) {
573            return "ESTALE";
574        }
575        if (errno == ETIME) {
576            return "ETIME";
577        }
578        if (errno == ETIMEDOUT) {
579            return "ETIMEDOUT";
580        }
581        if (errno == ETXTBSY) {
582            return "ETXTBSY";
583        }
584        if (errno == EWOULDBLOCK) {
585            return "EWOULDBLOCK";
586        }
587        if (errno == EXDEV) {
588            return "EXDEV";
589        }
590        return null;
591    }
592
593    private static native void initConstants();
594
595    // A hack to avoid these constants being inlined by javac...
596    private static int placeholder() { return 0; }
597    // ...because we want to initialize them at runtime.
598    static {
599        initConstants();
600    }
601}
602