调度器38—cpumask

//include/linux/cpumask.h
#define cpu_possible_mask ((const struct cpumask *)&__cpu_possible_mask)
#define cpu_online_mask ((const struct cpumask *)&__cpu_online_mask)
#define cpu_present_mask ((const struct cpumask *)&__cpu_present_mask)
#define cpu_active_mask ((const struct cpumask *)&__cpu_active_mask)

MTk 5.10 BSP中:
/sys/devices/system/cpu/sched_ctl/sched_core_pause_info 打印 cpu_active_mask 的值,offline和isolate都会从中删除cpu对应的bit
/sys/devices/system/cpu/online 打印 cpu_online_mask 的值,只打印online的cpu,是否被isolate不影响

 

补充:

1. cpumask、cpumask_t 和 cpumask_var_t:https://www.cnblogs.com/hellokitty2/p/16919268.html

2. bitmap.c中提供了解析cpumask的函数

static int __init rcu_nocb_setup(char *str)
{
    cpulist_parse(str, rcu_nocb_mask); //从用户字符串中提取cpumask
}
__setup("rcu_nocbs=", rcu_nocb_setup); //rcu_nocbs=0-7

3. cpu_active_mask 的赋值路径

static inline void set_cpu_active(unsigned int cpu, bool active) //include/linux/cpumask.h
{
    if (active)
        cpumask_set_cpu(cpu, &__cpu_active_mask);
    else
        cpumask_clear_cpu(cpu, &__cpu_active_mask);
}

调用路径:

复制代码
        cpuhp_hp_states[CPUHP_AP_ACTIVE].startup.single //kernel/cpu.c cpu hotplug回调
resume_cpus(struct cpumask *cpus) //kernel/cpu.c GPL导出的接口,目前只在core_ctl模块中使用
    sched_cpus_activate(struct cpumask *cpus) //sched/core.c
        for_each_cpu(cpu, cpus)
            sched_cpu_activate(cpu) //sched/core.c
                set_cpu_active(cpu, true);

    pause_cpus //kernel/cpu.c GPL导出的接口,目前只在core_ctl模块中使用
        sched_cpus_deactivate_nosync //sched/core.c
    cpuhp_hp_states[CPUHP_AP_ACTIVE].teardown.single //kernel/cpu.c cpu hotplug回调
        sched_cpu_deactivate //sched/core.c
            _sched_cpu_deactivate //sched/core.c
                set_cpu_active(cpu, false);

            pause_cpus(struct cpumask *cpus) //kernel/cpu.c 如上
                for_each_cpu(cpu, cpus)
                    set_cpu_active(cpu, false);

            resume_cpus(struct cpumask *cpus) //kernel/cpu.c 如上
                for_each_cpu(cpu, cpus)
                    set_cpu_active(cpu, true);
复制代码

 

posted on   Hello-World3  阅读(596)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示