blob: 63cbb9ca049698ad1c8a0c0d5430b7911b253baf [file] [log] [blame]
Gregory Haskins6e0534f2008-05-12 21:21:01 +02001#ifndef _LINUX_CPUPRI_H
2#define _LINUX_CPUPRI_H
3
4#include <linux/sched.h>
5
Thomas Gleixnere539d8f2008-06-05 10:28:00 +02006#define CPUPRI_NR_PRIORITIES (MAX_RT_PRIO + 2)
Gregory Haskins6e0534f2008-05-12 21:21:01 +02007
8#define CPUPRI_INVALID -1
9#define CPUPRI_IDLE 0
10#define CPUPRI_NORMAL 1
11/* values 2-101 are RT priorities 0-99 */
12
13struct cpupri_vec {
Steven Rostedtc92211d2011-08-02 16:36:12 -040014 atomic_t count;
15 cpumask_var_t mask;
Gregory Haskins6e0534f2008-05-12 21:21:01 +020016};
17
18struct cpupri {
19 struct cpupri_vec pri_to_cpu[CPUPRI_NR_PRIORITIES];
Peter Zijlstra4dac0b62014-05-14 16:04:26 +020020 int *cpu_to_pri;
Gregory Haskins6e0534f2008-05-12 21:21:01 +020021};
22
23#ifdef CONFIG_SMP
24int cpupri_find(struct cpupri *cp,
Rusty Russell612a7262009-03-30 22:05:16 -060025 struct task_struct *p, struct cpumask *lowest_mask);
Gregory Haskins6e0534f2008-05-12 21:21:01 +020026void cpupri_set(struct cpupri *cp, int cpu, int pri);
Pekka Enberg68c38fc2010-07-15 23:18:22 +030027int cpupri_init(struct cpupri *cp);
Rusty Russell68e74562008-11-25 02:35:13 +103028void cpupri_cleanup(struct cpupri *cp);
Gregory Haskins6e0534f2008-05-12 21:21:01 +020029#endif
30
31#endif /* _LINUX_CPUPRI_H */