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