一、数据结构
1.root_domain初始化函数调用关系
start_kernel()
\-sched_init(void)
\-init_defrootdomain();
\-init_rootdomain(&def_root_domain)
start_kernel()
\-arch_call_rest_init()
\-rest_init()
\-kernel_init
\-kernel_init_freeable()
\-sched_init_smp()
\-sched_init_domains(cpumask *cpu_active_mask)
\-build_sched_domains(cpumask *cpu_map, NULL)
\-__visit_domain_allocation_hell(struct s_data *d, const struct cpumask *cpu_map)
\-d->rd = alloc_rootdomain()
\-init_rootdomain(rd)
2.perf_domain初始化函数调用关系
rebuild_sched_domains()
update_cpumasks_hier()
update_relax_domain_level()
update_prstate()
update_flag()
\-rebuild_sched_domains_locked(void)
\-partition_and_rebuild_sched_domains(ndoms, doms, attr) /*kernel/cgroup/cpuset.c*/
\-partition_sched_domains_locked(ndoms_new, doms_new, dattr_new)
\-build_perf_domains(const struct cpumask *cpu_map)
cpuset_cpu_active(void)
cpuset_cpu_inactive(unsigned int cpu)
\-partition_sched_domains(1, NULL, NULL) /*kernel/sched/topology.c* if(cpuhp_tasks_frozen)*/
\-partition_sched_domains_locked()
\-build_perf_domains(const struct cpumask *cpu_map)