Lines Matching refs:state

130 zcp_error_handler(lua_State *state)  in zcp_error_handler()  argument
134 zcp_cleanup(state); in zcp_error_handler()
136 VERIFY3U(1, ==, lua_gettop(state)); in zcp_error_handler()
137 msg = lua_tostring(state, 1); in zcp_error_handler()
138 luaL_traceback(state, state, msg, 1); in zcp_error_handler()
143 zcp_argerror(lua_State *state, int narg, const char *msg, ...) in zcp_argerror() argument
148 const char *buf = lua_pushvfstring(state, msg, alist); in zcp_argerror()
151 return (luaL_argerror(state, narg, buf)); in zcp_argerror()
166 zcp_register_cleanup(lua_State *state, zcp_cleanup_t cleanfunc, void *cleanarg) in zcp_register_cleanup() argument
168 zcp_run_info_t *ri = zcp_run_info(state); in zcp_register_cleanup()
179 zcp_deregister_cleanup(lua_State *state, zcp_cleanup_handler_t *zch) in zcp_deregister_cleanup() argument
181 zcp_run_info_t *ri = zcp_run_info(state); in zcp_deregister_cleanup()
191 zcp_cleanup(lua_State *state) in zcp_cleanup() argument
193 zcp_run_info_t *ri = zcp_run_info(state); in zcp_cleanup()
211 zcp_table_to_nvlist(lua_State *state, int index, int depth) in zcp_table_to_nvlist() argument
240 lua_pushnil(state); in zcp_table_to_nvlist()
242 while (lua_next(state, index) != 0) { in zcp_table_to_nvlist()
253 switch (lua_type(state, -2)) { in zcp_table_to_nvlist()
255 key = lua_tostring(state, -2); in zcp_table_to_nvlist()
269 key = (lua_toboolean(state, -2) == B_TRUE ? in zcp_table_to_nvlist()
278 (longlong_t)lua_tonumber(state, -2))); in zcp_table_to_nvlist()
286 (void) lua_pushfstring(state, "Invalid key " in zcp_table_to_nvlist()
288 lua_typename(state, lua_type(state, -2))); in zcp_table_to_nvlist()
296 (void) lua_pushfstring(state, "Collision of " in zcp_table_to_nvlist()
308 (void) lua_pushfstring(state, "Maximum table " in zcp_table_to_nvlist()
313 err = zcp_lua_to_nvlist_impl(state, -1, nvl, key, in zcp_table_to_nvlist()
326 lua_pop(state, 1); in zcp_table_to_nvlist()
364 zcp_lua_to_nvlist_impl(lua_State *state, int index, nvlist_t *nvl, in zcp_lua_to_nvlist_impl() argument
371 if (!lua_checkstack(state, 3)) { in zcp_lua_to_nvlist_impl()
372 (void) lua_pushstring(state, "Lua stack overflow"); in zcp_lua_to_nvlist_impl()
376 index = lua_absindex(state, index); in zcp_lua_to_nvlist_impl()
378 switch (lua_type(state, index)) { in zcp_lua_to_nvlist_impl()
384 lua_toboolean(state, index)); in zcp_lua_to_nvlist_impl()
387 fnvlist_add_int64(nvl, key, lua_tonumber(state, index)); in zcp_lua_to_nvlist_impl()
390 fnvlist_add_string(nvl, key, lua_tostring(state, index)); in zcp_lua_to_nvlist_impl()
393 nvlist_t *value_nvl = zcp_table_to_nvlist(state, index, depth); in zcp_lua_to_nvlist_impl()
402 (void) lua_pushfstring(state, in zcp_lua_to_nvlist_impl()
404 lua_typename(state, lua_type(state, index)), key); in zcp_lua_to_nvlist_impl()
415 zcp_lua_to_nvlist(lua_State *state, int index, nvlist_t *nvl, const char *key) in zcp_lua_to_nvlist() argument
422 if (zcp_lua_to_nvlist_impl(state, index, nvl, key, 0) != 0) in zcp_lua_to_nvlist()
423 (void) lua_error(state); in zcp_lua_to_nvlist()
427 zcp_lua_to_nvlist_helper(lua_State *state) in zcp_lua_to_nvlist_helper() argument
429 nvlist_t *nv = (nvlist_t *)lua_touserdata(state, 2); in zcp_lua_to_nvlist_helper()
430 const char *key = (const char *)lua_touserdata(state, 1); in zcp_lua_to_nvlist_helper()
431 zcp_lua_to_nvlist(state, 3, nv, key); in zcp_lua_to_nvlist_helper()
436 zcp_convert_return_values(lua_State *state, nvlist_t *nvl, in zcp_convert_return_values() argument
440 VERIFY3U(1, ==, lua_gettop(state)); in zcp_convert_return_values()
441 lua_pushcfunction(state, zcp_lua_to_nvlist_helper); in zcp_convert_return_values()
442 lua_pushlightuserdata(state, (char *)key); in zcp_convert_return_values()
443 lua_pushlightuserdata(state, nvl); in zcp_convert_return_values()
444 lua_pushvalue(state, 1); in zcp_convert_return_values()
445 lua_remove(state, 1); in zcp_convert_return_values()
446 err = lua_pcall(state, 3, 0, 0); /* zcp_lua_to_nvlist_helper */ in zcp_convert_return_values()
448 zcp_lua_to_nvlist(state, 1, nvl, ZCP_RET_ERROR); in zcp_convert_return_values()
468 zcp_nvlist_to_lua(lua_State *state, nvlist_t *nvl, in zcp_nvlist_to_lua() argument
472 lua_newtable(state); in zcp_nvlist_to_lua()
489 (void) lua_pushinteger(state, i); in zcp_nvlist_to_lua()
490 (void) lua_pushstring(state, nvpair_name(pair)); in zcp_nvlist_to_lua()
491 (void) lua_settable(state, -3); in zcp_nvlist_to_lua()
497 int err = zcp_nvpair_value_to_lua(state, pair, in zcp_nvlist_to_lua()
500 lua_pop(state, 1); in zcp_nvlist_to_lua()
503 (void) lua_setfield(state, -2, nvpair_name(pair)); in zcp_nvlist_to_lua()
517 zcp_nvpair_value_to_lua(lua_State *state, nvpair_t *pair, in zcp_nvpair_value_to_lua() argument
523 lua_pushnil(state); in zcp_nvpair_value_to_lua()
529 (void) lua_pushboolean(state, in zcp_nvpair_value_to_lua()
533 (void) lua_pushstring(state, fnvpair_value_string(pair)); in zcp_nvpair_value_to_lua()
536 (void) lua_pushinteger(state, fnvpair_value_int64(pair)); in zcp_nvpair_value_to_lua()
539 err = zcp_nvlist_to_lua(state, in zcp_nvpair_value_to_lua()
546 lua_newtable(state); in zcp_nvpair_value_to_lua()
548 (void) lua_pushinteger(state, i + 1); in zcp_nvpair_value_to_lua()
549 (void) lua_pushstring(state, strarr[i]); in zcp_nvpair_value_to_lua()
550 (void) lua_settable(state, -3); in zcp_nvpair_value_to_lua()
558 lua_newtable(state); in zcp_nvpair_value_to_lua()
560 (void) lua_pushinteger(state, i + 1); in zcp_nvpair_value_to_lua()
561 (void) lua_pushinteger(state, intarr[i]); in zcp_nvpair_value_to_lua()
562 (void) lua_settable(state, -3); in zcp_nvpair_value_to_lua()
570 lua_newtable(state); in zcp_nvpair_value_to_lua()
572 (void) lua_pushinteger(state, i + 1); in zcp_nvpair_value_to_lua()
573 (void) lua_pushinteger(state, intarr[i]); in zcp_nvpair_value_to_lua()
574 (void) lua_settable(state, -3); in zcp_nvpair_value_to_lua()
591 zcp_dataset_hold_error(lua_State *state, dsl_pool_t *dp, const char *dsname, in zcp_dataset_hold_error() argument
595 (void) zcp_argerror(state, 1, "no such dataset '%s'", dsname); in zcp_dataset_hold_error()
598 (void) zcp_argerror(state, 1, in zcp_dataset_hold_error()
603 (void) luaL_error(state, in zcp_dataset_hold_error()
607 (void) luaL_error(state, in zcp_dataset_hold_error()
620 zcp_dataset_hold(lua_State *state, dsl_pool_t *dp, const char *dsname, in zcp_dataset_hold() argument
625 (void) zcp_dataset_hold_error(state, dp, dsname, error); in zcp_dataset_hold()
643 zcp_debug(lua_State *state) in zcp_debug() argument
646 zcp_run_info_t *ri = zcp_run_info(state); in zcp_debug()
649 zcp_parse_args(state, libinfo->name, libinfo->pargs, libinfo->kwargs); in zcp_debug()
651 dbgstring = lua_tostring(state, 1); in zcp_debug()
672 zcp_exists(lua_State *state) in zcp_exists() argument
674 zcp_run_info_t *ri = zcp_run_info(state); in zcp_exists()
678 zcp_parse_args(state, libinfo->name, libinfo->pargs, libinfo->kwargs); in zcp_exists()
680 const char *dsname = lua_tostring(state, 1); in zcp_exists()
686 lua_pushboolean(state, B_TRUE); in zcp_exists()
688 lua_pushboolean(state, B_FALSE); in zcp_exists()
690 return (luaL_error(state, "dataset '%s' is not in the " in zcp_exists()
693 return (luaL_error(state, "I/O error opening dataset '%s'", in zcp_exists()
696 return (luaL_error(state, "unexpected error %d", error)); in zcp_exists()
773 zcp_lua_counthook(lua_State *state, lua_Debug *ar) in zcp_lua_counthook() argument
775 lua_getfield(state, LUA_REGISTRYINDEX, ZCP_RUN_INFO_KEY); in zcp_lua_counthook()
776 zcp_run_info_t *ri = lua_touserdata(state, -1); in zcp_lua_counthook()
785 (void) lua_pushstring(state, "Channel program was canceled."); in zcp_lua_counthook()
786 (void) lua_error(state); in zcp_lua_counthook()
796 (void) lua_pushstring(state, in zcp_lua_counthook()
798 (void) lua_error(state); in zcp_lua_counthook()
803 zcp_panic_cb(lua_State *state) in zcp_panic_cb() argument
806 lua_tostring(state, -1)); in zcp_panic_cb()
814 lua_State *state = ri->zri_state; in zcp_eval_impl() local
816 VERIFY3U(3, ==, lua_gettop(state)); in zcp_eval_impl()
829 lua_pushlightuserdata(state, ri); in zcp_eval_impl()
830 lua_setfield(state, LUA_REGISTRYINDEX, ZCP_RUN_INFO_KEY); in zcp_eval_impl()
831 VERIFY3U(3, ==, lua_gettop(state)); in zcp_eval_impl()
838 (void) lua_sethook(state, zcp_lua_counthook, LUA_MASKCOUNT, in zcp_eval_impl()
853 err = lua_pcall(state, 1, LUA_MULTRET, 1); in zcp_eval_impl()
866 lua_remove(state, 1); in zcp_eval_impl()
882 int return_count = lua_gettop(state); in zcp_eval_impl()
886 zcp_convert_return_values(state, ri->zri_outnvl, in zcp_eval_impl()
890 lua_settop(state, 0); in zcp_eval_impl()
891 (void) lua_pushfstring(state, "Multiple return " in zcp_eval_impl()
893 zcp_convert_return_values(state, ri->zri_outnvl, in zcp_eval_impl()
907 VERIFY3U(1, ==, lua_gettop(state)); in zcp_eval_impl()
916 zcp_convert_return_values(state, ri->zri_outnvl, in zcp_eval_impl()
927 VERIFY3U(1, ==, lua_gettop(state)); in zcp_eval_impl()
936 zcp_convert_return_values(state, ri->zri_outnvl, in zcp_eval_impl()
1035 lua_State *state; in zcp_eval() local
1053 state = lua_newstate(zcp_lua_alloc, &allocargs); in zcp_eval()
1054 VERIFY(state != NULL); in zcp_eval()
1055 (void) lua_atpanic(state, zcp_panic_cb); in zcp_eval()
1060 VERIFY3U(1, ==, luaopen_base(state)); in zcp_eval()
1061 lua_pop(state, 1); in zcp_eval()
1062 VERIFY3U(1, ==, luaopen_coroutine(state)); in zcp_eval()
1063 lua_setglobal(state, LUA_COLIBNAME); in zcp_eval()
1064 VERIFY0(lua_gettop(state)); in zcp_eval()
1065 VERIFY3U(1, ==, luaopen_string(state)); in zcp_eval()
1066 lua_setglobal(state, LUA_STRLIBNAME); in zcp_eval()
1067 VERIFY0(lua_gettop(state)); in zcp_eval()
1068 VERIFY3U(1, ==, luaopen_table(state)); in zcp_eval()
1069 lua_setglobal(state, LUA_TABLIBNAME); in zcp_eval()
1070 VERIFY0(lua_gettop(state)); in zcp_eval()
1075 zcp_load_globals(state); in zcp_eval()
1076 VERIFY0(lua_gettop(state)); in zcp_eval()
1081 lua_newtable(state); in zcp_eval()
1082 VERIFY3U(1, ==, zcp_load_list_lib(state)); in zcp_eval()
1083 lua_setfield(state, -2, "list"); in zcp_eval()
1084 VERIFY3U(1, ==, zcp_load_synctask_lib(state, B_FALSE)); in zcp_eval()
1085 lua_setfield(state, -2, "check"); in zcp_eval()
1086 VERIFY3U(1, ==, zcp_load_synctask_lib(state, B_TRUE)); in zcp_eval()
1087 lua_setfield(state, -2, "sync"); in zcp_eval()
1088 VERIFY3U(1, ==, zcp_load_get_lib(state)); in zcp_eval()
1089 lua_pushcclosure(state, zcp_debug_info.func, 0); in zcp_eval()
1090 lua_setfield(state, -2, zcp_debug_info.name); in zcp_eval()
1091 lua_pushcclosure(state, zcp_exists_info.func, 0); in zcp_eval()
1092 lua_setfield(state, -2, zcp_exists_info.name); in zcp_eval()
1093 lua_setglobal(state, "zfs"); in zcp_eval()
1094 VERIFY0(lua_gettop(state)); in zcp_eval()
1100 lua_pushcfunction(state, zcp_error_handler); in zcp_eval()
1101 VERIFY3U(1, ==, lua_gettop(state)); in zcp_eval()
1111 err = luaL_loadbufferx(state, program, strlen(program), in zcp_eval()
1115 lua_tostring(state, -1)); in zcp_eval()
1116 lua_close(state); in zcp_eval()
1120 VERIFY3U(2, ==, lua_gettop(state)); in zcp_eval()
1127 err = zcp_nvpair_value_to_lua(state, nvarg, in zcp_eval()
1131 lua_close(state); in zcp_eval()
1134 VERIFY3U(3, ==, lua_gettop(state)); in zcp_eval()
1136 runinfo.zri_state = state; in zcp_eval()
1156 lua_close(state); in zcp_eval()
1165 zcp_run_info(lua_State *state) in zcp_run_info() argument
1169 lua_getfield(state, LUA_REGISTRYINDEX, ZCP_RUN_INFO_KEY); in zcp_run_info()
1170 ri = lua_touserdata(state, -1); in zcp_run_info()
1171 lua_pop(state, 1); in zcp_run_info()
1215 zcp_args_error(lua_State *state, const char *fname, const zcp_arg_t *pargs, in zcp_args_error() argument
1237 msglen += strlen(lua_typename(state, pargs[i].za_lua_type)); in zcp_args_error()
1245 msglen += strlen(lua_typename(state, kwargs[i].za_lua_type)); in zcp_args_error()
1253 (void) luaL_error(state, errmsg); in zcp_args_error()
1263 lua_typename(state, pargs[i].za_lua_type), len)); in zcp_args_error()
1273 lua_typename(state, kwargs[i].za_lua_type), len)); in zcp_args_error()
1281 (void) luaL_error(state, errmsg); in zcp_args_error()
1286 zcp_parse_table_args(lua_State *state, const char *fname, in zcp_parse_table_args() argument
1297 lua_pushinteger(state, i + 1); in zcp_parse_table_args()
1298 lua_gettable(state, 1); in zcp_parse_table_args()
1300 type = lua_type(state, -1); in zcp_parse_table_args()
1302 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_table_args()
1306 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_table_args()
1308 i + 1, lua_typename(state, type), in zcp_parse_table_args()
1309 lua_typename(state, pargs[i].za_lua_type)); in zcp_parse_table_args()
1316 lua_pushinteger(state, i + 1); in zcp_parse_table_args()
1317 lua_pushnil(state); in zcp_parse_table_args()
1318 lua_settable(state, 1); in zcp_parse_table_args()
1327 lua_getfield(state, 1, kwargs[i].za_name); in zcp_parse_table_args()
1329 type = lua_type(state, -1); in zcp_parse_table_args()
1331 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_table_args()
1333 kwargs[i].za_name, lua_typename(state, type), in zcp_parse_table_args()
1334 lua_typename(state, kwargs[i].za_lua_type)); in zcp_parse_table_args()
1341 lua_pushnil(state); in zcp_parse_table_args()
1342 lua_setfield(state, 1, kwargs[i].za_name); in zcp_parse_table_args()
1349 lua_pushnil(state); in zcp_parse_table_args()
1350 if (lua_next(state, 1)) { in zcp_parse_table_args()
1351 if (lua_isnumber(state, -2) && lua_tointeger(state, -2) > 0) { in zcp_parse_table_args()
1352 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_table_args()
1354 } else if (lua_isstring(state, -2)) { in zcp_parse_table_args()
1355 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_table_args()
1356 "invalid kwarg '%s'", lua_tostring(state, -2)); in zcp_parse_table_args()
1358 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_table_args()
1364 lua_remove(state, 1); in zcp_parse_table_args()
1368 zcp_parse_pos_args(lua_State *state, const char *fname, const zcp_arg_t *pargs, in zcp_parse_pos_args() argument
1375 type = lua_type(state, i + 1); in zcp_parse_pos_args()
1377 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_pos_args()
1381 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_pos_args()
1383 i + 1, lua_typename(state, type), in zcp_parse_pos_args()
1384 lua_typename(state, pargs[i].za_lua_type)); in zcp_parse_pos_args()
1388 if (lua_gettop(state) != i) { in zcp_parse_pos_args()
1389 zcp_args_error(state, fname, pargs, kwargs, in zcp_parse_pos_args()
1395 lua_pushnil(state); in zcp_parse_pos_args()
1416 zcp_parse_args(lua_State *state, const char *fname, const zcp_arg_t *pargs, in zcp_parse_args() argument
1419 if (lua_gettop(state) == 1 && lua_istable(state, 1)) { in zcp_parse_args()
1420 zcp_parse_table_args(state, fname, pargs, kwargs); in zcp_parse_args()
1422 zcp_parse_pos_args(state, fname, pargs, kwargs); in zcp_parse_args()