userspace_build 0.1.123

Standard library for userspace applications
Documentation
use crate::target::os::syscall;

pub fn from_fd(fd: isize) -> syscall::fstat::Stat {
    let p = match syscall::mmap(
        core::ptr::null_mut(),
        core::mem::size_of::<syscall::fstat::Stat>(),
        (syscall::mmap::Prot::Read | syscall::mmap::Prot::Write) as i32,
        (syscall::mmap::Flag::Anonymous | syscall::mmap::Flag::Shared) as i32,
        -1,
        0,
    ) {
        core::result::Result::Ok(crate::Ok::Target(crate::target::Ok::Os(
            crate::target::os::Ok::Syscall(crate::target::os::syscall::Ok::MMap(
                crate::target::os::syscall::mmap::Ok::Default(m),
            )),
        ))) => m as *const u8,
        _ => {
            crate::info!("Failed to mmap file");
            panic!("ohones")
        }
    };

    let p = p as *const syscall::fstat::Stat;
    let Ok(_) = syscall::fstat(fd as isize, p).map_err(|_e| panic!("natv"));

    unsafe { *p }
}

pub fn from_path(filepath: &str) -> syscall::fstat::Stat {
    let file_descriptor = crate::file::open(filepath);
    from_fd(file_descriptor)
}

pub fn information(_file: &mut crate::file::File) -> bool {
    false
}