ish/kernel/errno.c

61 lines
1.3 KiB
C

#include "kernel/process.h"
#include "kernel/signal.h"
#include "kernel/errno.h"
int err_map(int err) {
#define ERRCASE(err) \
case err: return _##err;
switch (err) {
ERRCASE(EPERM)
ERRCASE(ENOENT)
ERRCASE(ESRCH)
ERRCASE(EINTR)
ERRCASE(EIO)
ERRCASE(ENXIO)
ERRCASE(E2BIG)
ERRCASE(ENOEXEC)
ERRCASE(EBADF)
ERRCASE(ECHILD)
ERRCASE(EAGAIN)
ERRCASE(ENOMEM)
ERRCASE(EACCES)
ERRCASE(EFAULT)
ERRCASE(ENOTBLK)
ERRCASE(EBUSY)
ERRCASE(EEXIST)
ERRCASE(EXDEV)
ERRCASE(ENODEV)
ERRCASE(ENOTDIR)
ERRCASE(EISDIR)
ERRCASE(EINVAL)
ERRCASE(ENFILE)
ERRCASE(EMFILE)
ERRCASE(ENOTTY)
ERRCASE(ETXTBSY)
ERRCASE(EFBIG)
ERRCASE(ENOSPC)
ERRCASE(ESPIPE)
ERRCASE(EROFS)
ERRCASE(EMLINK)
ERRCASE(EPIPE)
ERRCASE(EDOM)
ERRCASE(ERANGE)
ERRCASE(EDEADLK)
ERRCASE(ENAMETOOLONG)
ERRCASE(ENOLCK)
ERRCASE(ENOSYS)
#ifdef ELIBBAD
ERRCASE(ELIBBAD)
#endif
}
#undef ERRCASE
return 1337; // TODO FIXME XXX
}
int errno_map() {
if (errno == EPIPE)
send_signal(current, SIGPIPE_);
return err_map(errno);
}