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