#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(nightly_tls_active, feature(thread_local))]
#![deny(unsafe_op_in_unsafe_fn)]
#![deny(missing_docs)]
#[cfg(feature = "std")]
extern crate std;
mod law;
mod query;
mod topology;
#[cfg(feature = "melinoe")]
mod branded;
#[cfg(feature = "melinoe")]
pub use branded::{
sync_region_placement_scope, thread_local_placement_scope, ConstNumaNodePlacement,
ConstNumaPinnedCell, ConstNumaPinnedCellRef, ConstNumaPinnedSlice, ConstNumaPinnedSliceRef,
ConstPinnedCell, ConstPinnedSlice, ConstThreadLocalNumaPlacement, NumaNodePlacement,
NumaPinnedCell, NumaPinnedCellRef, NumaPinnedSlice, NumaPinnedSliceRef, PinnedCell,
PinnedSlice, SyncRegionPlacement, ThreadLocalNumaPlacement, ThreadLocalPlacement,
};
pub use law::{
LocalityDomainId, MemoryTier, NumaBucketIndex, NumaNodeId, PlacementHint, TopologyEpoch,
WorkerId,
};
pub use query::{
current_numa_node, current_processor, refresh_current_numa_node, try_current_numa_node,
};
#[cfg(feature = "std")]
pub use topology::{bind_current_thread, BindError};
pub use topology::{
CacheLevel, CoreId, CpuEfficiencyView, CpuSmtView, CpuTopology, EfficiencyClass,
GpuDeviceProperties, GpuTopology, NumaNode, TpuDeviceProperties, TpuTopology,
};
#[cfg(windows)]
pub use topology::{ProcessorAffinityGroups, ProcessorGroupAffinity};
#[cfg(any(test, feature = "testing"))]
pub use topology::{
build_adjacent_nodes, build_default_distance_row, build_node_to_index, build_processor_to_node,
};