static inline int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask) { returntest_and_set_bit(cpumask_check(cpu), cpumask_bits(cpumask)); } 在调用test_and_set_bit之前,有两个宏对 cpu 和 cpumask 进行了处理。 cpumask_check是一个内联函数,检查传入的 cpu 参数是否大于了NR_CPUS...
0) | __irq_set_affinity() { 0) 0.438 us | irq_to_desc(); 0) 0.667 us | _raw_spin_lock_irqsave(); 0) | irq_set_affinity_locked() { 0) | irq_do_set_affinity() { 0) | msi_domain_set_affinity() { 0) | its_set_affinity() { 0) 0.625 us | its_dec_lpi_count.isra...
cpumask_set_cpu(cpu,&__cpu_possible_mask);elsecpumask_clear_cpu(cpu,&__cpu_possible_mask); } 上面是设置cpu1-cpu3的__cpu_possible_mask bit,cpu0(boot cpu)的这个bit是在如下函数里设置的: 4.19/kernel/cpu.c void__init boot_cpu_init(void) {intcpu =smp_processor_id();/*Mark the boo...
内核中对bitmap的一些基本操作: set_bit(nr, *addr) 将addr的第nr位置为1 假设*addr = 0, nr = 3;则执行结果为1000(二进制数) cpumask_set_cpu(unsignedintcpu,structcpumask*dstp) 该函数调用set_bit()将dstp指向的cpumask的第cpu位置1 test_bit() 测试指定的bit位是否为1 cpumask_test_cpu(intcpu...
在Linux内核中,CPU掩码(cpumask)用于表示一组CPU编号,常用于描述进程或任务的亲和性、中断或定时器的分配范围等场景。
cpumask_set_cpu(cpu,&__cpu_active_mask);elsecpumask_clear_cpu(cpu,&__cpu_active_mask); } 调用路径: cpuhp_hp_states[CPUHP_AP_ACTIVE].startup.single//kernel/cpu.c cpu hotplug回调resume_cpus(structcpumask *cpus)//kernel/cpu.c GPL导出的接口,目前只在core_ctl模块中使用sched_cpus_activat...
多cpu下SetThreadAffinityMask运用框架随着多cpu机器的普及时代的到来,大家对机器速度的提升感到欣喜若狂的同时,对cpu的掌控能力越来越差了,也许大家对这块也不是..
* cpu_online_mask/cpu_possible_mask等为const (替换的是存在指针的cpu_online_map/cpu_possible_map)。这意味着只有很少数的情况操作cpu, 否则可以使用新增的set_cpu_online()/set_cpu_possible()或init_cpu_online()/init_cpu_possible() 函数。
pr_info("NUMA: set cpumask cpu %d on node %d\n", active_cpu, node); active_cpu++; Expand Down 2 changes: 1 addition & 1 deletion 2 arch/mips/loongson/loongson-3/smp.c Show comments View file Edit file Delete file This file contains bidirectional Unicode text that may be interpr...
static inline void cpumask_setall(struct cpumask *dstp) { /* bitmap_fill() isn't optimized for compile-time constants */ #if NR_CPUS <= BITS_PER_LONG *cpumask_bits(dstp) = BIT(NR_CPUS) - 1; #else bitmap_fill(cpumask_bits(dstp), nr_cpumask_bits); #endif } /** @@ ...