rustix/backend/linux_raw/thread/
types.rs1use linux_raw_sys::general::membarrier_cmd;
2
3#[derive(Copy, Clone, Eq, PartialEq, Debug)]
11#[repr(u32)]
12#[non_exhaustive]
13pub enum MembarrierCommand {
14 #[doc(alias = "Shared")]
16 #[doc(alias = "MEMBARRIER_CMD_SHARED")]
17 Global = membarrier_cmd::MEMBARRIER_CMD_GLOBAL as _,
18 GlobalExpedited = membarrier_cmd::MEMBARRIER_CMD_GLOBAL_EXPEDITED as _,
20 RegisterGlobalExpedited = membarrier_cmd::MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED as _,
22 PrivateExpedited = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED as _,
24 RegisterPrivateExpedited = membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED as _,
26 PrivateExpeditedSyncCore = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE as _,
28 RegisterPrivateExpeditedSyncCore =
30 membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE as _,
31 PrivateExpeditedRseq = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ as _,
33 RegisterPrivateExpeditedRseq =
35 membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ as _,
36}
37
38pub type RawCpuid = u32;
40
41#[repr(transparent)]
42#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
43pub(crate) struct RawCpuSet {
44 #[cfg(all(target_pointer_width = "32", not(target_arch = "x86_64")))]
45 pub(crate) bits: [u32; 32],
46 #[cfg(not(all(target_pointer_width = "32", not(target_arch = "x86_64"))))]
47 pub(crate) bits: [u64; 16],
48}
49
50#[inline]
51pub(crate) fn raw_cpu_set_new() -> RawCpuSet {
52 #[cfg(all(target_pointer_width = "32", not(target_arch = "x86_64")))]
53 {
54 RawCpuSet { bits: [0; 32] }
55 }
56 #[cfg(not(all(target_pointer_width = "32", not(target_arch = "x86_64"))))]
57 {
58 RawCpuSet { bits: [0; 16] }
59 }
60}
61
62pub(crate) const CPU_SETSIZE: usize = 8 * core::mem::size_of::<RawCpuSet>();