17 static constexpr size_t MaximumCpus = 1024;
18 static constexpr size_t WordBits =
sizeof(
unsigned long) * 8;
19 static constexpr size_t WordCount = MaximumCpus / WordBits;
20 static constexpr size_t ByteCount = MaximumCpus / 8;
21 unsigned long words[WordCount] = {};
26 const void* data()
const {
29 bool contains(
size_t cpu)
const {
30 return cpu < MaximumCpus && (words[cpu / WordBits] & (1UL << (cpu % WordBits)));
32 void set(
size_t cpu) {
33 if (cpu < MaximumCpus)
34 words[cpu / WordBits] |= 1UL << (cpu % WordBits);
37 for (
size_t i = 0; i < WordCount; ++i)
43 for (
size_t i = 0; i < WordCount; ++i)
44 words[i] &= other.words[i];
56enum class AffinityResult { Success, Invalid,
Terminal, Pinned, Busy, Unsupported };