zfs/module/zfs/zcp_global.c

90 lines
1.9 KiB
C

/*
* CDDL HEADER START
*
* This file and its contents are supplied under the terms of the
* Common Development and Distribution License ("CDDL"), version 1.0.
* You may only use this file in accordance with the terms of version
* 1.0 of the CDDL.
*
* A full copy of the text of the CDDL should have accompanied this
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2016, 2017 by Delphix. All rights reserved.
*/
#include <sys/zcp_global.h>
#include <sys/lua/lua.h>
#include <sys/lua/lauxlib.h>
typedef struct zcp_errno_global {
const char *zeg_name;
int zeg_errno;
} zcp_errno_global_t;
static const zcp_errno_global_t errno_globals[] = {
{"EPERM", EPERM},
{"ENOENT", ENOENT},
{"ESRCH", ESRCH},
{"EINTR", EINTR},
{"EIO", EIO},
{"ENXIO", ENXIO},
{"E2BIG", E2BIG},
{"ENOEXEC", ENOEXEC},
{"EBADF", EBADF},
{"ECHILD", ECHILD},
{"EAGAIN", EAGAIN},
{"ENOMEM", ENOMEM},
{"EACCES", EACCES},
{"EFAULT", EFAULT},
{"ENOTBLK", ENOTBLK},
{"EBUSY", EBUSY},
{"EEXIST", EEXIST},
{"EXDEV", EXDEV},
{"ENODEV", ENODEV},
{"ENOTDIR", ENOTDIR},
{"EISDIR", EISDIR},
{"EINVAL", EINVAL},
{"ENFILE", ENFILE},
{"EMFILE", EMFILE},
{"ENOTTY", ENOTTY},
{"ETXTBSY", ETXTBSY},
{"EFBIG", EFBIG},
{"ENOSPC", ENOSPC},
{"ESPIPE", ESPIPE},
{"EROFS", EROFS},
{"EMLINK", EMLINK},
{"EPIPE", EPIPE},
{"EDOM", EDOM},
{"ERANGE", ERANGE},
{"EDEADLK", EDEADLK},
{"ENOLCK", ENOLCK},
{"ECANCELED", ECANCELED},
{"ENOTSUP", ENOTSUP},
{"EDQUOT", EDQUOT},
{"ENAMETOOLONG", ENAMETOOLONG},
{0, 0}
};
static void
zcp_load_errno_globals(lua_State *state)
{
const zcp_errno_global_t *global = errno_globals;
while (global->zeg_name != NULL) {
lua_pushnumber(state, (lua_Number)global->zeg_errno);
lua_setglobal(state, global->zeg_name);
global++;
}
}
void
zcp_load_globals(lua_State *state)
{
zcp_load_errno_globals(state);
}