wasmer_wasix/syscalls/wasi/
fd_prestat_get.rs

1use super::*;
2use crate::syscalls::*;
3
4/// ### `fd_prestat_get()`
5/// Get metadata about a preopened file descriptor
6/// Input:
7/// - `Fd fd`
8///     The preopened file descriptor to query
9/// Output:
10/// - `__wasi_prestat *buf`
11///     Where the metadata will be written
12#[instrument(level = "trace", skip_all, fields(%fd), ret)]
13pub fn fd_prestat_get<M: MemorySize>(
14    ctx: FunctionEnvMut<'_, WasiEnv>,
15    fd: WasiFd,
16    buf: WasmPtr<Prestat, M>,
17) -> Errno {
18    let env = ctx.data();
19    let (memory, mut state) = unsafe { env.get_memory_and_wasi_state(&ctx, 0) };
20
21    let prestat_ptr = buf.deref(&memory);
22    wasi_try_mem!(prestat_ptr.write(wasi_try!(state.fs.prestat_fd(fd))));
23
24    Errno::Success
25}