ptrace_syscalls/group.rs
1use enumflags2::{bitflags, BitFlags};
2
3// Keep in-sync with https://github.com/strace/strace/blob/master/src/sysent.h
4
5#[bitflags]
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7#[repr(u32)]
8pub enum SyscallGroups {
9 /// TF TRACE_FILE
10 /// Trace file-related syscalls.
11 File = 0o000000001,
12 /// TI TRACE_IPC
13 /// Trace IPC-related syscalls.
14 IPC = 0o000000002,
15 /// TN TRACE_NETWORK
16 /// Trace network-related syscalls.
17 Network = 0o000000004,
18 /// TP TRACE_PROCESS
19 /// Trace process-related syscalls.
20 Process = 0o000000010,
21 /// TS TRACE_SIGNAL
22 /// Trace signal-related syscalls.
23 Signal = 0o000000020,
24 /// TD TRACE_DESC
25 /// Trace file descriptor-related syscalls.
26 Desc = 0o000000040,
27 /// TM TRACE_MEMORY
28 /// Trace memory mapping-related syscalls.
29 Memory = 0o000000100,
30 /// TST TRACE_STAT
31 /// Trace {,*_}{,old}{,x}stat{,64} syscalls.
32 Stat = 0o000010000,
33 /// TLST TRACE_LSTAT
34 /// Trace *lstat* syscalls.
35 LStat = 0o000020000,
36 /// TSF TRACE_STATFS
37 /// Trace statfs, statfs64, and statvfs syscalls.
38 StatFs = 0o000040000,
39 /// TFSF TRACE_FSTATFS
40 /// Trace fstatfs, fstatfs64 and fstatvfs syscalls.
41 FStatFs = 0o000100000,
42 /// TSFA TRACE_STATFS_LIKE
43 /// Trace statfs-like, fstatfs-like and ustat syscalls.
44 StatFsLike = 0o000200000,
45 /// TFST TRACE_FSTAT
46 /// Trace *fstat{,at}{,64} syscalls.
47 FStat = 0o000400000,
48 /// TSTA TRACE_STAT_LIKE
49 /// Trace *{,l,f}stat{,x,at}{,64} syscalls.
50 StatLike = 0o001000000,
51 /// PU TRACE_PURE
52 /// Trace getter syscalls with no arguments.
53 Pure = 0o002000000,
54 /// TC TRACE_CREDS
55 /// Trace process credentials-related syscalls.
56 Creds = 0o010000000,
57 /// TCL TRACE_CLOCK
58 /// Trace syscalls reading or modifying system clocks.
59 Clock = 0o020000000,
60}
61
62pub trait SyscallGroupsGetter {
63 fn syscall_groups(&self) -> BitFlags<SyscallGroups>;
64}