wasmer_wasix/syscalls/wasi/
fd_fdstat_get.rs1use super::*;
2use crate::syscalls::*;
3
4#[instrument(level = "trace", skip_all, fields(%fd), ret)]
13pub fn fd_fdstat_get<M: MemorySize>(
14 mut ctx: FunctionEnvMut<'_, WasiEnv>,
15 fd: WasiFd,
16 buf_ptr: WasmPtr<Fdstat, M>,
17) -> Result<Errno, WasiError> {
18 WasiEnv::do_pending_operations(&mut ctx)?;
19
20 let env = ctx.data();
21 let (memory, mut state, inodes) = unsafe { env.get_memory_and_wasi_state_and_inodes(&ctx, 0) };
22 let stat = wasi_try_ok!(state.fs.fdstat(fd));
23
24 let buf = buf_ptr.deref(&memory);
25
26 wasi_try_mem_ok!(buf.write(stat));
27
28 Ok(Errno::Success)
29}