mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-26 19:03:27 +00:00
Add syscall creat
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
fa7d0a787f
commit
4101d8328a
@ -114,7 +114,12 @@ impl FsResolver {
|
||||
Err(e) => return Err(e),
|
||||
};
|
||||
|
||||
if creation_flags.contains(CreationFlags::O_TRUNC) {
|
||||
dentry.resize(0)?;
|
||||
}
|
||||
|
||||
let inode_handle = InodeHandle::new(dentry, access_mode, status_flags)?;
|
||||
|
||||
Ok(inode_handle)
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ use crate::syscall::{
|
||||
mprotect::sys_mprotect,
|
||||
munmap::sys_munmap,
|
||||
nanosleep::{sys_clock_nanosleep, sys_nanosleep},
|
||||
open::{sys_open, sys_openat},
|
||||
open::{sys_creat, sys_open, sys_openat},
|
||||
pause::sys_pause,
|
||||
pipe::{sys_pipe, sys_pipe2},
|
||||
poll::sys_poll,
|
||||
@ -172,6 +172,7 @@ impl_syscall_nums_and_dispatch_fn! {
|
||||
SYS_RENAME = 82 => sys_rename(args[..2]);
|
||||
SYS_MKDIR = 83 => sys_mkdir(args[..2]);
|
||||
SYS_RMDIR = 84 => sys_rmdir(args[..1]);
|
||||
SYS_CREAT = 85 => sys_creat(args[..2]);
|
||||
SYS_LINK = 86 => sys_link(args[..2]);
|
||||
SYS_UNLINK = 87 => sys_unlink(args[..1]);
|
||||
SYS_SYMLINK = 88 => sys_symlink(args[..2]);
|
||||
|
@ -6,7 +6,7 @@ use crate::{
|
||||
file_handle::FileLike,
|
||||
file_table::{FdFlags, FileDesc},
|
||||
fs_resolver::{FsPath, AT_FDCWD},
|
||||
utils::CreationFlags,
|
||||
utils::{AccessMode, CreationFlags},
|
||||
},
|
||||
prelude::*,
|
||||
syscall::constants::MAX_FILENAME_LEN,
|
||||
@ -50,6 +50,12 @@ pub fn sys_open(path_addr: Vaddr, flags: u32, mode: u16) -> Result<SyscallReturn
|
||||
self::sys_openat(AT_FDCWD, path_addr, flags, mode)
|
||||
}
|
||||
|
||||
pub fn sys_creat(path_addr: Vaddr, mode: u16) -> Result<SyscallReturn> {
|
||||
let flags =
|
||||
AccessMode::O_WRONLY as u32 | CreationFlags::O_CREAT.bits() | CreationFlags::O_TRUNC.bits();
|
||||
self::sys_openat(AT_FDCWD, path_addr, flags, mode)
|
||||
}
|
||||
|
||||
/// File for output busybox ash log.
|
||||
struct BusyBoxTraceFile;
|
||||
|
||||
|
Reference in New Issue
Block a user