#[derive(Debug)]
pub enum EventAttachment<'file_descriptor>
{
AllProcessesSpecificHyperThread(HyperThread),
SpecificProcessAllHyperThreads(ProcessIdentifierChoice),
SpecificProcessAndSpecificHyperThread(ProcessIdentifierChoice, HyperThread),
SpecificCgroupAllHyperThreads(&'file_descriptor CgroupFileDescriptor),
SpecificCgroupAndSpecificHyperThread(&'file_descriptor CgroupFileDescriptor, HyperThread),
}
impl<'file_descriptor> EventAttachment<'file_descriptor>
{
#[inline(always)]
pub(crate) fn to_values(self) -> (i32, i32, u64)
{
use self::EventAttachment::*;
match self
{
AllProcessesSpecificHyperThread(hyper_thread) => (-1, hyper_thread.into(), PERF_FLAG_FD_CLOEXEC),
SpecificProcessAllHyperThreads(process_identifier) => (process_identifier.into(), -1, PERF_FLAG_FD_CLOEXEC),
SpecificProcessAndSpecificHyperThread(process_identifier, hyper_thread) => (process_identifier.into(), hyper_thread.into(), PERF_FLAG_FD_CLOEXEC),
SpecificCgroupAllHyperThreads(cgroup_file_descriptor) => (cgroup_file_descriptor.as_raw_fd(), -1, PERF_FLAG_FD_CLOEXEC | PERF_FLAG_PID_CGROUP),
SpecificCgroupAndSpecificHyperThread(cgroup_file_descriptor, hyper_thread) => (cgroup_file_descriptor.as_raw_fd(), hyper_thread.into(), PERF_FLAG_FD_CLOEXEC | PERF_FLAG_PID_CGROUP),
}
}
}