#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct LinuxKernelSubmissionQueuePollingThreadConfiguration
{
pub thread_runs_on: HyperThread,
pub put_thread_to_sleep_after_milliseconds: Option<NonZeroU32>,
}
impl LinuxKernelSubmissionQueuePollingThreadConfiguration
{
#[inline(always)]
fn configure(configuration: Option<&LinuxKernelSubmissionQueuePollingThreadConfiguration>, mut flags: SetupFlags) -> (u32, u32, SetupFlags)
{
match configuration
{
None => (unsafe_uninitialized(), unsafe_uninitialized(), flags),
Some(&Self { thread_runs_on, put_thread_to_sleep_after_milliseconds }) =>
{
flags |= SetupFlags::SubmissionQueuePoll;
let thread_runs_on: u32 = thread_runs_on.into();
let put_thread_to_sleep_after_milliseconds = match put_thread_to_sleep_after_milliseconds
{
None => unsafe_uninitialized(),
Some(put_thread_to_sleep_after_milliseconds) =>
{
flags |= SetupFlags::SubmissionQueueAffinity;
put_thread_to_sleep_after_milliseconds.get()
}
};
(thread_runs_on, put_thread_to_sleep_after_milliseconds, flags)
}
}
}
}