#lang scribble/doc @(require scribble/manual "../errno.ss" (for-label scheme "../exception.ss" "../errno.ss")) @define-syntax-rule[(deferrno id) (defthing id string? id)] @title[#:tag "exception"]{Error Handling} @local-table-of-contents[] @section{Filesystem Exceptions} @defmodule[(planet "exception.ss" ("murphy" "9p.plt" 1 0))]{ Provides an exception structure and utility functions. } @defstruct[(exn:fail:filesystem:9p exn:fail:filesystem) () #:transparent]{ The exception type used to signal 9P errors, both from backends to the generic server code and from the client code to frontends. } @defproc[(raise-9p-error [ename string?]) any]{ Raises an exception of type @scheme[exn:fail:filesystem:9p] with the 9P error name @scheme[ename] as its message. } @section{Error Messages} @defmodule[(planet "errno.ss" ("murphy" "9p.plt" 1 0))]{ Provides error messages for standard POSIX.1 and ISO C99 error conditions. 9P transmits error conditions as strings over the network, but most operating systems use numeric error codes in their APIs. Therefore it is useful to help protocol conversion code and use well known messages. } @deferrno[E2BIG] @deferrno[EACCESS] @deferrno[EADDRINUSE] @deferrno[EADDRNOTAVAIL] @deferrno[EAFNOSUPPORT] @deferrno[EAGAIN] @deferrno[EALREADY] @deferrno[EBADF] @deferrno[EBADMSG] @deferrno[EBUSY] @deferrno[ECANCELED] @deferrno[ECHILD] @deferrno[ECONNABORTED] @deferrno[ECONNREFUSED] @deferrno[ECONNRESET] @deferrno[EDEADLOCK] @deferrno[EDESTADDRREQ] @deferrno[EDOM] @deferrno[EDQUOT] @deferrno[EEXIST] @deferrno[EFAULT] @deferrno[EFBIG] @deferrno[EHOSTUNREACH] @deferrno[EIDRM] @deferrno[EILSEQ] @deferrno[EINPROGRESS] @deferrno[EINTR] @deferrno[EINVAL] @deferrno[EIO] @deferrno[EISCONN] @deferrno[EISDIR] @deferrno[ELOOP] @deferrno[EMFILE] @deferrno[EMLINK] @deferrno[EMSGSIZE] @deferrno[EMULTIHOP] @deferrno[ENAMETOOLONG] @deferrno[ENETDOWN] @deferrno[ENETRESET] @deferrno[ENETUNREACH] @deferrno[ENFILE] @deferrno[ENOBUFS] @deferrno[ENODATA] @deferrno[ENODEV] @deferrno[ENOENT] @deferrno[ENOEXEC] @deferrno[ENOLCK] @deferrno[ENOLINK] @deferrno[ENOMEM] @deferrno[ENOMSG] @deferrno[ENOPROTOOPT] @deferrno[ENOSPC] @deferrno[ENOSR] @deferrno[ENOSTR] @deferrno[ENOSYS] @deferrno[ENOTCONN] @deferrno[ENOTDIR] @deferrno[ENOTEMPTY] @deferrno[ENOTSOCK] @deferrno[ENOTSUP] @deferrno[ENOTTY] @deferrno[ENXIO] @deferrno[EOPNOTSUPP] @deferrno[EOVERFLOW] @deferrno[EPERM] @deferrno[EPIPE] @deferrno[EPROTO] @deferrno[EPROTONOSUPPORT] @deferrno[EPROTOTYPE] @deferrno[ERANGE] @deferrno[EROFS] @deferrno[ESPIPE] @deferrno[ESRCH] @deferrno[ESTALE] @deferrno[ETIME] @deferrno[ETIMEDOUT] @deferrno[ETXTBSY] @deferrno[EWOULDBLOCK] @deferrno[EXDEV]