forked from ish-app/ish
-
Notifications
You must be signed in to change notification settings - Fork 2
/
errno.c
105 lines (103 loc) · 2.5 KB
/
errno.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "debug.h"
#include "kernel/task.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)
ERRCASE(ENOTEMPTY)
ERRCASE(ELOOP)
ERRCASE(ENOSTR)
ERRCASE(ENODATA)
ERRCASE(ETIME)
ERRCASE(ENOSR)
ERRCASE(EREMOTE)
ERRCASE(ENOLINK)
ERRCASE(EPROTO)
ERRCASE(EMULTIHOP)
ERRCASE(EBADMSG)
ERRCASE(EOVERFLOW)
ERRCASE(EILSEQ)
ERRCASE(EUSERS)
ERRCASE(ENOTSOCK)
ERRCASE(EDESTADDRREQ)
ERRCASE(EMSGSIZE)
ERRCASE(EPROTOTYPE)
ERRCASE(ENOPROTOOPT)
ERRCASE(EPROTONOSUPPORT)
ERRCASE(ESOCKTNOSUPPORT)
ERRCASE(EOPNOTSUPP)
#if EOPNOTSUPP != ENOTSUP
ERRCASE(ENOTSUP)
#endif
ERRCASE(EPFNOSUPPORT)
ERRCASE(EAFNOSUPPORT)
ERRCASE(EADDRINUSE)
ERRCASE(EADDRNOTAVAIL)
ERRCASE(ENETDOWN)
ERRCASE(ENETUNREACH)
ERRCASE(ENETRESET)
ERRCASE(ECONNABORTED)
ERRCASE(ECONNRESET)
ERRCASE(ENOBUFS)
ERRCASE(EISCONN)
ERRCASE(ENOTCONN)
ERRCASE(ESHUTDOWN)
ERRCASE(ETOOMANYREFS)
ERRCASE(ETIMEDOUT)
ERRCASE(ECONNREFUSED)
ERRCASE(EHOSTDOWN)
ERRCASE(EHOSTUNREACH)
ERRCASE(EALREADY)
ERRCASE(EINPROGRESS)
ERRCASE(ESTALE)
ERRCASE(EDQUOT)
}
#undef ERRCASE
printk("unknown error %d\n", err);
return -(err | 0x1000);
}
int errno_map() {
if (errno == EPIPE)
send_signal(current, SIGPIPE_, SIGINFO_NIL);
return err_map(errno);
}