Lines Matching +full:8 +full:- +full:cpu
1 // SPDX-License-Identifier: GPL-2.0
14 int sz = cpu__max_cpu() + 8 - 1; in get_cpu_set_size()
21 return sz / 8; in get_cpu_set_size()
28 a->orig_cpus = bitmap_alloc(cpu_set_size * 8); in affinity__setup()
29 if (!a->orig_cpus) in affinity__setup()
30 return -1; in affinity__setup()
31 sched_getaffinity(0, cpu_set_size, (cpu_set_t *)a->orig_cpus); in affinity__setup()
32 a->sched_cpus = bitmap_alloc(cpu_set_size * 8); in affinity__setup()
33 if (!a->sched_cpus) { in affinity__setup()
34 zfree(&a->orig_cpus); in affinity__setup()
35 return -1; in affinity__setup()
37 bitmap_zero((unsigned long *)a->sched_cpus, cpu_set_size); in affinity__setup()
38 a->changed = false; in affinity__setup()
43 * perf_event_open does an IPI internally to the target CPU.
45 * CPU and then set up all events on that CPU, so we amortize
46 * CPU communication.
48 void affinity__set(struct affinity *a, int cpu) in affinity__set() argument
52 if (cpu == -1) in affinity__set()
54 a->changed = true; in affinity__set()
55 set_bit(cpu, a->sched_cpus); in affinity__set()
61 sched_setaffinity(0, cpu_set_size, (cpu_set_t *)a->sched_cpus); in affinity__set()
62 clear_bit(cpu, a->sched_cpus); in affinity__set()
69 if (a->changed) in affinity__cleanup()
70 sched_setaffinity(0, cpu_set_size, (cpu_set_t *)a->orig_cpus); in affinity__cleanup()
71 zfree(&a->sched_cpus); in affinity__cleanup()
72 zfree(&a->orig_cpus); in affinity__cleanup()