的cpus_ptr,其实其表示的是当前进程可使用的cpu掩码值,通常不对进程进行taskset等相关设置的话,直接表示cpu_all_mask,可运行在所有cpu上。再通过查找当前cputarget所在的cluster_mask,通过相与的方式,进一步缩小获取下一个idle cpu的方位,而cluster mask在armv8架构上是共享L3tag的,所以从idle选择这样的一个idle cpu...
static void update_tasks_cpumask(struct cpuset *cs) static void update_tasks_cpumask(struct cpuset *cs, struct cpumask *new_cpus) { struct css_task_iter it; struct task_struct *task; @@ -1224,7 +1225,10 @@ static void update_tasks_cpumask(struct cpuset *cs) ...
int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask) 此函数的作用是改变进程struct task_struct *p 执行时所占的cpu资源 其使用的例程如下: 在kernel中的main函数中 /* * init can run on any cpu. */ set_cpus_allowed_ptr(current, cpu_all_mask); 通过此函数可以染...
static void update_tasks_cpumask(struct cpuset *cs) static void update_tasks_cpumask(struct cpuset *cs, struct cpumask *new_cpus) { struct css_task_iter it; struct task_struct *task; @@ -1220,7 +1221,10 @@ static void update_tasks_cpumask(struct cpuset *cs) ...