xref: /illumos-gate/usr/src/uts/common/fs/zfs/zcp_global.c (revision 5f82aa32fbc5dc2c59bca6ff315f44a4c4c9ea86)
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 by Delphix. All rights reserved.
18  */
19 
20 #include <sys/zcp_global.h>
21 
22 #include "lua.h"
23 #include "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 	{"EDQUOT", EDQUOT},
66 	{NULL, NULL}
67 };
68 
69 static void
70 zcp_load_errno_globals(lua_State *state)
71 {
72 	const zcp_errno_global_t *global = errno_globals;
73 	while (global->zeg_name != NULL) {
74 		lua_pushnumber(state, (lua_Number)global->zeg_errno);
75 		lua_setglobal(state, global->zeg_name);
76 		global++;
77 	}
78 }
79 
80 void
81 zcp_load_globals(lua_State *state)
82 {
83 	zcp_load_errno_globals(state);
84 }
85