summaryrefslogtreecommitdiffstats
path: root/vendor/rustix/src/imp/linux_raw/process/types.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/rustix/src/imp/linux_raw/process/types.rs')
-rw-r--r--vendor/rustix/src/imp/linux_raw/process/types.rs246
1 files changed, 246 insertions, 0 deletions
diff --git a/vendor/rustix/src/imp/linux_raw/process/types.rs b/vendor/rustix/src/imp/linux_raw/process/types.rs
new file mode 100644
index 000000000..53e2c7db1
--- /dev/null
+++ b/vendor/rustix/src/imp/linux_raw/process/types.rs
@@ -0,0 +1,246 @@
+use super::super::c;
+use linux_raw_sys::general::membarrier_cmd;
+
+/// A command for use with [`membarrier`] and [`membarrier_cpu`].
+///
+/// For `MEMBARRIER_CMD_QUERY`, see [`membarrier_query`].
+///
+/// [`membarrier`]: crate::process::membarrier
+/// [`membarrier_cpu`]: crate::process::membarrier_cpu
+/// [`membarrier_query`]: crate::process::membarrier_query
+#[derive(Copy, Clone, Eq, PartialEq, Debug)]
+#[repr(u32)]
+pub enum MembarrierCommand {
+ /// `MEMBARRIER_CMD_GLOBAL`
+ #[doc(alias = "Shared")]
+ #[doc(alias = "MEMBARRIER_CMD_SHARED")]
+ Global = membarrier_cmd::MEMBARRIER_CMD_GLOBAL as _,
+ /// `MEMBARRIER_CMD_GLOBAL_EXPEDITED`
+ GlobalExpedited = membarrier_cmd::MEMBARRIER_CMD_GLOBAL_EXPEDITED as _,
+ /// `MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED`
+ RegisterGlobalExpedited = membarrier_cmd::MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED as _,
+ /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED`
+ PrivateExpedited = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED as _,
+ /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED`
+ RegisterPrivateExpedited = membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED as _,
+ /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE`
+ PrivateExpeditedSyncCore = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE as _,
+ /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE`
+ RegisterPrivateExpeditedSyncCore =
+ membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE as _,
+ /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
+ PrivateExpeditedRseq = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ as _,
+ /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
+ RegisterPrivateExpeditedRseq =
+ membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ as _,
+}
+
+/// A resource value for use with [`getrlimit`], [`setrlimit`], and
+/// [`prlimit`].
+///
+/// [`getrlimit`]: crate::process::getrlimit
+/// [`setrlimit`]: crate::process::setrlimit
+/// [`prlimit`]: crate::process::prlimit
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+#[repr(u32)]
+pub enum Resource {
+ /// `RLIMIT_CPU`
+ Cpu = linux_raw_sys::general::RLIMIT_CPU,
+ /// `RLIMIT_FSIZE`
+ Fsize = linux_raw_sys::general::RLIMIT_FSIZE,
+ /// `RLIMIT_DATA`
+ Data = linux_raw_sys::general::RLIMIT_DATA,
+ /// `RLIMIT_STACK`
+ Stack = linux_raw_sys::general::RLIMIT_STACK,
+ /// `RLIMIT_CORE`
+ Core = linux_raw_sys::general::RLIMIT_CORE,
+ /// `RLIMIT_RSS`
+ Rss = linux_raw_sys::general::RLIMIT_RSS,
+ /// `RLIMIT_NPROC`
+ Nproc = linux_raw_sys::general::RLIMIT_NPROC,
+ /// `RLIMIT_NOFILE`
+ Nofile = linux_raw_sys::general::RLIMIT_NOFILE,
+ /// `RLIMIT_MEMLOCK`
+ Memlock = linux_raw_sys::general::RLIMIT_MEMLOCK,
+ /// `RLIMIT_AS`
+ As = linux_raw_sys::general::RLIMIT_AS,
+ /// `RLIMIT_LOCKS`
+ Locks = linux_raw_sys::general::RLIMIT_LOCKS,
+ /// `RLIMIT_SIGPENDING`
+ Sigpending = linux_raw_sys::general::RLIMIT_SIGPENDING,
+ /// `RLIMIT_MSGQUEUE`
+ Msgqueue = linux_raw_sys::general::RLIMIT_MSGQUEUE,
+ /// `RLIMIT_NICE`
+ Nice = linux_raw_sys::general::RLIMIT_NICE,
+ /// `RLIMIT_RTPRIO`
+ Rtprio = linux_raw_sys::general::RLIMIT_RTPRIO,
+ /// `RLIMIT_RTTIME`
+ Rttime = linux_raw_sys::general::RLIMIT_RTTIME,
+}
+
+/// A signal number for use with [`kill_process`] and [`kill_process_group`].
+///
+/// [`kill_process`]: crate::process::kill_process
+/// [`kill_process_group`]: crate::process::kill_process_group
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+#[repr(u32)]
+pub enum Signal {
+ /// `SIGHUP`
+ Hup = linux_raw_sys::general::SIGHUP,
+ /// `SIGINT`
+ Int = linux_raw_sys::general::SIGINT,
+ /// `SIGQUIT`
+ Quit = linux_raw_sys::general::SIGQUIT,
+ /// `SIGILL`
+ Ill = linux_raw_sys::general::SIGILL,
+ /// `SIGTRAP`
+ Trap = linux_raw_sys::general::SIGTRAP,
+ /// `SIGABRT`, aka `SIGIOT`
+ #[doc(alias = "Iot")]
+ #[doc(alias = "Abrt")]
+ Abort = linux_raw_sys::general::SIGABRT,
+ /// `SIGBUS`
+ Bus = linux_raw_sys::general::SIGBUS,
+ /// `SIGFPE`
+ Fpe = linux_raw_sys::general::SIGFPE,
+ /// `SIGKILL`
+ Kill = linux_raw_sys::general::SIGKILL,
+ /// `SIGUSR1`
+ Usr1 = linux_raw_sys::general::SIGUSR1,
+ /// `SIGSEGV`
+ Segv = linux_raw_sys::general::SIGSEGV,
+ /// `SIGUSR2`
+ Usr2 = linux_raw_sys::general::SIGUSR2,
+ /// `SIGPIPE`
+ Pipe = linux_raw_sys::general::SIGPIPE,
+ /// `SIGALRM`
+ #[doc(alias = "Alrm")]
+ Alarm = linux_raw_sys::general::SIGALRM,
+ /// `SIGTERM`
+ Term = linux_raw_sys::general::SIGTERM,
+ /// `SIGSTKFLT`
+ #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
+ Stkflt = linux_raw_sys::general::SIGSTKFLT,
+ /// `SIGCHLD`
+ #[doc(alias = "Chld")]
+ Child = linux_raw_sys::general::SIGCHLD,
+ /// `SIGCONT`
+ Cont = linux_raw_sys::general::SIGCONT,
+ /// `SIGSTOP`
+ Stop = linux_raw_sys::general::SIGSTOP,
+ /// `SIGTSTP`
+ Tstp = linux_raw_sys::general::SIGTSTP,
+ /// `SIGTTIN`
+ Ttin = linux_raw_sys::general::SIGTTIN,
+ /// `SIGTTOU`
+ Ttou = linux_raw_sys::general::SIGTTOU,
+ /// `SIGURG`
+ Urg = linux_raw_sys::general::SIGURG,
+ /// `SIGXCPU`
+ Xcpu = linux_raw_sys::general::SIGXCPU,
+ /// `SIGXFSZ`
+ Xfsz = linux_raw_sys::general::SIGXFSZ,
+ /// `SIGVTALRM`
+ #[doc(alias = "Vtalrm")]
+ Vtalarm = linux_raw_sys::general::SIGVTALRM,
+ /// `SIGPROF`
+ Prof = linux_raw_sys::general::SIGPROF,
+ /// `SIGWINCH`
+ Winch = linux_raw_sys::general::SIGWINCH,
+ /// `SIGIO`, aka `SIGPOLL`
+ #[doc(alias = "Poll")]
+ Io = linux_raw_sys::general::SIGIO,
+ /// `SIGPWR`
+ #[doc(alias = "Pwr")]
+ Power = linux_raw_sys::general::SIGPWR,
+ /// `SIGSYS`, aka `SIGUNUSED`
+ #[doc(alias = "Unused")]
+ Sys = linux_raw_sys::general::SIGSYS,
+ /// `SIGRTMIN`
+ Rtmin = linux_raw_sys::general::SIGRTMIN,
+}
+
+impl Signal {
+ /// Convert a raw signal number into a `Signal`, if possible.
+ pub fn from_raw(sig: i32) -> Option<Self> {
+ match sig as _ {
+ linux_raw_sys::general::SIGHUP => Some(Self::Hup),
+ linux_raw_sys::general::SIGINT => Some(Self::Int),
+ linux_raw_sys::general::SIGQUIT => Some(Self::Quit),
+ linux_raw_sys::general::SIGILL => Some(Self::Ill),
+ linux_raw_sys::general::SIGTRAP => Some(Self::Trap),
+ linux_raw_sys::general::SIGABRT => Some(Self::Abort),
+ linux_raw_sys::general::SIGBUS => Some(Self::Bus),
+ linux_raw_sys::general::SIGFPE => Some(Self::Fpe),
+ linux_raw_sys::general::SIGKILL => Some(Self::Kill),
+ linux_raw_sys::general::SIGUSR1 => Some(Self::Usr1),
+ linux_raw_sys::general::SIGSEGV => Some(Self::Segv),
+ linux_raw_sys::general::SIGUSR2 => Some(Self::Usr2),
+ linux_raw_sys::general::SIGPIPE => Some(Self::Pipe),
+ linux_raw_sys::general::SIGALRM => Some(Self::Alarm),
+ linux_raw_sys::general::SIGTERM => Some(Self::Term),
+ #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
+ linux_raw_sys::general::SIGSTKFLT => Some(Self::Stkflt),
+ linux_raw_sys::general::SIGCHLD => Some(Self::Child),
+ linux_raw_sys::general::SIGCONT => Some(Self::Cont),
+ linux_raw_sys::general::SIGSTOP => Some(Self::Stop),
+ linux_raw_sys::general::SIGTSTP => Some(Self::Tstp),
+ linux_raw_sys::general::SIGTTIN => Some(Self::Ttin),
+ linux_raw_sys::general::SIGTTOU => Some(Self::Ttou),
+ linux_raw_sys::general::SIGURG => Some(Self::Urg),
+ linux_raw_sys::general::SIGXCPU => Some(Self::Xcpu),
+ linux_raw_sys::general::SIGXFSZ => Some(Self::Xfsz),
+ linux_raw_sys::general::SIGVTALRM => Some(Self::Vtalarm),
+ linux_raw_sys::general::SIGPROF => Some(Self::Prof),
+ linux_raw_sys::general::SIGWINCH => Some(Self::Winch),
+ linux_raw_sys::general::SIGIO => Some(Self::Io),
+ linux_raw_sys::general::SIGPWR => Some(Self::Power),
+ linux_raw_sys::general::SIGSYS => Some(Self::Sys),
+ linux_raw_sys::general::SIGRTMIN => Some(Self::Rtmin),
+ _ => None,
+ }
+ }
+}
+
+/// `EXIT_SUCCESS`
+pub const EXIT_SUCCESS: c::c_int = 0;
+/// `EXIT_FAILURE`
+pub const EXIT_FAILURE: c::c_int = 1;
+/// The status value of a child terminated with `SIGABRT`.
+pub const EXIT_SIGNALED_SIGABRT: c::c_int = 128 + linux_raw_sys::general::SIGABRT as i32;
+
+/// A process identifier as a raw integer.
+pub type RawPid = u32;
+/// A non-zero process identifier as a raw non-zero integer.
+pub type RawNonZeroPid = core::num::NonZeroU32;
+/// A group identifier as a raw integer.
+pub type RawGid = u32;
+/// A user identifier as a raw integer.
+pub type RawUid = u32;
+/// A CPU identifier as a raw integer.
+pub type RawCpuid = u32;
+
+pub(crate) type RawUname = linux_raw_sys::general::new_utsname;
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+pub(crate) struct RawCpuSet {
+ #[cfg(all(target_pointer_width = "32", not(target_arch = "x86_64")))]
+ pub(crate) bits: [u32; 32],
+ #[cfg(not(all(target_pointer_width = "32", not(target_arch = "x86_64"))))]
+ pub(crate) bits: [u64; 16],
+}
+
+#[inline]
+pub(crate) fn raw_cpu_set_new() -> RawCpuSet {
+ #[cfg(all(target_pointer_width = "32", not(target_arch = "x86_64")))]
+ {
+ RawCpuSet { bits: [0; 32] }
+ }
+ #[cfg(not(all(target_pointer_width = "32", not(target_arch = "x86_64"))))]
+ {
+ RawCpuSet { bits: [0; 16] }
+ }
+}
+
+pub(crate) const CPU_SETSIZE: usize = 8 * core::mem::size_of::<RawCpuSet>();