wasmer_wasix/journal/effector/syscalls/
epoll_create.rs

1use super::*;
2
3impl JournalEffector {
4    pub fn save_epoll_create(ctx: &mut FunctionEnvMut<'_, WasiEnv>, fd: Fd) -> anyhow::Result<()> {
5        Self::save_event(ctx, JournalEntry::EpollCreateV1 { fd })
6    }
7
8    pub fn apply_epoll_create(ctx: &mut FunctionEnvMut<'_, WasiEnv>, fd: Fd) -> anyhow::Result<()> {
9        let ret_fd = crate::syscalls::epoll_create_internal(ctx, Some(fd))
10            .map_err(|err| {
11                anyhow::format_err!("journal restore error: failed to create epoll - {err}")
12            })?
13            .map_err(|err| {
14                anyhow::format_err!("journal restore error: failed to create epoll - {err}")
15            })?;
16
17        let ret = crate::syscalls::fd_renumber_internal(ctx, ret_fd, fd);
18        if !matches!(ret, Ok(Errno::Success)) {
19            bail!(
20                "journal restore error: failed renumber file descriptor after epoll create (from={}, to={}) - {}",
21                ret_fd,
22                fd,
23                ret.unwrap_or(Errno::Unknown)
24            );
25        }
26
27        Ok(())
28    }
29}