type Policy … // IsAlignmentGuaranteed return true if the given policy guarantees that either // the compute resources will be allocated within a NUMA boundary, or the allocation will fail at all. func IsAlignmentGuaranteed(p Policy) bool { … } // Merge a TopologyHints permutation to a single hint by performing a bitwise-AND // of their affinity masks. The hint shall be preferred if all hits in the permutation // are preferred. func mergePermutation(defaultAffinity bitmask.BitMask, permutation []TopologyHint) TopologyHint { … } func filterProvidersHints(providersHints []map[string][]TopologyHint) [][]TopologyHint { … } func narrowestHint(hints []TopologyHint) *TopologyHint { … } func maxOfMinAffinityCounts(filteredHints [][]TopologyHint) int { … } type HintMerger … func NewHintMerger(numaInfo *NUMAInfo, hints [][]TopologyHint, policyName string, opts PolicyOptions) HintMerger { … } func (m HintMerger) compare(current *TopologyHint, candidate *TopologyHint) *TopologyHint { … } func (m HintMerger) Merge() TopologyHint { … } // Iterate over all permutations of hints in 'allProviderHints [][]TopologyHint'. // // This procedure is implemented as a recursive function over the set of hints // in 'allproviderHints[i]'. It applies the function 'callback' to each // permutation as it is found. It is the equivalent of: // // for i := 0; i < len(providerHints[0]); i++ // // for j := 0; j < len(providerHints[1]); j++ // for k := 0; k < len(providerHints[2]); k++ // ... // for z := 0; z < len(providerHints[-1]); z++ // permutation := []TopologyHint{ // providerHints[0][i], // providerHints[1][j], // providerHints[2][k], // ... // providerHints[-1][z] // } // callback(permutation) func iterateAllProviderTopologyHints(allProviderHints [][]TopologyHint, callback func([]TopologyHint)) { … }