| 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 | 
