1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2391e43daSPeter Zijlstra 3*b13772f8SPeter Zijlstra #define CPUPRI_NR_PRIORITIES (MAX_RT_PRIO+1) 4391e43daSPeter Zijlstra 5391e43daSPeter Zijlstra #define CPUPRI_INVALID -1 65e054bcaSDietmar Eggemann #define CPUPRI_NORMAL 0 71b08782cSDietmar Eggemann /* values 1-99 are for RT1-RT99 priorities */ 8*b13772f8SPeter Zijlstra #define CPUPRI_HIGHER 100 9391e43daSPeter Zijlstra 10391e43daSPeter Zijlstra struct cpupri_vec { 11391e43daSPeter Zijlstra atomic_t count; 12391e43daSPeter Zijlstra cpumask_var_t mask; 13391e43daSPeter Zijlstra }; 14391e43daSPeter Zijlstra 15391e43daSPeter Zijlstra struct cpupri { 16391e43daSPeter Zijlstra struct cpupri_vec pri_to_cpu[CPUPRI_NR_PRIORITIES]; 174dac0b63SPeter Zijlstra int *cpu_to_pri; 18391e43daSPeter Zijlstra }; 19391e43daSPeter Zijlstra 20391e43daSPeter Zijlstra #ifdef CONFIG_SMP 21804d402fSQais Yousef int cpupri_find(struct cpupri *cp, struct task_struct *p, 22a1bd02e1SQais Yousef struct cpumask *lowest_mask); 23a1bd02e1SQais Yousef int cpupri_find_fitness(struct cpupri *cp, struct task_struct *p, 24804d402fSQais Yousef struct cpumask *lowest_mask, 25804d402fSQais Yousef bool (*fitness_fn)(struct task_struct *p, int cpu)); 26391e43daSPeter Zijlstra void cpupri_set(struct cpupri *cp, int cpu, int pri); 27391e43daSPeter Zijlstra int cpupri_init(struct cpupri *cp); 28391e43daSPeter Zijlstra void cpupri_cleanup(struct cpupri *cp); 29391e43daSPeter Zijlstra #endif 30