Files
Luac0re/lua/jit/jit_misc.lua
T
2026-03-14 14:08:19 +09:00

41 lines
1.2 KiB
Lua

function jit_get_error_string()
local error_addr = jit_libc_error()
local errno = jit_read64(error_addr)
local str_addr = libc_strerror(errno)
return "errno : " .. to_hex(errno) .. "\nerror : " .. read_null_terminated_string(str_addr)
end
function jit_send_recv_fd(target_fd, jit_src_sock, main_dest_sock)
write32(smsg_control + 0, 20) -- cmsg_len
write32(smsg_control + 4, SOL_SOCKET) -- cmsg_level
write32(smsg_control + 8, SCM_RIGHTS) -- cmsg_type
write32(smsg_control + 12, 0) -- padding
write32(smsg_control + 16, target_fd) -- the fd
write8(smsg_data, 0)
write64(smsg_iov, smsg_data)
write64(smsg_iov + 8, 1)
write64(smsg_msg + 0x10, smsg_iov)
write32(smsg_msg + 0x18, 1)
write64(smsg_msg + 0x20, smsg_control)
write32(smsg_msg + 0x28, 20)
local sendmsg_ret = jit_syscall.sendmsg(jit_src_sock, smsg_msg, 0)
if (sendmsg_ret < 0) then
send_notification("jit_syscall.sendmsg error: " .. jit_get_error_string())
return -1
end
local received_fd = recv_fd(main_dest_sock)
if (received_fd < 0) then
send_notification("recv_fd error: " .. get_error_string())
return -1
end
return received_fd
end