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