wasmer_wasix/syscalls/wasix/
fd_fdflags_get.rs

1use super::*;
2use crate::syscalls::*;
3
4/// ### `fd_fdstat_get()`
5/// Get metadata of a file descriptor
6/// Input:
7/// - `Fd fd`
8///     The file descriptor whose metadata will be accessed
9/// Output:
10/// - `Fdstat *buf`
11///     The location where the metadata will be written
12#[instrument(level = "trace", skip_all, fields(%wasi_fd), ret)]
13pub fn fd_fdflags_get<M: MemorySize>(
14    ctx: FunctionEnvMut<'_, WasiEnv>,
15    wasi_fd: WasiFd,
16    buf_ptr: WasmPtr<Fdflagsext, M>,
17) -> Errno {
18    let env = ctx.data();
19    let (memory, state) = unsafe { env.get_memory_and_wasi_state(&ctx, 0) };
20    let fd = wasi_try!(state.fs.get_fd(wasi_fd));
21
22    let buf = buf_ptr.deref(&memory);
23
24    wasi_try_mem!(buf.write(fd.inner.fd_flags));
25
26    Errno::Success
27}