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