Lines Matching full:mask
24 class Mask : public KMPAffinity::Mask {
25 hwloc_cpuset_t mask; variable
28 Mask() { in Mask() function
29 mask = hwloc_bitmap_alloc(); in Mask()
32 ~Mask() { hwloc_bitmap_free(mask); } in ~Mask()
33 void set(int i) override { hwloc_bitmap_set(mask, i); } in set()
34 bool is_set(int i) const override { return hwloc_bitmap_isset(mask, i); } in is_set()
35 void clear(int i) override { hwloc_bitmap_clr(mask, i); } in clear()
36 void zero() override { hwloc_bitmap_zero(mask); } in zero()
37 bool empty() const override { return hwloc_bitmap_iszero(mask); } in empty()
38 void copy(const KMPAffinity::Mask *src) override { in copy()
39 const Mask *convert = static_cast<const Mask *>(src); in copy()
40 hwloc_bitmap_copy(mask, convert->mask); in copy()
42 void bitwise_and(const KMPAffinity::Mask *rhs) override { in bitwise_and()
43 const Mask *convert = static_cast<const Mask *>(rhs); in bitwise_and()
44 hwloc_bitmap_and(mask, mask, convert->mask); in bitwise_and()
46 void bitwise_or(const KMPAffinity::Mask *rhs) override { in bitwise_or()
47 const Mask *convert = static_cast<const Mask *>(rhs); in bitwise_or()
48 hwloc_bitmap_or(mask, mask, convert->mask); in bitwise_or()
50 void bitwise_not() override { hwloc_bitmap_not(mask, mask); } in bitwise_not()
51 bool is_equal(const KMPAffinity::Mask *rhs) const override { in is_equal()
52 const Mask *convert = static_cast<const Mask *>(rhs); in is_equal()
53 return hwloc_bitmap_isequal(mask, convert->mask); in is_equal()
55 int begin() const override { return hwloc_bitmap_first(mask); } in begin()
58 return hwloc_bitmap_next(mask, previous); in next()
64 hwloc_get_cpubind(__kmp_hwloc_topology, mask, HWLOC_CPUBIND_THREAD); in get_system_affinity()
79 hwloc_set_cpubind(__kmp_hwloc_topology, mask, HWLOC_CPUBIND_THREAD); in set_system_affinity()
99 retval = hwloc_set_cpubind(__kmp_hwloc_topology, mask, in set_process_affinity()
119 unsigned long first_32_bits = hwloc_bitmap_to_ith_ulong(mask, i * 2); in get_proc_group()
121 hwloc_bitmap_to_ith_ulong(mask, i * 2 + 1); in get_proc_group()
169 KMPAffinity::Mask *mask; in bind_thread() local
170 KMP_CPU_ALLOC_ON_STACK(mask); in bind_thread()
171 KMP_CPU_ZERO(mask); in bind_thread()
172 KMP_CPU_SET(which, mask); in bind_thread()
173 __kmp_set_system_affinity(mask, TRUE); in bind_thread()
174 KMP_CPU_FREE_FROM_STACK(mask); in bind_thread()
176 KMPAffinity::Mask *allocate_mask() override { return new Mask(); } in allocate_mask()
177 void deallocate_mask(KMPAffinity::Mask *m) override { delete m; } in deallocate_mask()
178 KMPAffinity::Mask *allocate_mask_array(int num) override { in allocate_mask_array()
179 return new Mask[num]; in allocate_mask_array()
181 void deallocate_mask_array(KMPAffinity::Mask *array) override { in deallocate_mask_array()
182 Mask *hwloc_array = static_cast<Mask *>(array); in deallocate_mask_array()
185 KMPAffinity::Mask *index_mask_array(KMPAffinity::Mask *array, in index_mask_array()
187 Mask *hwloc_array = static_cast<Mask *>(array); in index_mask_array()
329 class Mask : public KMPAffinity::Mask {
339 mask_t *mask;
340 Mask() { mask = (mask_t *)__kmp_allocate(__kmp_affin_mask_size); } in Mask() function
341 ~Mask() { in ~Mask()
342 if (mask) in ~Mask()
343 __kmp_free(mask); in ~Mask()
346 mask[i / BITS_PER_MASK_T] |= (ONE << (i % BITS_PER_MASK_T)); in set()
349 return (mask[i / BITS_PER_MASK_T] & (ONE << (i % BITS_PER_MASK_T))); in is_set()
352 mask[i / BITS_PER_MASK_T] &= ~(ONE << (i % BITS_PER_MASK_T)); in clear()
357 mask[i] = (mask_t)0; in zero()
362 if (mask[i] != (mask_t)0) in empty()
366 void copy(const KMPAffinity::Mask *src) override { in copy()
367 const Mask *convert = static_cast<const Mask *>(src); in copy()
370 mask[i] = convert->mask[i]; in copy()
372 void bitwise_and(const KMPAffinity::Mask *rhs) override { in bitwise_and()
373 const Mask *convert = static_cast<const Mask *>(rhs); in bitwise_and()
376 mask[i] &= convert->mask[i]; in bitwise_and()
378 void bitwise_or(const KMPAffinity::Mask *rhs) override { in bitwise_or()
379 const Mask *convert = static_cast<const Mask *>(rhs); in bitwise_or()
382 mask[i] |= convert->mask[i]; in bitwise_or()
387 mask[i] = ~(mask[i]); in bitwise_not()
389 bool is_equal(const KMPAffinity::Mask *rhs) const override { in is_equal()
390 const Mask *convert = static_cast<const Mask *>(rhs); in is_equal()
393 if (mask[i] != convert->mask[i]) in is_equal()
416 // This routine is only used to get the full mask.
423 // Set the mask with all CPUs that are available. in get_system_affinity()
438 // we can bind the thread to CPUs specified by the mask not others. in set_system_affinity()
483 syscall(__NR_sched_getaffinity, 0, __kmp_affin_mask_size, mask); in get_system_affinity()
486 reinterpret_cast<cpuset_t *>(mask)); in get_system_affinity()
504 syscall(__NR_sched_setaffinity, 0, __kmp_affin_mask_size, mask); in set_system_affinity()
507 reinterpret_cast<cpuset_t *>(mask)); in set_system_affinity()
526 KMPAffinity::Mask *allocate_mask() override { in allocate_mask()
527 KMPNativeAffinity::Mask *retval = new Mask(); in allocate_mask()
530 void deallocate_mask(KMPAffinity::Mask *m) override { in deallocate_mask()
531 KMPNativeAffinity::Mask *native_mask = in deallocate_mask()
532 static_cast<KMPNativeAffinity::Mask *>(m); in deallocate_mask()
535 KMPAffinity::Mask *allocate_mask_array(int num) override { in allocate_mask_array()
536 return new Mask[num]; in allocate_mask_array()
538 void deallocate_mask_array(KMPAffinity::Mask *array) override { in deallocate_mask_array()
539 Mask *linux_array = static_cast<Mask *>(array); in deallocate_mask_array()
542 KMPAffinity::Mask *index_mask_array(KMPAffinity::Mask *array, in index_mask_array()
544 Mask *linux_array = static_cast<Mask *>(array); in index_mask_array()
554 class Mask : public KMPAffinity::Mask {
557 mask_t *mask; variable
560 Mask() { in Mask() function
561 mask = (mask_t *)__kmp_allocate(sizeof(mask_t) * __kmp_num_proc_groups); in Mask()
563 ~Mask() { in ~Mask()
564 if (mask) in ~Mask()
565 __kmp_free(mask); in ~Mask()
568 mask[i / BITS_PER_MASK_T] |= ((mask_t)1 << (i % BITS_PER_MASK_T)); in set()
571 return (mask[i / BITS_PER_MASK_T] & ((mask_t)1 << (i % BITS_PER_MASK_T))); in is_set()
574 mask[i / BITS_PER_MASK_T] &= ~((mask_t)1 << (i % BITS_PER_MASK_T)); in clear()
578 mask[i] = 0; in zero()
582 if (mask[i]) in empty()
586 void copy(const KMPAffinity::Mask *src) override { in copy()
587 const Mask *convert = static_cast<const Mask *>(src); in copy()
589 mask[i] = convert->mask[i]; in copy()
591 void bitwise_and(const KMPAffinity::Mask *rhs) override { in bitwise_and()
592 const Mask *convert = static_cast<const Mask *>(rhs); in bitwise_and()
594 mask[i] &= convert->mask[i]; in bitwise_and()
596 void bitwise_or(const KMPAffinity::Mask *rhs) override { in bitwise_or()
597 const Mask *convert = static_cast<const Mask *>(rhs); in bitwise_or()
599 mask[i] |= convert->mask[i]; in bitwise_or()
603 mask[i] = ~(mask[i]); in bitwise_not()
605 bool is_equal(const KMPAffinity::Mask *rhs) const override { in is_equal()
606 const Mask *convert = static_cast<const Mask *>(rhs); in is_equal()
608 if (mask[i] != convert->mask[i]) in is_equal()
627 if (!SetProcessAffinityMask(GetCurrentProcess(), *mask)) { in set_process_affinity()
640 // Check for a valid mask. in set_system_affinity()
652 ga.Mask = mask[group]; in set_system_affinity()
665 if (!SetThreadAffinityMask(GetCurrentThread(), *mask)) { in set_system_affinity()
690 (ga.Mask == 0)) { in get_system_affinity()
693 mask[ga.Group] = ga.Mask; in get_system_affinity()
721 *mask = retval; in get_system_affinity()
731 if (mask[i] == 0) in get_proc_group()
744 KMPAffinity::Mask *allocate_mask() override { return new Mask(); } in allocate_mask()
745 void deallocate_mask(KMPAffinity::Mask *m) override { delete m; } in deallocate_mask()
746 KMPAffinity::Mask *allocate_mask_array(int num) override { in allocate_mask_array()
747 return new Mask[num]; in allocate_mask_array()
749 void deallocate_mask_array(KMPAffinity::Mask *array) override { in deallocate_mask_array()
750 Mask *windows_array = static_cast<Mask *>(array); in deallocate_mask_array()
753 KMPAffinity::Mask *index_mask_array(KMPAffinity::Mask *array, in index_mask_array()
755 Mask *windows_array = static_cast<Mask *>(array); in index_mask_array()
984 bool restrict_to_mask(const kmp_affin_mask_t *mask);