Better names for some of the ICMP types
[iolib.git] / src / syscalls / pkgdcl.lisp
blob09e5f8678fcc81e6f202637c14c2eb282bb1f1ef
1 ;;;; -*- Mode: Lisp; indent-tabs-mode: nil -*-
2 ;;;
3 ;;; --- Package definition
4 ;;;
6 (in-package :common-lisp-user)
8 (defpackage :iolib.syscalls
9 (:nicknames #:isys)
10 (:use :iolib.base :cffi)
11 (:shadow #:open #:close #:read #:write #:listen
12 #:truncate #:ftruncate #:time)
13 ;; Specials
14 (:export
15 #:*environ*)
16 ;; Simple POSIX Types
17 (:export
18 #:bool
19 #:size-t
20 #:ssize-t
21 #:intptr-t
22 #:uintptr-t
23 #:pid-t
24 #:gid-t
25 #:uid-t
26 #:off-t
27 #:mode-t
28 #:time-t
29 #:useconds-t
30 #:suseconds-t
31 #:dev-t
32 #:ino-t
33 #:nlink-t
34 #:blksize-t
35 #:blkcnt-t
36 #:nfds-t
37 #:rlim-t
38 #:id-t
39 #:clockid-t)
41 ;;-----------------------------------------
42 ;; Error conditions, wrappers and definers
43 ;;-----------------------------------------
44 (:export
46 #:iolib-condition #:iolib-error #:syscall-error
47 #:code-of #:identifier-of #:message-of #:handle-of #:handle2-of
48 #:make-syscall-error #:syscall-error-p #:get-syscall-error-condition
49 #:signal-syscall-error #:signal-syscall-error/restart
50 #:poll-error #:event-type-of #:poll-timeout
52 ;; Syscall return wrapper
53 #:syscall-wrapper
54 #:error-predicate-of
55 #:error-location-of
56 #:return-filter-of
57 #:error-generator-of
58 #:syscall-restart-p
59 #:base-type-of
60 #:never-fails
61 #:signal-syscall-error
62 #:signal-syscall-error-kw
63 #:signal-syscall-error/restart
65 ;; Syscall definers
66 #:defentrypoint
67 #:defcfun*
68 #:defsyscall
70 ;; CFFI Type Designators
71 #:pointer-or-nil
72 #:pointer-or-nil-designator
73 #:bool
74 #:bool-designator
76 ;; SSTRING <-> CSTRING
77 #:+cstring-path-max+
78 #:cstring-to-sstring
79 #:sstring-to-cstring
80 #:with-cstring-to-sstring
81 #:with-sstring-to-cstring
83 ;; Misc
84 #:repeat-upon-condition
85 #:repeat-upon-eintr
86 #:repeat-decreasing-timeout
87 #:repeat-upon-condition-decreasing-timeout)
89 ;;--------------------------------
90 ;; Structs, slots and C constants
91 ;;--------------------------------
92 (:export ;; errno.h
93 #:errno-values
94 #:e2big #:eacces #:eaddrinuse #:eaddrnotavail
95 #:eafnosupport #:ealready #:ebadf #:ebadmsg #:ebusy #:ecanceled
96 #:echild #:econnaborted #:econnrefused #:econnreset #:edeadlk
97 #:edestaddrreq #:edom #:edquot #:eexist #:efault #:efbig #:ehostdown
98 #:ehostunreach #:eidrm #:eilseq #:einprogress #:eintr #:einval #:eio
99 #:eisconn #:eisdir #:eloop #:emfile #:emlink #:emsgsize #:emultihop
100 #:enametoolong #:enetdown #:enetreset #:enetunreach #:enfile
101 #:enobufs #:enodata #:enodev #:enoent #:enoexec #:enolck #:enolink
102 #:enomem #:enomsg #:enonet #:enoprotoopt #:enospc #:enosr #:enostr
103 #:enosys #:enotconn #:enotdir #:enotempty #:enotsock #:enotsup #:enotty
104 #:enxio #:eopnotsupp #:eoverflow #:eperm #:epipe #:eproto
105 #:eprotonosupport #:eprototype #:erange #:erofs #:eshutdown #:espipe
106 #:esrch #:estale #:etime #:etimedout #:etxtbsy #:ewouldblock #:exdev
107 #:ebug)
108 (:export ;; fcntl.h
109 ;; Open()
110 #:o-rdonly
111 #:o-wronly
112 #:o-rdwr
113 #:o-creat
114 #:o-excl
115 #:o-trunc
116 #:o-append
117 #:o-noctty
118 #:o-nonblock
119 #:o-ndelay
120 #:o-sync
121 #:o-nofollow
122 #:o-async
123 #:o-cloexec
124 ;; Fcntl()
125 #:f-dupfd
126 #:f-getfd
127 #:f-setfd
128 #:f-getfl
129 #:f-setfl
130 #:f-getlk
131 #:f-setlk
132 #:f-setlkw
133 #:f-getown
134 #:f-setown
135 #:f-rdlck
136 #:f-wrlck
137 #:f-unlck
138 #+linux #:f-getsig
139 #+linux #:f-setsig
140 #+linux #:f-setlease
141 #+linux #:f-getlease)
142 (:export ;; unistd.h
143 ;; Lseek()
144 #:seek-set
145 #:seek-cur
146 #:seek-end
147 ;; Access()
148 #:r-ok
149 #:w-ok
150 #:x-ok
151 #:f-ok)
152 (:export ;; time.h
153 ;; struct timespec
154 #:timespec
155 #:sec #:nsec
156 ;; Clock_gettime() et al.
157 #:clock-realtime
158 #:clock-monotonic)
159 (:export ;; sys/stat.h
160 #:path-max
161 ;; struct stat
162 #:stat
163 #:dev #:stat-dev
164 #:ino #:stat-ino
165 #:mode #:stat-mode
166 #:nlink #:stat-nlink
167 #:uid #:stat-uid
168 #:gid #:stat-gid
169 #:rdev #:stat-rdev
170 #:size #:stat-size
171 #:blksize #:stat-blksize
172 #:blocks #:stat-blocks
173 #:atime #:stat-atime
174 #:mtime #:stat-mtime
175 #:ctime #:stat-ctime
176 ;; Stat()
177 #:s-irwxu
178 #:s-irusr
179 #:s-iwusr
180 #:s-ixusr
181 #:s-ifmt
182 #:s-ififo
183 #:s-ifchr
184 #:s-ifdir
185 #:s-ifblk
186 #:s-ifreg
187 #:s-ifwht
188 #:s-iread
189 #:s-iwrite
190 #:s-iexec
191 #:s-irwxg
192 #:s-irgrp
193 #:s-iwgrp
194 #:s-ixgrp
195 #:s-irwxo
196 #:s-iroth
197 #:s-iwoth
198 #:s-ixoth
199 #:s-isuid
200 #:s-isgid
201 #:s-isvtx
202 #:s-iflnk
203 #:s-ifsock)
204 (:export ;; sys/ioctl.h
205 #:fionbio
206 #:fionread)
207 (:export ;; sys/wait.h
208 ;; Waitpid()
209 #:wnohang
210 #:wuntraced
211 #:wcontinued)
212 (:export ;; signal.h
213 ;; Kill()
214 #:signal
215 #:sighup
216 #:sigint
217 #:sigquit
218 #:sigill
219 #:sigabrt
220 #:sigfpe
221 #:sigkill
222 #:sigsegv
223 #:sigpipe
224 #:sigalrm
225 #:sigterm
226 #:sigusr1
227 #:sigusr2
228 #:sigchld
229 #:sigcont
230 #:sigstop
231 #:sigtstp
232 #:sigttin
233 #:sigttou
234 #:sigbus
235 #:sigpoll
236 #:sigprof
237 #:sigsys
238 #:sigtrap
239 #:sigurg
240 #:sigvtalrm
241 #:sigxcpu
242 #:sigxfsz
243 #:sigemt
244 #:sigio
245 #:sigcld
246 #:sigpwr
247 #:siginfo
248 #:siglost
249 #:sigwinch
250 #:sig-ign
251 #:sig-dfl
252 ;; struct sigaction
253 #:sigaction
254 #:handler
255 ;; Sigaction()
256 #:sig-ign
257 #:sig-dfl
258 #:sa-nocldstop
259 #:sa-nocldwait
260 #:sa-nodefer
261 #:sa-onstack
262 #:sa-resethand
263 #:sa-restart
264 #:sa-siginfo)
265 (:export ;; sys/mman.h
266 ;; Mmap()
267 #:prot-none
268 #:prot-read
269 #:prot-write
270 #:prot-exec
271 #:map-shared
272 #:map-private
273 #:map-fixed
274 #:map-failed)
275 (:export ;; sys/select.h
276 ;; fd_set
277 #:fd-set
278 #:fd-setsize
279 ;; struct timeval
280 #:timeval
281 #:sec #:usec)
282 (:export ;; sys/poll.h
283 ;; struct pollfd
284 #:pollfd
285 #:fd #:events #:revents
286 ;; Poll()
287 #:pollin
288 #:pollrdnorm
289 #:pollrdband
290 #:pollpri
291 #:pollout
292 #:pollwrnorm
293 #:pollwrband
294 #:pollerr
295 #:pollrdhup
296 #:pollhup
297 #:pollnval)
298 (:export ;; dirent.h
299 ;; struct dirent
300 #:dirent
301 #:fileno #:type #:name
302 ;; Readdir()
303 #:dt-unknown
304 #:dt-fifo
305 #:dt-chr
306 #:dt-dir
307 #:dt-blk
308 #:dt-reg
309 #:dt-lnk
310 #:dt-sock
311 #:dt-wht)
312 (:export ;; sys/resource.h
313 ;; struct rlimit
314 #:rlimit
315 #:cur #:max
316 ;; struct rusage
317 #:rusage
318 #:utime #:stime #:maxrss #:ixrss #:idrss #:isrss
319 #:minflt #:majflt #:nswap #:inblock #:outblock
320 #:msgsnd #:msgrcv #:nsignals #:nvcsw #:nivcsw
321 ;; Getrlimit()
322 #:prio-process
323 #:prio-pgrp
324 #:prio-user
325 #:rlim-infinity
326 #:rusage-self
327 #:rusage-children
328 #:rlimit-as
329 #:rlimit-core
330 #:rlimit-cpu
331 #:rlimit-data
332 #:rlimit-fsize
333 #:rlimit-memlock
334 #:rlimit-nofile
335 #:rlimit-nproc
336 #:rlimit-rss
337 #:rlimit-stack
338 #+linux #:rlim-saved-max
339 #+linux #:rlim-saved-cur
340 #+linux #:rlimit-locks
341 #+linux #:rlimit-msgqueue
342 #+linux #:rlimit-nlimits
343 #+linux #:rlimit-nice
344 #+linux #:rlimit-rtprio
345 #+linux #:rlimit-sigpending
346 #+bsd #:rlimit-sbsize)
347 (:export ;; sys/utsname.h
348 ;; struct utsname
349 #:utsname
350 #:sysname #:nodename #:release #:version #:machine)
351 (:export ;; pwd.h
352 ;; struct passwd
353 #:passwd
354 #:name #:passwd #:uid #:gid #:gecos #:dir #:shell)
355 (:export ;; grp.h
356 ;; struct group
357 #:group
358 #:name #:passwd #:gid #:mem)
359 #+linux
360 (:export ;; sys/epoll.h
361 ;; union epoll_data_t
362 #:epoll-data
363 #:ptr #:fd #:u32 #:u64
364 ;; struct epoll_event
365 #:epoll-event
366 #:events #:data
367 ;; Epoll_ctl()
368 #:epoll-ctl-add
369 #:epoll-ctl-del
370 #:epoll-ctl-mod
371 #:epollin
372 #:epollrdnorm
373 #:epollrdband
374 #:epollpri
375 #:epollout
376 #:epollwrnorm
377 #:epollwrband
378 #:epollerr
379 #:epollhup
380 #:epollmsg
381 #:epolloneshot
382 #:epollet)
383 #+bsd
384 (:export ;; sys/event.h
385 ;; struct kevent
386 #:kevent
387 #:ident #:filter #:flags #:fflags #:data #:udata
388 ;; Kevent()
389 #+bsd #:ev-add
390 #+bsd #:ev-enable
391 #+bsd #:ev-disable
392 #+bsd #:ev-delete
393 #+bsd #:ev-oneshot
394 #+bsd #:ev-clear
395 #+bsd #:ev-eof
396 #+bsd #:ev-error
397 #+bsd #:evfilt-read
398 #+bsd #:evfilt-write
399 #+bsd #:evfilt-aio
400 #+bsd #:evfilt-vnode
401 #+bsd #:evfilt-proc
402 #+bsd #:evfilt-signal
403 #+bsd #:evfilt-timer
404 #-darwin #:evfilt-netdev
405 #+bsd #:note-delete
406 #+bsd #:note-write
407 #+bsd #:note-extend
408 #+bsd #:note-attrib
409 #+bsd #:note-link
410 #+bsd #:note-rename
411 #+bsd #:note-revoke
412 #+bsd #:note-exit
413 #+bsd #:note-fork
414 #+bsd #:note-exec
415 #+bsd #:note-track
416 #+bsd #:note-trackerr
417 #-darwin #:note-linkup
418 #-darwin #:note-linkdown
419 #-darwin #:note-linkinv)
420 (:export ;; syslog.h
421 ;; Openlog() options
422 #:log-pid
423 #:log-cons
424 #:log-odelay
425 #:log-ndelay
426 #:log-nowait
427 #:log-perror
428 ;; Syslog() facilities
429 #:log-kern
430 #:log-user
431 #:log-mail
432 #:log-daemon
433 #:log-auth
434 #:log-authpriv
435 #:log-syslog
436 #:log-lpr
437 #:log-news
438 #:log-uucp
439 #:log-cron
440 #:log-ftp
441 #+bsd #:log-security
442 #:log-local0
443 #:log-local1
444 #:log-local2
445 #:log-local3
446 #:log-local4
447 #:log-local5
448 #:log-local6
449 #:log-local7
450 ;; Syslog() levels
451 #:log-emerg
452 #:log-alert
453 #:log-crit
454 #:log-err
455 #:log-warning
456 #:log-notice
457 #:log-info
458 #:log-debug)
460 (:export ;; CFFI additions
461 #:sizeof)
463 ;;;----------
464 ;;; Syscalls
465 ;;;----------
466 (:export ;; Errno-related functions
467 #:errno
468 #:strerror)
469 (:export ;; Memory manipulation functions
470 #:memset
471 #:bzero
472 #:memcpy
473 #:memmove)
474 (:export ;; Files
475 #:open
476 #:creat
477 #:pipe
478 #:mkfifo
479 #:umask
480 #:lseek
481 #:access
482 #:truncate
483 #:ftruncate
484 #:rename
485 #:link
486 #:symlink
487 #:readlink
488 #:realpath
489 #:unlink
490 #:chown
491 #:fchown
492 #:lchown
493 #:chmod
494 #:fchmod)
495 (:export ;; I/O
496 #:read
497 #:write
498 #:readv
499 #:writev
500 #:pread
501 #:pwrite)
502 (:export ;; Stat
503 #:stat
504 #:fstat
505 #:lstat
506 #:sync
507 #:fsync
508 #:mkstemp)
509 (:export ;; Directories
510 #:mkdir
511 #:rmdir
512 #:chdir
513 #:fchdir
514 #:getcwd
515 #:mkdtemp)
516 (:export ;; File descriptors
517 #:close
518 #:dup
519 #:dup2
520 #:fcntl
521 #:ioctl
522 #:fd-cloexec-p
523 #:fd-nonblock-p
524 #:fd-open-p)
525 (:export ;; TTYs
526 #:openpt
527 #:grantpt
528 #:unlockpt
529 #:ptsname)
530 (:export ;; I/O Polling
531 #:select
532 #:copy-fd-set
533 #:fd-clr
534 #:fd-isset
535 #:fd-set
536 #:fd-zero
537 #:poll
538 #+linux #:epoll-create
539 #+linux #:epoll-ctl
540 #+linux #:epoll-wait
541 #+bsd #:kqueue
542 #+bsd #:kevent
543 #+bsd #:ev-set)
544 (:export ;; Socket message readers
545 #:cmsg.firsthdr
546 #:cmsg.nxthdr
547 #:cmsg.space
548 #:cmsg.len
549 #:cmsg.data)
550 (:export ;; Directory walking
551 #:opendir
552 #:closedir
553 #:readdir
554 #:rewinddir
555 #:seekdir
556 #:telldir)
557 (:export ;; Memory mapping
558 #:mmap
559 #:munmap)
560 (:export ;; Process creation and info
561 #:fork
562 #:execv
563 #:waitpid
564 #:getpid
565 #:getppid
566 #+linux #:gettid
567 #:getuid
568 #:setuid
569 #:geteuid
570 #:seteuid
571 #:getgid
572 #:setgid
573 #:getegid
574 #:setegid
575 #:setreuid
576 #:setregid
577 #:getpgid
578 #:setpgid
579 #:getpgrp
580 #:setpgrp
581 #:setsid
582 #:getrlimit
583 #:setrlimit
584 #:getrusage
585 #:getpriority
586 #:setpriority
587 #:nice
588 #:exit)
589 (:export ;; Signals
590 #:kill
591 #:sigaction
592 #:wifexited
593 #:wexitstatus
594 #:wifsignaled
595 #:wtermsig #:wtermsig*
596 #:wcoredump
597 #:wifstopped
598 #:wstopsig
599 #:wifcontinued)
600 (:export ;; Time
601 #:usleep
602 #:clock-getres
603 #:clock-gettime
604 #:clock-settime
605 #:get-monotonic-time)
606 (:export ;; Environment
607 #:getenv
608 #:setenv
609 #:unsetenv
610 #:clearenv)
611 (:export ;; Hostname info
612 #:gethostname
613 #:getdonainname
614 #:uname)
615 (:export ;; User info
616 #:getpwuid
617 #:getpwnam)
618 (:export ;; Group info
619 #:getgrgid
620 #:getgrnam)
621 (:export ;; Syslog
622 #:openlog
623 #:syslog
624 #:closelog
625 #:setlogmask
626 #:log-mask
627 #:log-upto
628 #:with-syslog))