mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-09 05:16:47 +00:00
Made some minor improvements to syscall statx
Signed-off-by: Zhenchen Wang <m202372036@hust.edu.cn>
This commit is contained in:
parent
9e729593e8
commit
3a5f270ee9
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use crate::syscall::{
|
use crate::syscall::{
|
||||||
accept::{sys_accept, sys_accept4},
|
accept::{sys_accept, sys_accept4},
|
||||||
access::sys_faccessat,
|
access::{sys_faccessat, sys_faccessat2},
|
||||||
bind::sys_bind,
|
bind::sys_bind,
|
||||||
brk::sys_brk,
|
brk::sys_brk,
|
||||||
capget::sys_capget,
|
capget::sys_capget,
|
||||||
@ -296,5 +296,5 @@ impl_syscall_nums_and_dispatch_fn! {
|
|||||||
SYS_UTIMENSAT = 412 => sys_utimensat(args[..4]);
|
SYS_UTIMENSAT = 412 => sys_utimensat(args[..4]);
|
||||||
SYS_SEMTIMEDOP = 420 => sys_semtimedop(args[..4]);
|
SYS_SEMTIMEDOP = 420 => sys_semtimedop(args[..4]);
|
||||||
SYS_CLONE3 = 435 => sys_clone3(args[..2], &user_ctx);
|
SYS_CLONE3 = 435 => sys_clone3(args[..2], &user_ctx);
|
||||||
SYS_FACCESSAT2 = 439 => sys_faccessat2(arg[..4]);
|
SYS_FACCESSAT2 = 439 => sys_faccessat2(args[..4]);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// SPDX-License-Identifier: MPL-2.0
|
// SPDX-License-Identifier: MPL-2.0
|
||||||
|
|
||||||
use ::core::time::Duration;
|
use core::time::Duration;
|
||||||
|
|
||||||
use super::SyscallReturn;
|
use super::SyscallReturn;
|
||||||
use crate::{
|
use crate::{
|
||||||
@ -174,12 +174,18 @@ bitflags! {
|
|||||||
/// Flags can also be used to control what sort of synchronization the
|
/// Flags can also be used to control what sort of synchronization the
|
||||||
/// kernel will do when querying a file on a remote filesystem.
|
/// kernel will do when querying a file on a remote filesystem.
|
||||||
struct StatxFlags: u32 {
|
struct StatxFlags: u32 {
|
||||||
const AT_EMPTY_PATH = 1 << 12; // Allow empty relative pathname to operate on dirfd directly.
|
/// Allow empty relative pathname to operate on dirfd directly.
|
||||||
const AT_NO_AUTOMOUNT = 1 << 11; // Suppress terminal automount traversal.
|
const AT_EMPTY_PATH = 1 << 12;
|
||||||
const AT_SYMLINK_NOFOLLOW = 1 << 8; // Do not follow symbolic links.
|
/// Suppress terminal automount traversal.
|
||||||
const AT_STATX_SYNC_AS_STAT = 0; // Do whatever stat() does.
|
const AT_NO_AUTOMOUNT = 1 << 11;
|
||||||
const AT_STATX_FORCE_SYNC = 1 << 13; // Force the attributes to be sync'd with the server.
|
/// Do not follow symbolic links.
|
||||||
const AT_STATX_DONT_SYNC = 1 << 14; // Don't sync attributes with the server.
|
const AT_SYMLINK_NOFOLLOW = 1 << 8;
|
||||||
|
/// Do whatever stat() does.
|
||||||
|
const AT_STATX_SYNC_AS_STAT = 0;
|
||||||
|
/// Force the attributes to be sync'd with the server.
|
||||||
|
const AT_STATX_FORCE_SYNC = 1 << 13;
|
||||||
|
/// Don't sync attributes with the server.
|
||||||
|
const AT_STATX_DONT_SYNC = 1 << 14;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,24 +195,41 @@ bitflags! {
|
|||||||
/// These bits should be set in the mask argument of statx() to request
|
/// These bits should be set in the mask argument of statx() to request
|
||||||
/// particular items when calling statx().
|
/// particular items when calling statx().
|
||||||
pub struct StatxMask: u32 {
|
pub struct StatxMask: u32 {
|
||||||
const STATX_TYPE = 0x00000001; // Want stx_mode & S_IFMT
|
/// Want stx_mode & S_IFMT
|
||||||
const STATX_MODE = 0x00000002; // Want stx_mode & ~S_IFMT
|
const STATX_TYPE = 0x00000001;
|
||||||
const STATX_NLINK = 0x00000004; // Want stx_nlink
|
/// Want stx_mode & ~S_IFMT
|
||||||
const STATX_UID = 0x00000008; // Want stx_uid
|
const STATX_MODE = 0x00000002;
|
||||||
const STATX_GID = 0x00000010; // Want stx_gid
|
/// Want stx_nlink
|
||||||
const STATX_ATIME = 0x00000020; // Want stx_atime
|
const STATX_NLINK = 0x00000004;
|
||||||
const STATX_MTIME = 0x00000040; // Want stx_mtime
|
/// Want stx_uid
|
||||||
const STATX_CTIME = 0x00000080; // Want stx_ctime
|
const STATX_UID = 0x00000008;
|
||||||
const STATX_INO = 0x00000100; // Want stx_ino
|
/// Want stx_gid
|
||||||
const STATX_SIZE = 0x00000200; // Want stx_size
|
const STATX_GID = 0x00000010;
|
||||||
const STATX_BLOCKS = 0x00000400; // Want stx_blocks
|
/// Want stx_atime
|
||||||
const STATX_BASIC_STATS = 0x000007ff; // All of the above (stx_mode, stx_nlink, etc.)
|
const STATX_ATIME = 0x00000020;
|
||||||
const STATX_BTIME = 0x00000800; // Want stx_btime
|
/// Want stx_mtime
|
||||||
const STATX_ALL = 0x00000fff; // Deprecated: The same as STATX_BASIC_STATS | STATX_BTIME
|
const STATX_MTIME = 0x00000040;
|
||||||
const STATX_MNT_ID = 0x00001000; // Want stx_mnt_id
|
/// Want stx_ctime
|
||||||
const STATX_DIOALIGN = 0x00002000; // Want stx_dio_mem_align and stx_dio_offset_align
|
const STATX_CTIME = 0x00000080;
|
||||||
const STATX_MNT_ID_UNIQUE = 0x00004000; // Want unique stx_mnt_id
|
/// Want stx_ino
|
||||||
const STATX_RESERVED = 0x80000000; // Reserved for future struct statx expansion
|
const STATX_INO = 0x00000100;
|
||||||
const STATX_CHANGE_COOKIE = 0x40000000; // Want/got stx_change_attr
|
/// Want stx_size
|
||||||
|
const STATX_SIZE = 0x00000200;
|
||||||
|
/// Want stx_blocks
|
||||||
|
const STATX_BLOCKS = 0x00000400;
|
||||||
|
/// All of the above (stx_mode, stx_nlink, etc.)
|
||||||
|
const STATX_BASIC_STATS = 0x000007ff;
|
||||||
|
/// Want stx_btime
|
||||||
|
const STATX_BTIME = 0x00000800;
|
||||||
|
/// Deprecated: The same as STATX_BASIC_STATS | STATX_BTIME
|
||||||
|
const STATX_ALL = 0x00000fff;
|
||||||
|
/// Want stx_mnt_id
|
||||||
|
const STATX_MNT_ID = 0x00001000;
|
||||||
|
/// Want stx_dio_mem_align and stx_dio_offset_align
|
||||||
|
const STATX_DIOALIGN = 0x00002000;
|
||||||
|
/// Reserved for future struct statx expansion
|
||||||
|
const STATX_RESERVED = 0x80000000;
|
||||||
|
/// Want/got stx_change_attr
|
||||||
|
const STATX_CHANGE_COOKIE = 0x40000000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user