shadow_rs/host/syscall/handler/
fileat.rs1use linux_api::posix_types::kernel_mode_t;
2use shadow_shim_helper_rs::syscall_types::ForeignPtr;
3
4use crate::cshadow;
5use crate::host::syscall::handler::{SyscallContext, SyscallHandler};
6use crate::host::syscall::type_formatting::SyscallStringArg;
7use crate::host::syscall::types::SyscallResult;
8
9impl SyscallHandler {
10    log_syscall!(
11        openat,
12        std::ffi::c_int,
13        std::ffi::c_int,
14        SyscallStringArg,
15        linux_api::fcntl::OFlag,
16        nix::sys::stat::Mode,
17    );
18    pub fn openat(
19        ctx: &mut SyscallContext,
20        _dir_fd: std::ffi::c_int,
21        _path: ForeignPtr<()>,
22        _flags: std::ffi::c_int,
23        _mode: kernel_mode_t,
24    ) -> SyscallResult {
25        Self::legacy_syscall(cshadow::syscallhandler_openat, ctx)
26    }
27
28    log_syscall!(
29        faccessat,
30        std::ffi::c_int,
31        std::ffi::c_int,
32        SyscallStringArg,
33        std::ffi::c_int,
34    );
35    pub fn faccessat(ctx: &mut SyscallContext) -> SyscallResult {
36        Self::legacy_syscall(cshadow::syscallhandler_faccessat, ctx)
37    }
38
39    log_syscall!(
40        faccessat2,
41        std::ffi::c_int,
42        std::ffi::c_int,
43        SyscallStringArg,
44        std::ffi::c_int,
45        std::ffi::c_int
46    );
47    pub fn faccessat2(ctx: &mut SyscallContext) -> SyscallResult {
48        Self::legacy_syscall(cshadow::syscallhandler_faccessat2, ctx)
49    }
50
51    log_syscall!(
52        fchmodat,
53        std::ffi::c_int,
54        std::ffi::c_int,
55        SyscallStringArg,
56        linux_api::types::umode_t
57    );
58    pub fn fchmodat(ctx: &mut SyscallContext) -> SyscallResult {
59        Self::legacy_syscall(cshadow::syscallhandler_fchmodat, ctx)
60    }
61
62    log_syscall!(
63        fchmodat2,
64        std::ffi::c_int,
65        std::ffi::c_int,
66        SyscallStringArg,
67        linux_api::types::umode_t,
68        std::ffi::c_uint
69    );
70    pub fn fchmodat2(ctx: &mut SyscallContext) -> SyscallResult {
71        Self::legacy_syscall(cshadow::syscallhandler_fchmodat2, ctx)
72    }
73
74    log_syscall!(
75        fchownat,
76        std::ffi::c_int,
77        std::ffi::c_int,
78        SyscallStringArg,
79        std::ffi::c_int,
80        std::ffi::c_int,
81        std::ffi::c_int
82    );
83    pub fn fchownat(ctx: &mut SyscallContext) -> SyscallResult {
84        Self::legacy_syscall(cshadow::syscallhandler_fchownat, ctx)
85    }
86
87    log_syscall!(
88        futimesat,
89        std::ffi::c_int,
90        std::ffi::c_int,
91        SyscallStringArg,
92        *const linux_api::time::kernel_old_timeval
93    );
94    pub fn futimesat(ctx: &mut SyscallContext) -> SyscallResult {
95        Self::legacy_syscall(cshadow::syscallhandler_futimesat, ctx)
96    }
97
98    log_syscall!(
99        linkat,
100        std::ffi::c_int,
101        std::ffi::c_int,
102        SyscallStringArg,
103        std::ffi::c_int,
104        SyscallStringArg,
105        std::ffi::c_int
106    );
107    pub fn linkat(ctx: &mut SyscallContext) -> SyscallResult {
108        Self::legacy_syscall(cshadow::syscallhandler_linkat, ctx)
109    }
110
111    log_syscall!(
112        mkdirat,
113        std::ffi::c_int,
114        std::ffi::c_int,
115        SyscallStringArg,
116        linux_api::types::umode_t
117    );
118    pub fn mkdirat(ctx: &mut SyscallContext) -> SyscallResult {
119        Self::legacy_syscall(cshadow::syscallhandler_mkdirat, ctx)
120    }
121
122    log_syscall!(
123        mknodat,
124        std::ffi::c_int,
125        std::ffi::c_int,
126        SyscallStringArg,
127        linux_api::types::umode_t,
128        std::ffi::c_uint
129    );
130    pub fn mknodat(ctx: &mut SyscallContext) -> SyscallResult {
131        Self::legacy_syscall(cshadow::syscallhandler_mknodat, ctx)
132    }
133
134    log_syscall!(
135        readlinkat,
136        std::ffi::c_int,
137        std::ffi::c_int,
138        SyscallStringArg,
139        *const std::ffi::c_char,
140        std::ffi::c_int,
141    );
142    pub fn readlinkat(ctx: &mut SyscallContext) -> SyscallResult {
143        Self::legacy_syscall(cshadow::syscallhandler_readlinkat, ctx)
144    }
145
146    log_syscall!(
147        renameat,
148        std::ffi::c_int,
149        std::ffi::c_int,
150        SyscallStringArg,
151        std::ffi::c_int,
152        SyscallStringArg
153    );
154    pub fn renameat(ctx: &mut SyscallContext) -> SyscallResult {
155        Self::legacy_syscall(cshadow::syscallhandler_renameat, ctx)
156    }
157
158    log_syscall!(
159        renameat2,
160        std::ffi::c_int,
161        std::ffi::c_int,
162        SyscallStringArg,
163        std::ffi::c_int,
164        SyscallStringArg,
165        std::ffi::c_int
166    );
167    pub fn renameat2(ctx: &mut SyscallContext) -> SyscallResult {
168        Self::legacy_syscall(cshadow::syscallhandler_renameat2, ctx)
169    }
170
171    log_syscall!(
172        symlinkat,
173        std::ffi::c_int,
174        SyscallStringArg,
175        std::ffi::c_int,
176        SyscallStringArg
177    );
178    pub fn symlinkat(ctx: &mut SyscallContext) -> SyscallResult {
179        Self::legacy_syscall(cshadow::syscallhandler_symlinkat, ctx)
180    }
181
182    log_syscall!(
183        unlinkat,
184        std::ffi::c_int,
185        std::ffi::c_int,
186        SyscallStringArg,
187        std::ffi::c_int
188    );
189    pub fn unlinkat(ctx: &mut SyscallContext) -> SyscallResult {
190        Self::legacy_syscall(cshadow::syscallhandler_unlinkat, ctx)
191    }
192
193    log_syscall!(
194        utimensat,
195        std::ffi::c_int,
196        std::ffi::c_int,
197        SyscallStringArg,
198        *const linux_api::time::kernel_timespec,
199        std::ffi::c_int
200    );
201    pub fn utimensat(ctx: &mut SyscallContext) -> SyscallResult {
202        Self::legacy_syscall(cshadow::syscallhandler_utimensat, ctx)
203    }
204}