Handle POSIX-ERRORs in resolving FILE-PATHs.
[iolib.git] / syscalls / pkgdcl.lisp
blob85c79b665415321742acd3270499d0cf8240f8ec
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-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 (:export
12 ;; Conditions
13 #:condition-info-mixin
14 #:system-error
15 #:syscall-error
16 #:posix-error
17 #:poll-error
18 #:poll-timeout
20 ;; Condition accessors
21 #:code-of
22 #:identifier-of
23 #:message-of
24 #:event-type-of
25 #:os-handle-of
27 ;; Pathname Functions
28 #:native-namestring
30 ;; Type Designators
31 #:filename
32 #:filename-designator
33 #:pointer-or-nil
34 #:pointer-or-nil-designator
35 #:bool
36 #:bool-designator
38 ;; Misc
39 #:repeat-decreasing-timeout
40 #:repeat-upon-condition-decreasing-timeout
42 ;; Return wrapper
43 #:return-wrapper
44 #:error-predicate-of
45 #:return-filter-of
46 #:error-generator-of
47 #:base-type-of
48 #:never-fails
49 #:signal-posix-error
50 #:signal-posix-error/restart
52 ;; Syscall definition
53 #:defentrypoint
54 #:defcfun*
55 #:defsyscall
56 #:defsyscall*
58 ;;;--------------------------------------------------------------------------
59 ;;; Syscalls
60 ;;;--------------------------------------------------------------------------
62 ;; Specials
63 #:*default-open-mode*
64 #:*environ*
66 ;; Errno-related functions
67 #:%sys-strerror
68 #:%sys-errno
70 ;; Memory manipulation functions
71 #:%sys-memset
72 #:%sys-bzero
73 #:%sys-memcpy
74 #:%sys-memmove
76 ;; Files
77 #:%sys-read
78 #:%sys-write
79 #:%sys-pread
80 #:%sys-pwrite
81 #:%sys-open
82 #:%sys-creat
83 #:%sys-pipe
84 #:%sys-mkfifo
85 #:%sys-umask
86 #:%sys-lseek
87 #:%sys-access
88 #:%sys-truncate
89 #:%sys-ftruncate
90 #:%sys-rename
91 #:%sys-link
92 #:%sys-symlink
93 #:%sys-readlink
94 #:%sys-unlink
95 #:%sys-chown
96 #:%sys-fchown
97 #:%sys-lchown
98 #:%sys-chmod
99 #:%sys-fchmod
100 #:%sys-stat
101 #:%sys-fstat
102 #:%sys-lstat
103 #:%sys-sync
104 #:%sys-fsync
105 #:%sys-mkstemp
107 ;; Directories
108 #:%sys-mkdir
109 #:%sys-rmdir
110 #:%sys-chdir
111 #:%sys-fchdir
112 #:%sys-getcwd
113 #:%sys-mkdtemp
115 ;; File descriptors
116 #:%sys-close
117 #:%sys-dup
118 #:%sys-dup2
119 #:%sys-ioctl/2
120 #:%sys-ioctl/3
121 #:%sys-fd-open-p
123 ;; I/O Polling
124 #:%sys-poll
126 ;; Memory mapping
127 #:%sys-mmap
128 #:%sys-munmap
130 ;; Process creation and info
131 #:%sys-fork
132 #:%sys-getpid
133 #:%sys-getppid
134 #:%sys-getuid
135 #:%sys-setuid
136 #:%sys-geteuid
137 #:%sys-seteuid
138 #:%sys-getgid
139 #:%sys-setgid
140 #:%sys-getegid
141 #:%sys-setegid
142 #:%sys-setreuid
143 #:%sys-setregid
144 #:%sys-getpgid
145 #:%sys-setpgid
146 #:%sys-getpgrp
147 #:%sys-setpgrp
148 #:%sys-setsid
149 #:%sys-getrlimit
150 #:%sys-setrlimit
151 #:%sys-getrusage
152 #:%sys-getpriority
153 #:%sys-setpriority
154 #:%sys-nice
156 ;; Time
157 #:%sys-usleep
158 #:%sys-time
159 #:%sys-gettimeofday
160 #:%sys-get-monotonic-time
162 ;; Environment
163 #:%sys-getenv
164 #:%sys-setenv
165 #:%sys-unsetenv
167 ;; Local info
168 #:%sys-gethostname
169 #:%sys-getdomainname
171 ;; User info
172 #:%sys-getpwnam
173 #:%sys-getpwuid
175 ;; Group info
176 #:%sys-getgrnam
177 #:%sys-getgrgid
179 ;;;--------------------------------------------------------------------------
180 ;;; Foreign types and constants
181 ;;;--------------------------------------------------------------------------
183 ;; Primitive type sizes
184 #:size-of-char
185 #:size-of-short
186 #:size-of-int
187 #:size-of-long
188 #:size-of-long-long
189 #:size-of-pointer
191 ;; Types
192 #:size-t #:size-of-size-t
193 #:ssize-t #:size-of-ssize-t
194 #:pid-t #:size-of-pid-t
195 #:gid-t #:size-of-gid-t
196 #:uid-t #:size-of-uid-t
197 #:off-t #:size-of-off-t
198 #:mode-t #:size-of-mode-t
199 #:time-t #:size-of-time-t
200 #:useconds-t #:size-of-useconds-t
201 #:suseconds-t #:size-of-suseconds-t
202 #:dev-t #:size-of-dev-t
203 #:ino-t #:size-of-ino-t
204 #:nlink-t #:size-of-nlink-t
205 #:blksize-t #:size-of-blksize-t
206 #:blkcnt-t #:size-of-blkcnt-t
207 #:nfds-t #:size-of-nfds-t
209 ;; OPEN()
210 #:o-rdonly
211 #:o-wronly
212 #:o-rdwr
213 #:o-creat
214 #:o-excl
215 #:o-trunc
216 #:o-append
217 #:o-noctty
218 #:o-nonblock
219 #:o-ndelay
220 #:o-sync
221 #:o-nofollow
222 #:o-async
224 ;; LSEEK()
225 #:seek-set
226 #:seek-cur
227 #:seek-end
229 ;; ACCESS()
230 #:r-ok
231 #:w-ok
232 #:x-ok
233 #:f-ok
235 ;; STAT()
236 #:s-irwxu
237 #:s-irusr
238 #:s-iwusr
239 #:s-ixusr
240 #:s-ifmt
241 #:s-ififo
242 #:s-ifchr
243 #:s-ifdir
244 #:s-ifblk
245 #:s-ifreg
246 #:s-ifwht
247 #:s-iread
248 #:s-iwrite
249 #:s-iexec
250 #:s-irwxg
251 #:s-irgrp
252 #:s-iwgrp
253 #:s-ixgrp
254 #:s-irwxo
255 #:s-iroth
256 #:s-iwoth
257 #:s-ixoth
258 #:s-isuid
259 #:s-isgid
260 #:s-isvtx
261 #:s-iflnk
262 #:s-ifsock
263 #:path-max
265 ;; MMAP()
266 #:prot-none
267 #:prot-read
268 #:prot-write
269 #:prot-exec
270 #:map-shared
271 #:map-private
272 #:map-fixed
273 #:map-failed
275 ;; POLL()
276 #:pollin
277 #:pollrdnorm
278 #:pollrdband
279 #:pollpri
280 #:pollout
281 #:pollwrnorm
282 #:pollwrband
283 #:pollerr
284 #:pollrdhup
285 #:pollhup
286 #:pollnval
288 ;; IOCTL()
289 #:fionbio
290 #:fionread
292 ;;; Structs
294 ;; timespec
295 #:timespec #:size-of-timespec
296 #:sec
297 #:nsec
299 ;; timeval
300 #:timeval #:size-of-timeval
301 #:sec
302 #:usec
304 ;; stat
305 #:stat #:size-of-stat
306 #:dev #:stat-dev
307 #:ino #:stat-ino
308 #:mode #:stat-mode
309 #:nlink #:stat-nlink
310 #:uid #:stat-uid
311 #:gid #:stat-gid
312 #:rdev #:stat-rdev
313 #:size #:stat-size
314 #:blksize #:stat-blksize
315 #:blocks #:stat-blocks
316 #:atime #:stat-atime
317 #:mtime #:stat-mtime
318 #:ctime #:stat-ctime
320 ;; pollfd
321 #:pollfd #:size-of-pollfd
322 #:fd
323 #:events
324 #:revents
326 ;; Syscall error codes
327 #:errno-values
328 #:eperm #:enoent #:esrch #:eintr #:eio #:enxio #:e2big #:enoexec
329 #:ebadf #:echild #:eagain #:enomem #:eacces #:efault #:ebusy #:eexist
330 #:exdev #:enodev #:enotdir #:eisdir #:einval #:enfile #:emfile
331 #:enotty #:efbig #:enospc #:espipe #:erofs #:emlink #:epipe #:edom
332 #:erange #:edeadlk #:enametoolong #:enolck #:enosys #:enotempty
333 #:echrng #:el2nsync #:el3hlt #:el3rst #:elnrng #:eunatch #:enocsi
334 #:el2hlt #:ebade #:ebadr #:exfull #:enoano #:ebadrqc #:ebadslt
335 #:edeadlock #:ebfont #:enostr #:enodata #:etime #:enosr #:enopkg
336 #:eadv #:esrmnt #:ecomm #:edotdot #:enotuniq #:ebadfd #:elibscn
337 #:elibmax #:elibexec #:eilseq #:erestart #:estrpipe #:euclean
338 #:enotnam #:enavail #:eremoteio #:enomedium #:emediumtype #:estale
339 #:enotblk #:etxtbsy #:eusers #:eloop #:ewouldblock #:enomsg #:eidrm
340 #:eproto #:emultihop #:ebadmsg #:eoverflow #:edquot #:einprogress
341 #:ealready #:eprotonosupport #:esocktnosupport #:enotsock
342 #:edestaddrreq #:emsgsize #:eprototype #:enoprotoopt #:eremote
343 #:enolink #:epfnosupport #:eafnosupport #:eaddrinuse #:eaddrnotavail
344 #:enetdown #:enetunreach #:enetreset #:econnaborted #:econnreset
345 #:eisconn #:enotconn #:eshutdown #:etoomanyrefs #:etimedout
346 #:econnrefused #:ehostdown #:ehostunreach #:enonet #:enobufs
347 #:eopnotsupp