tinysyscall/interface/
types.rs

1use bitflags::bitflags;
2
3bitflags! {
4    #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
5    pub struct OpenFlags: usize {
6        const Read = 0b00000000;
7        const Write = 0b00000001;
8        const RW = 0b00000010;
9        const Create = 0b00000100;
10    }
11}
12
13// Memory protection flags
14bitflags! {
15    pub struct MemProt: i32 {
16        const NONE = 0;
17        const READ = 1;
18        const WRITE = 2;
19        const EXEC = 4;
20    }
21}
22
23// Mapping flags
24bitflags! {
25    pub struct MemFlags: u32 {
26        const SHARED = 1;
27        const SHARED_VALIDATE = 3;
28        const PRIVATE = 2;
29        const ANONYMOUS = 0x20;
30        const PRIVATE_EXCEPT_UFFD = 0x8000_0000;
31    }
32}
33
34pub struct TimeSpec {
35    pub tv_sec: usize,
36    pub tv_nsec: isize,
37}
38
39#[allow(dead_code)]
40#[derive(Debug)]
41pub struct Stat {
42    pub dev: u64, // device ID of device containing file
43    pub ino: u64, // file serial number
44    pub mode: u32, // mode of file (see below)
45    pub nlink: u64, // number of hard links
46    pub uid: u32, // user ID of the file
47    pub gid: u32, // group ID of the file
48    pub rdev: u64,
49    pub size: i64, // total size, in bytes
50    pub blksize: i64, // blocksize for file system I/O
51    pub blocks: i64, // number of 512B blocks allocated
52    pub atime: i64, // time of last access
53    pub mtime: i64, // time of last modification
54    pub ctime: i64, // time of last status change
55}
56
57impl Stat {
58    pub fn default() -> Self {
59        Stat {
60            dev: 0,
61            ino: 0,
62            mode: 0,
63            nlink: 0,
64            uid: 0,
65            gid: 0,
66            rdev: 0,
67            size: 0,
68            blksize: 0,
69            blocks: 0,
70            atime: 0,
71            mtime: 0,
72            ctime: 0,
73        }
74    }
75}