shadow_rs/host/syscall/handler/
select.rs

1use shadow_shim_helper_rs::syscall_types::ForeignPtr;
2
3use crate::cshadow as c;
4use crate::host::syscall::handler::{SyscallContext, SyscallHandler};
5use crate::host::syscall::types::SyscallError;
6
7impl SyscallHandler {
8    log_syscall!(
9        select,
10        /* rv */ std::ffi::c_int,
11        /* n */ std::ffi::c_int,
12        /* inp */ *const std::ffi::c_void,
13        /* outp */ *const std::ffi::c_void,
14        /* exp */ *const std::ffi::c_void,
15        /* tvp */ *const linux_api::time::kernel_old_timeval,
16    );
17    pub fn select(
18        ctx: &mut SyscallContext,
19        _n: std::ffi::c_int,
20        _inp: ForeignPtr<linux_api::posix_types::kernel_fd_set>,
21        _outp: ForeignPtr<linux_api::posix_types::kernel_fd_set>,
22        _exp: ForeignPtr<linux_api::posix_types::kernel_fd_set>,
23        _tvp: ForeignPtr<linux_api::time::kernel_old_timeval>,
24    ) -> Result<std::ffi::c_int, SyscallError> {
25        Self::legacy_syscall(c::syscallhandler_select, ctx)
26    }
27
28    log_syscall!(
29        pselect6,
30        /* rv */ std::ffi::c_int,
31        /* n */ std::ffi::c_int,
32        /* inp */ *const std::ffi::c_void,
33        /* outp */ *const std::ffi::c_void,
34        /* exp */ *const std::ffi::c_void,
35        /* tsp */ *const linux_api::time::kernel_timespec,
36        /* sig */ *const std::ffi::c_void,
37    );
38    pub fn pselect6(
39        ctx: &mut SyscallContext,
40        _n: std::ffi::c_int,
41        _inp: ForeignPtr<linux_api::posix_types::kernel_fd_set>,
42        _outp: ForeignPtr<linux_api::posix_types::kernel_fd_set>,
43        _exp: ForeignPtr<linux_api::posix_types::kernel_fd_set>,
44        _tsp: ForeignPtr<linux_api::time::kernel_timespec>,
45        _sig: ForeignPtr<()>,
46    ) -> Result<std::ffi::c_int, SyscallError> {
47        Self::legacy_syscall(c::syscallhandler_pselect6, ctx)
48    }
49}