xref: /freebsd/sys/contrib/openzfs/module/zfs/zcp_global.c (revision 02e9120893770924227138ba49df1edb3896112a)
1 /*
2  * CDDL HEADER START
3  *
4  * This file and its contents are supplied under the terms of the
5  * Common Development and Distribution License ("CDDL"), version 1.0.
6  * You may only use this file in accordance with the terms of version
7  * 1.0 of the CDDL.
8  *
9  * A full copy of the text of the CDDL should have accompanied this
10  * source.  A copy of the CDDL is also available via the Internet at
11  * http://www.illumos.org/license/CDDL.
12  *
13  * CDDL HEADER END
14  */
15 
16 /*
17  * Copyright (c) 2016, 2017 by Delphix. All rights reserved.
18  */
19 
20 #include <sys/zcp_global.h>
21 
22 #include <sys/lua/lua.h>
23 #include <sys/lua/lauxlib.h>
24 
25 typedef struct zcp_errno_global {
26 	const char *zeg_name;
27 	int zeg_errno;
28 } zcp_errno_global_t;
29 
30 static const zcp_errno_global_t errno_globals[] = {
31 	{"EPERM", EPERM},
32 	{"ENOENT", ENOENT},
33 	{"ESRCH", ESRCH},
34 	{"EINTR", EINTR},
35 	{"EIO", EIO},
36 	{"ENXIO", ENXIO},
37 	{"E2BIG", E2BIG},
38 	{"ENOEXEC", ENOEXEC},
39 	{"EBADF", EBADF},
40 	{"ECHILD", ECHILD},
41 	{"EAGAIN", EAGAIN},
42 	{"ENOMEM", ENOMEM},
43 	{"EACCES", EACCES},
44 	{"EFAULT", EFAULT},
45 	{"ENOTBLK", ENOTBLK},
46 	{"EBUSY", EBUSY},
47 	{"EEXIST", EEXIST},
48 	{"EXDEV", EXDEV},
49 	{"ENODEV", ENODEV},
50 	{"ENOTDIR", ENOTDIR},
51 	{"EISDIR", EISDIR},
52 	{"EINVAL", EINVAL},
53 	{"ENFILE", ENFILE},
54 	{"EMFILE", EMFILE},
55 	{"ENOTTY", ENOTTY},
56 	{"ETXTBSY", ETXTBSY},
57 	{"EFBIG", EFBIG},
58 	{"ENOSPC", ENOSPC},
59 	{"ESPIPE", ESPIPE},
60 	{"EROFS", EROFS},
61 	{"EMLINK", EMLINK},
62 	{"EPIPE", EPIPE},
63 	{"EDOM", EDOM},
64 	{"ERANGE", ERANGE},
65 	{"EDEADLK", EDEADLK},
66 	{"ENOLCK", ENOLCK},
67 	{"ECANCELED", ECANCELED},
68 	{"ENOTSUP", ENOTSUP},
69 	{"EDQUOT", EDQUOT},
70 	{"ENAMETOOLONG", ENAMETOOLONG},
71 	{0, 0}
72 };
73 
74 static void
75 zcp_load_errno_globals(lua_State *state)
76 {
77 	const zcp_errno_global_t *global = errno_globals;
78 	while (global->zeg_name != NULL) {
79 		lua_pushnumber(state, (lua_Number)global->zeg_errno);
80 		lua_setglobal(state, global->zeg_name);
81 		global++;
82 	}
83 }
84 
85 void
86 zcp_load_globals(lua_State *state)
87 {
88 	zcp_load_errno_globals(state);
89 }
90