xref: /openbmc/linux/kernel/sched/cpupri.h (revision cdd38c5f1ce4398ec58fec95904b75824daab7b5)
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