3 ;;; This isn't really lisp, but it's definitely a source file.
5 ;;; first, the headers necessary to find definitions of everything
11 "sys/socket.h" "sys/un.h" "netinet/in.h" "netinet/in_systm.h"
12 "netinet/ip.h" "net/if.h" "netdb.h" "errno.h" "netinet/tcp.h"
13 "fcntl.h" "sys/mman.h"
18 ;;; then the stuff we're looking for
19 ((:integer af-inet "AF_INET" "IP Protocol family")
27 (:type nlink-t "nlink_t")
28 (:type time-t "time_t")
32 (:integer SIGHUP "SIGHUP" #+sb-doc "terminal line hangup.")
33 (:integer SIGINT "SIGINT" #+sb-doc "interrupt program.")
34 (:integer SIGQUIT "SIGQUIT" #+sb-doc "quit program.")
35 (:integer SIGILL "SIGILL" #+sb-doc "illegal instruction.")
36 (:integer SIGTRAP "SIGTRAP" #+sb-doc "trace trap.")
37 (:integer SIGABRT "SIGABRT" #+sb-doc "abort program (formerly SIGIOT).")
38 (:integer SIGEMT "SIGEMT" #+sb-doc "emulate instruction executed.")
39 (:integer SIGFPE "SIGFPE" #+sb-doc "floating-point exception.")
40 (:integer SIGKILL "SIGKILL" #+sb-doc "kill program.")
41 (:integer SIGBUS "SIGBUS" #+sb-doc "bus error.")
42 (:integer SIGSEGV "SIGSEGV" #+sb-doc "segmentation violation.")
43 (:integer SIGSYS "SIGSYS" #+sb-doc "non-existent system call invoked.")
44 (:integer SIGPIPE "SIGPIPE" #+sb-doc "write on a pipe with no reader.")
45 (:integer SIGALRM "SIGALRM" #+sb-doc "real-time timer expired.")
46 (:integer SIGTERM "SIGTERM" #+sb-doc "software termination signal.")
47 (:integer SIGURG "SIGURG" #+sb-doc "urgent condition present on socket.")
48 (:integer SIGSTOP "SIGSTOP" #+sb-doc "stop (cannot be caught or ignored).")
49 (:integer SIGTSTP "SIGTSTP" #+sb-doc "stop signal generated from keyboard.")
50 (:integer SIGCONT "SIGCONT" #+sb-doc "continue after stop.")
51 (:integer SIGCHLD "SIGCHLD" #+sb-doc "child status has changed.")
52 (:integer SIGTTIN "SIGTTIN"
53 #+sb-doc "background read attempted from control terminal.")
54 (:integer SIGTTOU "SIGTTOU"
55 #+sb-doc "background write attempted to control terminal.")
56 (:integer SIGIO "SIGIO"
57 #+sb-doc "I/O is possible on a descriptor (see fcntl(2)).")
58 (:integer SIGXCPU "SIGXCPU"
59 #+sb-doc "cpu time limit exceeded (see setrlimit(2)).")
60 (:integer SIGXFSZ "SIGXFSZ"
61 #+sb-doc "file size limit exceeded (see setrlimit(2)).")
62 (:integer SIGVTALRM "SIGVTALRM"
63 #+sb-doc "virtual time alarm (see setitimer(2)).")
64 (:integer SIGPROF "SIGPROF"
65 #+sb-doc "profiling timer alarm (see setitimer(2)).")
66 (:integer SIGWINCH "SIGWINCH" #+sb-doc "Window size change.")
67 (:integer SIGINFO "SIGINFO" #+sb-doc "status request from keyboard.")
68 (:integer SIGUSR1 "SIGUSR1" #+sb-doc "User defined signal 1.")
69 (:integer SIGUSR2 "SIGUSR2" #+sb-doc "User defined signal 2.")
70 (:integer SIGRTMIN "SIGRTMIN" #+sb-doc "Smallest real-time signal number.")
71 (:integer SIGRTMAX "SIGRTMAX" #+sb-doc "Largest real-time signal number.")
74 (:integer eperm "EPERM")
75 (:integer enoent "ENOENT")
76 (:integer esrch "ESRCH")
77 (:integer eintr "EINTR")
79 (:integer enxio "ENXIO")
80 (:integer e2big "E2BIG")
81 (:integer enoexec "ENOEXEC")
82 (:integer ebadf "EBADF")
83 (:integer echild "ECHILD")
84 (:integer eagain "EAGAIN")
85 (:integer enomem "ENOMEM")
86 (:integer eacces "EACCES")
87 (:integer efault "EFAULT")
88 (:integer enotblk "ENOTBLK")
89 (:integer ebusy "EBUSY")
90 (:integer eexist "EEXIST")
91 (:integer exdev "EXDEV")
92 (:integer enodev "ENODEV")
93 (:integer enotdir "ENOTDIR")
94 (:integer eisdir "EISDIR")
95 (:integer einval "EINVAL")
96 (:integer enfile "ENFILE")
97 (:integer emfile "EMFILE")
98 (:integer enotty "ENOTTY")
99 (:integer etxtbsy "ETXTBSY")
100 (:integer efbig "EFBIG")
101 (:integer enospc "ENOSPC")
102 (:integer espipe "ESPIPE")
103 (:integer erofs "EROFS")
104 (:integer emlink "EMLINK")
105 (:integer epipe "EPIPE")
106 (:integer edom "EDOM")
107 (:integer erange "ERANGE")
108 (:integer edeadlk "EDEADLK")
109 (:integer enametoolong "ENAMETOOLONG")
110 (:integer enolck "ENOLCK")
111 (:integer enosys "ENOSYS")
112 (:integer enotempty "ENOTEMPTY")
113 (:integer eloop "ELOOP")
114 (:integer ewouldblock "EWOULDBLOCK")
115 (:integer enomsg "ENOMSG")
116 (:integer eidrm "EIDRM")
117 (:integer echrng "ECHRNG")
118 (:integer el2nsync "EL2NSYNC")
119 (:integer el3hlt "EL3HLT")
120 (:integer el3rst "EL3RST")
121 (:integer elnrng "ELNRNG")
122 (:integer eunatch "EUNATCH")
123 (:integer enocsi "ENOCSI")
124 (:integer el2hlt "EL2HLT")
125 (:integer ebade "EBADE")
126 (:integer ebadr "EBADR")
127 (:integer exfull "EXFULL")
128 (:integer enoano "ENOANO")
129 (:integer ebadrqc "EBADRQC")
130 (:integer ebadslt "EBADSLT")
131 (:integer edeadlock "EDEADLOCK")
132 (:integer ebfont "EBFONT")
133 (:integer enostr "ENOSTR")
134 (:integer enodata "ENODATA")
135 (:integer etime "ETIME")
136 (:integer enosr "ENOSR")
137 (:integer enonet "ENONET")
138 (:integer enopkg "ENOPKG")
139 (:integer eremote "EREMOTE")
140 (:integer enolink "ENOLINK")
141 (:integer eadv "EADV")
142 (:integer esrmnt "ESRMNT")
143 (:integer ecomm "ECOMM")
144 (:integer eproto "EPROTO")
145 (:integer emultihop "EMULTIHOP")
146 (:integer edotdot "EDOTDOT")
147 (:integer ebadmsg "EBADMSG")
148 (:integer eoverflow "EOVERFLOW")
149 (:integer enotuniq "ENOTUNIQ")
150 (:integer ebadfd "EBADFD")
151 (:integer eremchg "EREMCHG")
152 (:integer elibacc "ELIBACC")
153 (:integer elibbad "ELIBBAD")
154 (:integer elibscn "ELIBSCN")
155 (:integer elibmax "ELIBMAX")
156 (:integer elibexec "ELIBEXEC")
157 (:integer eilseq "EILSEQ")
158 (:integer erestart "ERESTART")
159 (:integer estrpipe "ESTRPIPE")
160 (:integer eusers "EUSERS")
161 (:integer enotsock "ENOTSOCK")
162 (:integer edestaddrreq "EDESTADDRREQ")
163 (:integer emsgsize "EMSGSIZE")
164 (:integer eprototype "EPROTOTYPE")
165 (:integer enoprotoopt "ENOPROTOOPT")
166 (:integer eprotonosupport "EPROTONOSUPPORT")
167 (:integer esocktnosupport "ESOCKTNOSUPPORT")
168 (:integer eopnotsupp "EOPNOTSUPP")
169 (:integer epfnosupport "EPFNOSUPPORT")
170 (:integer eafnosupport "EAFNOSUPPORT")
171 (:integer eaddrinuse "EADDRINUSE")
172 (:integer eaddrnotavail "EADDRNOTAVAIL")
173 (:integer enetdown "ENETDOWN")
174 (:integer enetunreach "ENETUNREACH")
175 (:integer enetreset "ENETRESET")
176 (:integer econnaborted "ECONNABORTED")
177 (:integer econnreset "ECONNRESET")
178 (:integer enobufs "ENOBUFS")
179 (:integer eisconn "EISCONN")
180 (:integer enotconn "ENOTCONN")
181 (:integer eshutdown "ESHUTDOWN")
182 (:integer etoomanyrefs "ETOOMANYREFS")
183 (:integer etimedout "ETIMEDOUT")
184 (:integer econnrefused "ECONNREFUSED")
185 (:integer ehostdown "EHOSTDOWN")
186 (:integer ehostunreach "EHOSTUNREACH")
187 (:integer ealready "EALREADY")
188 (:integer einprogress "EINPROGRESS")
189 (:integer estale "ESTALE")
190 (:integer euclean "EUCLEAN")
191 (:integer enotnam "ENOTNAM")
192 (:integer enavail "ENAVAIL")
193 (:integer eremoteio "EREMOTEIO")
194 (:integer edquot "EDQUOT")
195 (:integer enomedium "ENOMEDIUM")
196 (:integer emediumtype "EMEDIUMTYPE")
199 (:type mode-t "mode_t")
200 (:integer s-isuid "S_ISUID")
201 (:integer s-isgid "S_ISGID")
202 (:integer s-isvtx "S_ISVTX")
203 (:integer s-irusr "S_IRUSR")
204 (:integer s-iwusr "S_IWUSR")
205 (:integer s-ixusr "S_IXUSR")
206 (:integer s-iread "S_IRUSR")
207 (:integer s-iwrite "S_IWUSR")
208 (:integer s-iexec "S_IXUSR")
209 (:integer s-irgrp "S_IRGRP")
210 (:integer s-iwgrp "S_IWGRP")
211 (:integer s-ixgrp "S_IXGRP")
212 (:integer s-iroth "S_IROTH")
213 (:integer s-iwoth "S_IWOTH")
214 (:integer s-ixoth "S_IXOTH")
217 (:integer r-ok "R_OK")
218 (:integer w-ok "W_OK")
219 (:integer x-ok "X_OK")
220 (:integer f-ok "F_OK")
223 (:type off-t "off_t")
224 (:integer prot-none "PROT_NONE" #+sb-doc "mmap: no protection")
225 (:integer prot-read "PROT_READ" #+sb-doc "mmap: read protection")
226 (:integer prot-write "PROT_WRITE" #+sb-doc "mmap: write protection")
227 (:integer prot-exec "PROT_EXEC" #+sb-doc "mmap: execute protection")
228 (:integer map-shared "MAP_SHARED" #+sb-doc "mmap: shared memory")
229 (:integer map-private "MAP_PRIVATE" #+sb-doc "mmap: private mapping")
230 (:integer map-fixed "MAP_FIXED" #+sb-doc "mmap: map at given location")
233 (:integer ms-async "MS_ASYNC" #+sb-doc "msync: return immediately")
234 (:integer ms-sync "MS_SYNC" #+sb-doc "msync: perform synchronous writes")
235 (:integer ms-invalidate "MS_INVALIDATE"
236 #+sb-doc "msync: invalidate all cached data")
241 (:c-string name "char *" "d_name"
242 :distrust-length #+sunos t #-sunos nil)))
246 (mode-t mode "mode_t" "st_mode")
247 (ino-t ino "ino_t" "st_ino")
248 (dev-t dev "dev_t" "st_dev")
249 (nlink-t nlink "nlink_t" "st_nlink")
250 (uid-t uid "uid_t" "st_uid")
251 (gid-t gid "gid_t" "st_gid")
252 (off-t size "off_t" "st_size")
253 (time-t atime "time_t" "st_atime")
254 (time-t mtime "time_t" "st_mtime")
255 (time-t ctime "time_t" "st_ctime")))
258 (:integer o-rdonly "O_RDONLY")
259 (:integer o-wronly "O_WRONLY")
260 (:integer o-rdwr "O_RDWR")
261 (:integer o-creat "O_CREAT")
262 (:integer o-excl "O_EXCL")
263 (:integer o-noctty "O_NOCTTY")
264 (:integer o-trunc "O_TRUNC")
265 (:integer o-append "O_APPEND")
266 (:integer o-nonblock "O_NONBLOCK")
267 (:integer o-ndelay "O_NDELAY")
268 (:integer o-sync "O_SYNC")
269 (:integer o-nofollow "O_NOFOLLOW")
270 (:integer o-directory "O_DIRECTORY")
271 (:integer o-direct "O_DIRECT")
272 (:integer o-async "O_ASYNC")
273 (:integer o-largefile "O_LARGEFILE") ; hmm...
274 (:integer o-dsync "O_DSYNC")
275 (:integer o-rsync "O_RSYNC")
278 (:integer seek-set "SEEK_SET")
279 (:integer seek-cur "SEEK_CUR")
280 (:integer seek-end "SEEK_END")
283 (:integer f-dupfd "F_DUPFD")
284 (:integer f-getfd "F_GETFD")
285 (:integer f-setfd "F_SETFD")
286 (:integer f-getfl "F_GETFL")
287 (:integer f-setfl "F_SETFL")
288 (:integer f-getlk "F_GETLK")
289 (:integer f-setlk "F_SETLK")
290 (:integer f-setlkw "F_SETLKW")
291 (:integer f-getown "F_GETOWN")
292 (:integer f-setown "F_SETOWN")
294 ;; tcgetattr(), tcsetattr()
296 (:type speed-t "speed_t")
297 (:type tcflag-t "tcflag_t")
298 (:integer nccs "NCCS")
302 (tcflag-t iflag "tcflag_t" "c_iflag")
303 (tcflag-t oflag "tcflag_t" "c_oflag")
304 (tcflag-t cflag "tcflag_t" "c_cflag")
305 (tcflag-t lflag "tcflag_t" "c_lflag")
306 ;; Uh, so what's the point of grovelling CC-T if I can't
307 ;; use it here? the c_cc field is an array of NCCS
308 ;; elements of type cc_t. FIXME
309 ((array (unsigned 8)) cc "cc_t" "c_cc")))
311 (:integer veof "VEOF")
312 (:integer veol "VEOL")
313 (:integer verase "VERASE")
314 (:integer vintr "VINTR")
315 (:integer vkill "VKILL")
316 (:integer vmin "VMIN")
317 (:integer vquit "VQUIT")
318 (:integer vstart "VSTART")
319 (:integer vstop "VSTOP")
320 (:integer vsusp "VSUSP")
321 (:integer vtime "VTIME")
323 (:integer brkint "BRKINT")
324 (:integer icrnl "ICRNL")
325 (:integer ignbrk "IGNBRK")
326 (:integer igncr "IGNCR")
327 (:integer ignpar "IGNPAR")
328 (:integer inlcr "INLCR")
329 (:integer inpck "INPCK")
330 (:integer istrip "ISTRIP")
331 #+xsi ; FIXME: an extension, apparently
332 (:integer ixany "IXANY")
333 (:integer ixoff "IXOFF")
334 (:integer ixon "IXON")
335 (:integer parmrk "PARMRK")
337 (:integer opost "OPOST")
339 (:integer onlcr "ONLCR")
340 (:integer ocrnl "OCRNL")
341 (:integer onlret "ONLRET")
342 (:integer ofill "OFILL")
343 (:integer nldly "NLDLY")
346 (:integer crdly "CRDLY")
351 (:integer tabdly "TABDLY")
352 (:integer tab0 "TAB0")
353 (:integer tab1 "TAB1")
354 (:integer tab2 "TAB2")
355 (:integer tab3 "TAB3")
356 (:integer bsdly "BSDLY")
359 (:integer vtdly "VTDLY")
362 (:integer ffdly "FFDLY")
369 (:integer b110 "B110")
370 (:integer b134 "B134")
371 (:integer b150 "B150")
372 (:integer b200 "B200")
373 (:integer b300 "B300")
374 (:integer b600 "B600")
375 (:integer b1200 "B1200")
376 (:integer b1800 "B1800")
377 (:integer b2400 "B2400")
378 (:integer b4800 "B4800")
379 (:integer b9600 "B9600")
380 (:integer b19200 "B19200")
381 (:integer b38400 "B38400")
383 (:integer csize "CSIZE")
388 (:integer cstopb "CSTOPB")
389 (:integer cread "CREAD")
390 (:integer parenb "PARENB")
391 (:integer parodd "PARODD")
392 (:integer hupcl "HUPCL")
393 (:integer clocal "CLOCAL")
395 (:integer echo "ECHO")
396 (:integer echoe "ECHOE")
397 (:integer echok "ECHOK")
398 (:integer echonl "ECHONL")
399 (:integer icanon "ICANON")
400 (:integer iexten "IEXTEN")
401 (:integer isig "ISIG")
402 (:integer noflsh "NOFLSH")
403 (:integer tostop "TOSTOP")
405 (:integer tcsanow "TCSANOW")
406 (:integer tcsadrain "TCSADRAIN")
407 (:integer tcsaflush "TCSAFLUSH")
409 (:integer tciflush "TCIFLUSH")
410 (:integer tcioflush "TCIOFLUSH")
411 (:integer tcoflush "TCOFLUSH")
412 (:integer tcioff "TCIOFF")
413 (:integer tcion "TCION")
414 (:integer tcooff "TCOOFF")
415 (:integer tcoon "TCOON")