| b.liu | e958203 | 2025-04-17 19:18:16 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | |
| 3 | #define CPUPRI_NR_PRIORITIES (MAX_RT_PRIO + 2) |
| 4 | |
| 5 | #define CPUPRI_INVALID -1 |
| 6 | #define CPUPRI_IDLE 0 |
| 7 | #define CPUPRI_NORMAL 1 |
| 8 | /* values 2-101 are RT priorities 0-99 */ |
| 9 | |
| 10 | struct cpupri_vec { |
| 11 | atomic_t count; |
| 12 | cpumask_var_t mask; |
| 13 | }; |
| 14 | |
| 15 | struct cpupri { |
| 16 | struct cpupri_vec pri_to_cpu[CPUPRI_NR_PRIORITIES]; |
| 17 | int *cpu_to_pri; |
| 18 | }; |
| 19 | |
| 20 | #ifdef CONFIG_SMP |
| 21 | int cpupri_find(struct cpupri *cp, struct task_struct *p, |
| 22 | struct cpumask *lowest_mask); |
| 23 | int cpupri_find_fitness(struct cpupri *cp, struct task_struct *p, |
| 24 | struct cpumask *lowest_mask, |
| 25 | bool (*fitness_fn)(struct task_struct *p, int cpu)); |
| 26 | void cpupri_set(struct cpupri *cp, int cpu, int pri); |
| 27 | int cpupri_init(struct cpupri *cp); |
| 28 | void cpupri_cleanup(struct cpupri *cp); |
| 29 | #endif |