xref: /NextBSD/usr.bin/truss/cloudabi.c (revision 84d351007654069f9643c8e4b4802a7f5f08ee42)
1 /*-
2  * Copyright (c) 2015 Nuxi, https://nuxi.nl/
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  */
25 
26 #include <sys/cdefs.h>
27 __FBSDID("$FreeBSD$");
28 
29 #include <sys/param.h>
30 
31 #include <errno.h>
32 
33 #include <compat/cloudabi/cloudabi_syscalldefs.h>
34 
35 #include "cloudabi.h"
36 
37 long
cloudabi_convert_errno(long error)38 cloudabi_convert_errno(long error)
39 {
40 	static const int table[] = {
41 		[CLOUDABI_E2BIG]		= E2BIG,
42 		[CLOUDABI_EACCES]		= EACCES,
43 		[CLOUDABI_EADDRINUSE]		= EADDRINUSE,
44 		[CLOUDABI_EADDRNOTAVAIL]	= EADDRNOTAVAIL,
45 		[CLOUDABI_EAFNOSUPPORT]		= EAFNOSUPPORT,
46 		[CLOUDABI_EAGAIN]		= EAGAIN,
47 		[CLOUDABI_EALREADY]		= EALREADY,
48 		[CLOUDABI_EBADF]		= EBADF,
49 		[CLOUDABI_EBADMSG]		= EBADMSG,
50 		[CLOUDABI_EBUSY]		= EBUSY,
51 		[CLOUDABI_ECANCELED]		= ECANCELED,
52 		[CLOUDABI_ECHILD]		= ECHILD,
53 		[CLOUDABI_ECONNABORTED]		= ECONNABORTED,
54 		[CLOUDABI_ECONNREFUSED]		= ECONNREFUSED,
55 		[CLOUDABI_ECONNRESET]		= ECONNRESET,
56 		[CLOUDABI_EDEADLK]		= EDEADLK,
57 		[CLOUDABI_EDESTADDRREQ]		= EDESTADDRREQ,
58 		[CLOUDABI_EDOM]			= EDOM,
59 		[CLOUDABI_EDQUOT]		= EDQUOT,
60 		[CLOUDABI_EEXIST]		= EEXIST,
61 		[CLOUDABI_EFAULT]		= EFAULT,
62 		[CLOUDABI_EFBIG]		= EFBIG,
63 		[CLOUDABI_EHOSTUNREACH]		= EHOSTUNREACH,
64 		[CLOUDABI_EIDRM]		= EIDRM,
65 		[CLOUDABI_EILSEQ]		= EILSEQ,
66 		[CLOUDABI_EINPROGRESS]		= EINPROGRESS,
67 		[CLOUDABI_EINTR]		= EINTR,
68 		[CLOUDABI_EINVAL]		= EINVAL,
69 		[CLOUDABI_EIO]			= EIO,
70 		[CLOUDABI_EISCONN]		= EISCONN,
71 		[CLOUDABI_EISDIR]		= EISDIR,
72 		[CLOUDABI_ELOOP]		= ELOOP,
73 		[CLOUDABI_EMFILE]		= EMFILE,
74 		[CLOUDABI_EMLINK]		= EMLINK,
75 		[CLOUDABI_EMSGSIZE]		= EMSGSIZE,
76 		[CLOUDABI_EMULTIHOP]		= EMULTIHOP,
77 		[CLOUDABI_ENAMETOOLONG]		= ENAMETOOLONG,
78 		[CLOUDABI_ENETDOWN]		= ENETDOWN,
79 		[CLOUDABI_ENETRESET]		= ENETRESET,
80 		[CLOUDABI_ENETUNREACH]		= ENETUNREACH,
81 		[CLOUDABI_ENFILE]		= ENFILE,
82 		[CLOUDABI_ENOBUFS]		= ENOBUFS,
83 		[CLOUDABI_ENODEV]		= ENODEV,
84 		[CLOUDABI_ENOENT]		= ENOENT,
85 		[CLOUDABI_ENOEXEC]		= ENOEXEC,
86 		[CLOUDABI_ENOLCK]		= ENOLCK,
87 		[CLOUDABI_ENOLINK]		= ENOLINK,
88 		[CLOUDABI_ENOMEM]		= ENOMEM,
89 		[CLOUDABI_ENOMSG]		= ENOMSG,
90 		[CLOUDABI_ENOPROTOOPT]		= ENOPROTOOPT,
91 		[CLOUDABI_ENOSPC]		= ENOSPC,
92 		[CLOUDABI_ENOSYS]		= ENOSYS,
93 		[CLOUDABI_ENOTCONN]		= ENOTCONN,
94 		[CLOUDABI_ENOTDIR]		= ENOTDIR,
95 		[CLOUDABI_ENOTEMPTY]		= ENOTEMPTY,
96 		[CLOUDABI_ENOTRECOVERABLE]	= ENOTRECOVERABLE,
97 		[CLOUDABI_ENOTSOCK]		= ENOTSOCK,
98 		[CLOUDABI_ENOTSUP]		= ENOTSUP,
99 		[CLOUDABI_ENOTTY]		= ENOTTY,
100 		[CLOUDABI_ENXIO]		= ENXIO,
101 		[CLOUDABI_EOVERFLOW]		= EOVERFLOW,
102 		[CLOUDABI_EOWNERDEAD]		= EOWNERDEAD,
103 		[CLOUDABI_EPERM]		= EPERM,
104 		[CLOUDABI_EPIPE]		= EPIPE,
105 		[CLOUDABI_EPROTO]		= EPROTO,
106 		[CLOUDABI_EPROTONOSUPPORT]	= EPROTONOSUPPORT,
107 		[CLOUDABI_EPROTOTYPE]		= EPROTOTYPE,
108 		[CLOUDABI_ERANGE]		= ERANGE,
109 		[CLOUDABI_EROFS]		= EROFS,
110 		[CLOUDABI_ESPIPE]		= ESPIPE,
111 		[CLOUDABI_ESRCH]		= ESRCH,
112 		[CLOUDABI_ESTALE]		= ESTALE,
113 		[CLOUDABI_ETIMEDOUT]		= ETIMEDOUT,
114 		[CLOUDABI_ETXTBSY]		= ETXTBSY,
115 		[CLOUDABI_EXDEV]		= EXDEV,
116 		[CLOUDABI_ENOTCAPABLE]		= ENOTCAPABLE,
117 	};
118 
119 	if (error < 0 || error >= nitems(table) || table[error] == 0)
120 		return (error);
121 	return (table[error]);
122 }
123