xref: /linux/kernel/sched/cpupri.h (revision bf76f23aa1c178e9115eba17f699fa726aed669b)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <linux/atomic.h>
3 #include <linux/cpumask.h>
4 #include <linux/sched/rt.h>
5 
6 #define CPUPRI_NR_PRIORITIES	(MAX_RT_PRIO+1)
7 
8 #define CPUPRI_INVALID		-1
9 #define CPUPRI_NORMAL		 0
10 /* values 1-99 are for RT1-RT99 priorities */
11 #define CPUPRI_HIGHER		100
12 
13 struct cpupri_vec {
14 	atomic_t		count;
15 	cpumask_var_t		mask;
16 };
17 
18 struct cpupri {
19 	struct cpupri_vec	pri_to_cpu[CPUPRI_NR_PRIORITIES];
20 	int			*cpu_to_pri;
21 };
22 
23 int  cpupri_find(struct cpupri *cp, struct task_struct *p,
24 		 struct cpumask *lowest_mask);
25 int  cpupri_find_fitness(struct cpupri *cp, struct task_struct *p,
26 			 struct cpumask *lowest_mask,
27 			 bool (*fitness_fn)(struct task_struct *p, int cpu));
28 void cpupri_set(struct cpupri *cp, int cpu, int pri);
29 int  cpupri_init(struct cpupri *cp);
30 void cpupri_cleanup(struct cpupri *cp);
31