mirror of
https://github.com/hexagonal-sun/moss-kernel.git
synced 2025-12-23 22:47:55 -05:00
24 lines
695 B
Rust
24 lines
695 B
Rust
use crate::fs::VFS;
|
|
use crate::fs::syscalls::at::resolve_at_start_node;
|
|
use crate::memory::uaccess::cstr::UserCStr;
|
|
use crate::process::fd_table::Fd;
|
|
use core::ffi::c_char;
|
|
use libkernel::fs::attr::FilePermissions;
|
|
use libkernel::fs::path::Path;
|
|
use libkernel::memory::address::TUA;
|
|
|
|
pub async fn sys_mkdirat(
|
|
dirfd: Fd,
|
|
path: TUA<c_char>,
|
|
mode: u16,
|
|
) -> libkernel::error::Result<usize> {
|
|
let mut buf = [0; 1024];
|
|
|
|
let path = Path::new(UserCStr::from_ptr(path).copy_from_user(&mut buf).await?);
|
|
let start_node = resolve_at_start_node(dirfd, path).await?;
|
|
let mode = FilePermissions::from_bits_retain(mode);
|
|
|
|
VFS.mkdir(path, start_node, mode).await?;
|
|
Ok(0)
|
|
}
|