Skip to main content

resolve_cpu_affinity_with_override

Function resolve_cpu_affinity_with_override 

Source
pub fn resolve_cpu_affinity_with_override(
    policy: CpuAffinityPolicy,
    inputs: &[CpuAffinityInput],
    default_domain: CpuDomainId,
    explicit_domain: Option<CpuDomainId>,
) -> Result<CpuAffinitySelection, CpuAffinityResolutionError>
Expand description

Resolve CPU affinity with an optional operation-local explicit override.

Explicit placement takes precedence before input-byte accounting or strict mixed-domain validation. Passing None applies the same policy resolution as resolve_cpu_affinity.

§Examples

use tenferro_cpu::{
    resolve_cpu_affinity_with_override, CpuAffinityInput, CpuAffinityPolicy,
    CpuAffinitySelectionReason,
};
use tenferro_tensor::CpuDomainId;

let mixed = [
    CpuAffinityInput { domain: Some(CpuDomainId::new(1)), logical_bytes: 1 },
    CpuAffinityInput { domain: Some(CpuDomainId::new(2)), logical_bytes: 1 },
];
let selected = resolve_cpu_affinity_with_override(
    CpuAffinityPolicy::RequireSingleDomain,
    &mixed,
    CpuDomainId::new(1),
    Some(CpuDomainId::new(9)),
)?;
assert_eq!(selected.domain, CpuDomainId::new(9));
assert_eq!(selected.reason, CpuAffinitySelectionReason::ExplicitOverride);

§Errors

When explicit_domain is None, returns CpuAffinityResolutionError::LogicalByteCountOverflow for an unrepresentable domain byte total or CpuAffinityResolutionError::MultipleKnownDomains when strict policy sees more than one known input domain. A present explicit override bypasses both policy errors.