2 * Copyright (C) 1991 Gordon Irlam. All rights reserved.
6 * Definition of system calls for sparc trace generator.
11 * Imported declarations.
14 #include "system_calls.h"
18 * Table containing system calls, and their parameter profile.
21 call_desc system_calls
[] = {
22 /* 0 */ {"syscall", {fmt_dec
, fmt_unknown
}, fmt_dec
},
23 /* 1 */ {"_exit", {fmt_dec
}, fmt_none
},
24 /* 2 */ {"fork", {fmt_none
}, fmt_dec
},
25 /* 3 */ {"read", {fmt_fd
, fmt_post_data
, FMT_SIZE
}, fmt_post_data_size
},
26 /* 4 */ {"write", {fmt_fd
, fmt_data
, fmt_data_size
}, FMT_SIZE
},
27 /* 5 */ {"open", {fmt_string
, fmt_open_flags
, FMT_FLAGS
}, fmt_fd
},
28 /* 6 */ {"close", {fmt_fd
}, FMT_STATUS
},
29 /* 7 */ {"wait4", {fmt_dec
, fmt_ptr
, FMT_FLAGS
, fmt_ptr
}, fmt_dec
},
30 /* 8 */ {"creat", {fmt_string
, FMT_FLAGS
}, fmt_fd
},
31 /* 9 */ {"link", {fmt_string
, fmt_string
}, FMT_STATUS
},
32 /* 10 */ {"unlink", {fmt_string
}, FMT_STATUS
},
33 /* 11 */ {"_unknown_11[\"old execv\"]", {fmt_unknown
}, fmt_unknown
},
35 * execv is now a library routine which calls execve, although
36 * Sun have not officially declared execv obsolete.
38 /* 12 */ {"chdir", {fmt_string
}, FMT_STATUS
},
39 /* 13 */ {"_unknown_13[\"old time\"]", {fmt_unknown
}, fmt_unknown
},
40 /* 14 */ {"mknod", {fmt_string
, FMT_FLAGS
, FMT_FLAGS
}, FMT_STATUS
},
41 /* 15 */ {"chmod", {fmt_string
, FMT_FLAGS
}, FMT_STATUS
},
42 /* 16 */ {"chown", {fmt_string
, fmt_dec
, fmt_dec
}, FMT_STATUS
},
43 /* 17 */ {"_brk", {fmt_ptr
}, FMT_STATUS
},
44 /* 18 */ {"_unknown_18[\"old stat\"]", {fmt_unknown
}, fmt_unknown
},
45 /* 19 */ {"lseek", {fmt_fd
, FMT_SIZE
, fmt_dec
}, FMT_SIZE
},
46 /* 20 */ {"getpid", {fmt_none
}, fmt_dec
},
47 /* 21 */ {"_unknown_21", {fmt_unknown
}, fmt_unknown
},
48 /* 22 */ {"umount[\"System V\"]", {fmt_string
}, FMT_STATUS
},
49 /* 23 */ {"_unknown_23[\"old setuid\"]", {fmt_unknown
}, fmt_unknown
},
50 /* 24 */ {"getuid", {fmt_none
}, fmt_dec
},
51 /* 25 */ {"_unknown_25[\"old System V stime\"]",
55 {fmt_dec
, fmt_dec
, fmt_ptr
, fmt_dec
, fmt_ptr
},
57 /* 27 */ {"_unknown_27[\"old alarm\"]", {fmt_unknown
}, fmt_unknown
},
58 /* 28 */ {"_unknown_28[\"old fstat\"]", {fmt_unknown
}, fmt_unknown
},
59 /* 29 */ {"_unknown_29[\"old pause\"]", {fmt_unknown
}, fmt_unknown
},
60 /* 30 */ {"_unknown_30[\"old utime\"]", {fmt_unknown
}, fmt_unknown
},
61 /* 31 */ {"_unknown_31", {fmt_unknown
}, fmt_unknown
},
62 /* 32 */ {"_unknown_32", {fmt_unknown
}, fmt_unknown
},
63 /* 33 */ {"access", {fmt_string
, FMT_FLAGS
}, FMT_STATUS
},
64 /* 34 */ {"_unknown_34[\"old nice\"]", {fmt_unknown
}, fmt_unknown
},
65 /* 35 */ {"_unknown_35[\"old ftime\"]", {fmt_unknown
}, fmt_unknown
},
66 /* 36 */ {"sync", {fmt_none
}, fmt_none
},
67 /* 37 */ {"kill", {fmt_dec
, fmt_signal
}, FMT_STATUS
},
68 /* 38 */ {"stat", {fmt_string
, fmt_ptr
}, FMT_STATUS
},
69 /* 39 */ {"_unknown_39[\"old setpgrp\"]", {fmt_unknown
}, fmt_unknown
},
70 /* 40 */ {"lstat", {fmt_string
, fmt_ptr
}, FMT_STATUS
},
71 /* 41 */ {"dup", {fmt_fd
}, fmt_fd
},
73 * Sun sometimes claim dup has 2 parameters.
75 /* 42 */ {"pipe", {fmt_ptr
}, FMT_STATUS
},
76 /* 43 */ {"_unknown_43[\"old times\"]", {fmt_unknown
}, fmt_unknown
},
77 /* 44 */ {"profil", {fmt_ptr
, FMT_SIZE
, fmt_ptr
, fmt_dec
}, FMT_STATUS
},
78 /* 45 */ {"_unknown_45", {fmt_unknown
}, fmt_unknown
},
79 /* 46 */ {"_unknown_46[\"old setgid\"]", {fmt_unknown
}, fmt_unknown
},
80 /* 47 */ {"getgid", {fmt_none
}, fmt_dec
},
81 /* 48 */ {"_unknown_48[\"old signal\"]", {fmt_unknown
}, fmt_unknown
},
82 /* 49 */ {"_unknown_49", {fmt_unknown
}, fmt_unknown
},
83 /* 50 */ {"_unknown_50", {fmt_unknown
}, fmt_unknown
},
84 /* 51 */ {"acct", {fmt_string
}, FMT_STATUS
},
85 /* 52 */ {"_unknown_52", {fmt_unknown
}, fmt_unknown
},
86 /* 53 */ {"mctl", {fmt_ptr
, FMT_SIZE
, fmt_dec
, FMT_FLAGS
}, FMT_STATUS
},
87 /* 54 */ {"ioctl", {fmt_fd
, FMT_FLAGS
, fmt_ptr
}, fmt_dec
},
88 /* 55 */ {"reboot", {FMT_FLAGS
, fmt_string
}, FMT_STATUS
},
89 /* 56 */ {"_unknown_56[\"old wait3\"]", {fmt_unknown
}, fmt_unknown
},
90 /* 57 */ {"symlink", {fmt_string
, fmt_string
}, FMT_STATUS
},
92 {fmt_string
, fmt_post_data
, FMT_SIZE
},
95 {fmt_string
, fmt_string_array
, fmt_string_array
},
97 /* 60 */ {"umask", {FMT_FLAGS
}, FMT_FLAGS
},
98 /* 61 */ {"chroot", {fmt_string
}, FMT_STATUS
},
99 /* 62 */ {"fstat", {fmt_fd
, fmt_ptr
}, FMT_STATUS
},
100 /* 63 */ {"_unknown_63", {fmt_unknown
}, fmt_unknown
},
101 /* 64 */ {"getpagesize", {fmt_none
}, FMT_SIZE
},
102 /* 65 */ {"_unknown_65[\"old msync\"]", {fmt_unknown
}, fmt_unknown
},
104 * msync is now a library routine which calls mctl, although
105 * Sun have not officially declared msync obsolete.
107 /* 66 */ {"vfork", {fmt_none
}, fmt_dec
},
108 /* 67 */ {"_unknown_67[\"old vread\"]", {fmt_unknown
}, fmt_unknown
},
110 * I don't think vread can be generated by the standard
111 * libararies, although Sun have not officially declared it
114 /* 68 */ {"_unknown_68[\"old vwrite\"]", {fmt_unknown
}, fmt_unknown
},
116 * I don't think vwrite can be generated by the standard
117 * libararies, although Sun have not officially declared it
120 /* 69 */ {"_unknown_69[\"old brk\"]", {fmt_unknown
}, fmt_unknown
},
122 * Also referred to as sbrk. I don't think it can be generated
123 * by the standard libararies, although Sun have not officially
124 * declared it obsolete.
126 /* 70 */ {"_unknown_70[\"old sstk\"]", {fmt_unknown
}, fmt_unknown
},
128 * I don't think sstk can be generated by the standard
129 * libararies, although Sun have not officially declared it
133 {fmt_ptr
, fmt_post_data_size
, FMT_FLAGS
, FMT_FLAGS
, fmt_fd
,
136 /* 72 */ {"vadvise", {fmt_dec
}, FMT_STATUS
},
138 * vadvise is currently still a valid system call, although Sun
139 * have said it is likely to disappear in the future.
141 /* 73 */ {"munmap", {fmt_ptr
, FMT_SIZE
}, FMT_STATUS
},
142 /* 74 */ {"mprotect", {fmt_ptr
, FMT_SIZE
, FMT_FLAGS
}, FMT_STATUS
},
143 /* 75 */ {"_unknown_75[\"old madvise\"]", {fmt_unknown
}, fmt_unknown
},
145 * madvise is now a library routine which calls mctl, although
146 * Sun have not officially declared madvise obsolete.
148 /* 76 */ {"vhangup", {fmt_none
}, FMT_STATUS
},
150 * Sun sometimes claim vhangup has 1 parameter.
152 /* 77 */ {"_unknown_77[\"old vlimit\"]", {fmt_unknown
}, fmt_unknown
},
153 /* 78 */ {"mincore", {fmt_ptr
, FMT_SIZE
, fmt_ptr
}, FMT_STATUS
},
154 /* 79 */ {"getgroups", {fmt_dec
, fmt_ptr
}, fmt_dec
},
155 /* 80 */ {"setgroups", {fmt_dec
, fmt_ptr
}, FMT_STATUS
},
156 /* 81 */ {"getpgrp", {fmt_dec
}, fmt_dec
},
157 /* 82 */ {"setpgrp", {fmt_dec
, fmt_dec
}, FMT_STATUS
},
158 /* 83 */ {"setitimer", {fmt_dec
, fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
159 /* 84 */ {"_unknown_84[\"old wait\"]", {fmt_unknown
}, fmt_unknown
},
161 * wait is now a library routine which calls wait4, although Sun
162 * have not officially declared wait obsolete.
164 /* 85 */ {"swapon", {fmt_string
}, FMT_STATUS
},
165 /* 86 */ {"getitimer", {fmt_dec
, fmt_ptr
}, FMT_STATUS
},
166 /* 87 */ {"gethostname", {fmt_post_string
, FMT_SIZE
}, FMT_STATUS
},
167 /* 88 */ {"sethostname", {fmt_data
, fmt_data_size
}, FMT_STATUS
},
168 /* 89 */ {"getdtablesize", {fmt_none
}, fmt_dec
},
169 /* 90 */ {"dup2", {fmt_fd
, fmt_dec
}, fmt_fd
},
170 /* 91 */ {"_unknown_91[\"old getdopt\"]", {fmt_unknown
}, fmt_unknown
},
172 * I don't think getdopt can be generated by the standard
173 * libararies, although Sun have not officially declared it
176 /* 92 */ {"fcntl", {fmt_fd
, fmt_dec
, fmt_dec
}, fmt_dec
},
178 {fmt_dec
, fmt_ptr
, fmt_ptr
, fmt_ptr
, fmt_ptr
},
180 /* 94 */ {"_unknown_94[\"old setdopt\"]", {fmt_unknown
}, fmt_unknown
},
182 * I don't think setdopt can be generated by the standard
183 * libararies, although Sun have not officially declared it
186 /* 95 */ {"fsync", {fmt_fd
}, FMT_STATUS
},
187 /* 96 */ {"setpriority", {fmt_dec
, fmt_dec
, fmt_dec
}, FMT_STATUS
},
188 /* 97 */ {"socket", {fmt_dec
, fmt_dec
, fmt_dec
}, fmt_fd
},
189 /* 98 */ {"connect", {fmt_fd
, fmt_ptr
, FMT_SIZE
}, FMT_STATUS
},
190 /* 99 */ {"accept", {fmt_fd
, fmt_ptr
, fmt_ptr
}, fmt_fd
},
191 /* 100 */ {"getpriority", {fmt_dec
, fmt_dec
}, fmt_dec
},
192 /* 101 */ {"send", {fmt_fd
, fmt_data
, fmt_data_size
, FMT_FLAGS
}, FMT_SIZE
},
194 {fmt_fd
, fmt_post_data
, FMT_SIZE
, FMT_FLAGS
},
196 /* 103 */ {"_unknown_103", {fmt_unknown
}, fmt_unknown
},
197 /* 104 */ {"bind", {fmt_fd
, fmt_ptr
, FMT_SIZE
}, FMT_STATUS
},
198 /* 105 */ {"setsockopt",
199 {fmt_fd
, fmt_dec
, fmt_dec
, fmt_ptr
, FMT_SIZE
},
201 /* 106 */ {"listen", {fmt_fd
, fmt_dec
}, FMT_STATUS
},
202 /* 107 */ {"_unknown_107[\"old vtimes\"]", {fmt_unknown
}, fmt_unknown
},
203 /* 108 */ {"_sigvec", {fmt_signal
, fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
204 /* 109 */ {"sigblock", {fmt_hex
}, fmt_hex
},
205 /* 110 */ {"sigsetmask", {fmt_hex
}, fmt_hex
},
206 /* 111 */ {"sigpause", {fmt_hex
}, FMT_STATUS
},
207 /* 112 */ {"sigstack", {fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
208 /* 113 */ {"recvmsg", {fmt_fd
, fmt_ptr
, FMT_FLAGS
}, FMT_SIZE
},
209 /* 114 */ {"sendmsg", {fmt_fd
, fmt_ptr
, FMT_FLAGS
}, FMT_SIZE
},
210 /* 115 */ {"_unknown_115[\"vtrace\"]",
211 {fmt_dec
, fmt_hex
, fmt_hex
},
214 * I am unsure of the parameters for vtrace.
216 /* 116 */ {"gettimeofday", {fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
217 /* 117 */ {"getrusage", {fmt_dec
, fmt_ptr
}, FMT_STATUS
},
218 /* 118 */ {"getsockopt",
219 {fmt_fd
, fmt_dec
, fmt_dec
, fmt_ptr
, fmt_ptr
},
221 /* 119 */ {"_unknown_119", {fmt_unknown
}, fmt_unknown
},
222 /* 120 */ {"readv", {fmt_fd
, fmt_ptr
, fmt_dec
}, FMT_SIZE
},
223 /* 121 */ {"writev", {fmt_fd
, fmt_ptr
, fmt_dec
}, FMT_SIZE
},
224 /* 122 */ {"settimeofday", {fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
225 /* 123 */ {"fchown", {fmt_fd
, fmt_dec
, fmt_dec
}, FMT_STATUS
},
226 /* 124 */ {"fchmod", {fmt_fd
, FMT_FLAGS
}, FMT_STATUS
},
227 /* 125 */ {"recvfrom",
228 {fmt_fd
, fmt_post_data
, FMT_SIZE
, FMT_FLAGS
, fmt_ptr
, fmt_ptr
},
230 /* 126 */ {"setreuid", {fmt_dec
, fmt_dec
}, FMT_STATUS
},
231 /* 127 */ {"setregid", {fmt_dec
, fmt_dec
}, FMT_STATUS
},
232 /* 128 */ {"rename", {fmt_string
, fmt_string
}, FMT_STATUS
},
233 /* 129 */ {"truncate", {fmt_string
, FMT_SIZE
}, FMT_STATUS
},
234 /* 130 */ {"ftruncate", {fmt_fd
, FMT_SIZE
}, FMT_STATUS
},
235 /* 131 */ {"flock", {fmt_fd
, FMT_FLAGS
}, FMT_STATUS
},
236 /* 132 */ {"_unknown_132", {fmt_unknown
}, fmt_unknown
},
238 {fmt_fd
, fmt_data
, fmt_data_size
, FMT_FLAGS
, fmt_ptr
, FMT_SIZE
},
240 /* 134 */ {"shutdown", {fmt_fd
, fmt_dec
}, FMT_STATUS
},
241 /* 135 */ {"socketpair", {fmt_dec
, fmt_dec
, fmt_dec
, fmt_ptr
}, FMT_STATUS
},
243 * Sun sometimes claim socketpair has 5 parameters.
245 /* 136 */ {"mkdir", {fmt_string
, FMT_FLAGS
}, FMT_STATUS
},
246 /* 137 */ {"rmdir", {fmt_string
}, FMT_STATUS
},
247 /* 138 */ {"utimes", {fmt_string
, fmt_ptr
}, FMT_STATUS
},
248 /* 139 */ {"_sigcleanup", {fmt_ptr
}, FMT_STATUS
},
249 /* 140 */ {"adjtime", {fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
250 /* 141 */ {"getpeername", {fmt_fd
, fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
251 /* 142 */ {"gethostid", {fmt_none
}, fmt_hex
},
253 * Sun sometimes claim gethostid has 2 parameters.
255 /* 143 */ {"_unknown_143", {fmt_unknown
}, fmt_unknown
},
256 /* 144 */ {"getrlimit", {fmt_dec
, fmt_ptr
}, FMT_STATUS
},
257 /* 145 */ {"setrlimit", {fmt_dec
, fmt_ptr
}, FMT_STATUS
},
258 /* 146 */ {"killpg", {fmt_dec
, fmt_signal
}, FMT_STATUS
},
259 /* 147 */ {"_unknown_147", {fmt_unknown
}, fmt_unknown
},
260 /* 148 */ {"_unknown_148[\"old quota\"]", {fmt_unknown
}, fmt_unknown
},
262 * I don't think quota can be generated by the standard
263 * libararies, although Sun have not officially declared it
266 /* 149 */ {"_unknown_149[\"old qquota\"]", {fmt_unknown
}, fmt_unknown
},
268 * I don't think qquota can be generated by the standard
269 * libararies, although Sun have not officially declared it
272 /* 150 */ {"getsockname", {fmt_fd
, fmt_ptr
, fmt_ptr
}, FMT_STATUS
},
273 /* 151 */ {"getmsg", {fmt_fd
, fmt_ptr
, fmt_ptr
, fmt_ptr
}, fmt_dec
},
274 /* 152 */ {"putmsg", {fmt_fd
, fmt_ptr
, fmt_ptr
, FMT_FLAGS
}, FMT_STATUS
},
275 /* 153 */ {"poll", {fmt_ptr
, fmt_dec
, fmt_dec
}, fmt_dec
},
276 /* 154 */ {"_unknown_154", {fmt_unknown
}, fmt_unknown
},
277 /* 155 */ {"nfssvc", {fmt_fd
}, FMT_STATUS
},
278 /* 156 */ {"_unknown_156[\"old getdirentries\"]",
282 * I don't think getdirentries can be generated by the standard
283 * libararies, although Sun have not officially declared it
286 /* 157 */ {"statfs", {fmt_string
, fmt_ptr
}, FMT_STATUS
},
287 /* 158 */ {"fstatfs", {fmt_fd
, fmt_ptr
}, FMT_STATUS
},
288 /* 159 */ {"unmount", {fmt_string
}, FMT_STATUS
},
289 /* 160 */ {"async_daemon", {fmt_none
}, fmt_none
},
290 /* 161 */ {"nfs_getfh", {fmt_hex
, fmt_hex
}, fmt_unknown
},
292 * I am unsure of the parameters for nfs_getfh.
294 /* 162 */ {"getdomainname", {fmt_post_string
, FMT_SIZE
}, FMT_STATUS
},
295 /* 163 */ {"setdomainname", {fmt_data
, fmt_data_size
}, FMT_STATUS
},
296 /* 164 */ {"rtschedule",
297 {fmt_hex
, fmt_hex
, fmt_hex
, fmt_hex
, fmt_hex
},
300 * I am unsure of the parameters for rtschedule.
302 /* 165 */ {"quotactl",
303 {fmt_dec
, fmt_string
, fmt_dec
, fmt_ptr
},
305 /* 166 */ {"_exportfs", {fmt_string
, fmt_ptr
}, FMT_STATUS
},
307 {fmt_string
, fmt_string
, FMT_FLAGS
, fmt_ptr
},
309 /* 168 */ {"ustat", {fmt_hex
, fmt_ptr
}, FMT_STATUS
},
310 /* 169 */ {"_semsys",
311 {fmt_dec
, fmt_hex
, fmt_hex
, fmt_hex
, fmt_hex
},
313 /* 170 */ {"_msgsys",
314 {fmt_dec
, fmt_hex
, fmt_hex
, fmt_hex
, fmt_hex
, fmt_hex
},
316 /* 171 */ {"_shmsys", {fmt_dec
, fmt_hex
, fmt_hex
, fmt_hex
}, fmt_dec
},
317 /* 172 */ {"_auditsys", {fmt_dec
, fmt_hex
, fmt_hex
, fmt_hex
}, fmt_dec
},
318 /* 173 */ {"_rfssys",
319 {fmt_dec
, fmt_hex
, fmt_hex
, fmt_hex
, fmt_hex
},
321 /* 174 */ {"getdents",
322 {fmt_fd
, fmt_post_data
, FMT_SIZE
},
324 /* 175 */ {"_setsid", {fmt_dec
}, fmt_dec
},
325 /* 176 */ {"fchdir", {fmt_fd
}, FMT_STATUS
},
326 /* 177 */ {"fchroot", {fmt_fd
}, FMT_STATUS
},
327 /* 178 */ {"vpixsys", {fmt_hex
, fmt_hex
}, fmt_unknown
},
329 * I am unsure of the parameters for vpixsys.
331 /* 179 */ {"aioread",
332 {fmt_fd
, fmt_ptr
, FMT_SIZE
, FMT_SIZE
, fmt_dec
, fmt_ptr
},
334 /* 180 */ {"aiowrite",
335 {fmt_fd
, fmt_data
, fmt_data_size
, FMT_SIZE
, fmt_dec
, fmt_ptr
},
337 /* 181 */ {"aiowait", {fmt_ptr
}, fmt_ptr
},
338 /* 182 */ {"aiocancel", {fmt_ptr
}, FMT_STATUS
},
339 /* 183 */ {"sigpending", {fmt_ptr
}, FMT_STATUS
},
340 /* 184 */ {"_unknown_184", {fmt_unknown
}, fmt_unknown
},
341 /* 185 */ {"setpgid", {fmt_dec
, fmt_dec
}, FMT_STATUS
},
342 /* 186 */ {"_pathconf", {fmt_string
, fmt_dec
}, fmt_dec
},
343 /* 187 */ {"fpathconf", {fmt_fd
, fmt_dec
}, fmt_dec
},
344 /* 188 */ {"sysconf", {fmt_dec
}, fmt_dec
},
345 /* 189 */ {"uname", {fmt_ptr
}, FMT_STATUS
}
347 * Next 8 system calls are for loadable system calls. Not declared since
348 * they are likely to change from one O/S release to the next.
352 int no_system_calls
= sizeof(system_calls
) / sizeof(call_desc
);
354 call_desc system_call_open_simple
=
355 /* 5 */ {"open", {fmt_string
, fmt_open_flags
}, fmt_fd
};
359 * Table containing signal names.
362 char *signal_names
[] = {
389 /* 26 */ "SIGVTALRM",
397 int no_signal_names
= sizeof(signal_names
) / sizeof(char *);
401 * Table containing error messages.
404 char *error_names
[] = {
440 /* 35 */ "EWOULDBLOCK",
441 /* 36 */ "EINPROGRESS",
444 /* 39 */ "EDESTADDRREQ",
446 /* 41 */ "EPROTOTYPE",
447 /* 42 */ "ENOPROTOOPT",
448 /* 43 */ "EPROTONOSUPPORT",
449 /* 44 */ "ESOCKTNOSUPPORT",
450 /* 45 */ "EOPNOTSUPP",
451 /* 46 */ "EPFNOSUPPORT",
452 /* 47 */ "EAFNOSUPPORT",
453 /* 48 */ "EADDRINUSE",
454 /* 49 */ "EADDRNOTAVAIL",
456 /* 51 */ "ENETUNREACH",
457 /* 52 */ "ENETRESET",
458 /* 53 */ "ECONNABORTED",
459 /* 54 */ "ECONNRESET",
463 /* 58 */ "ESHUTDOWN",
464 /* 59 */ "ETOOMANYREFS",
465 /* 60 */ "ETIMEDOUT",
466 /* 61 */ "ECONNREFUSED",
468 /* 63 */ "ENAMETOOLONG",
469 /* 64 */ "EHOSTDOWN",
470 /* 65 */ "EHOSTUNREACH",
471 /* 66 */ "ENOTEMPTY",
492 /* 87 */ "EMULTIHOP",
498 int no_error_names
= sizeof(error_names
) / sizeof(char *);