blob: f6d756173491c87e3defef7e16547cd24d75fbfa [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];
Gregory Haskins6e0534f2008-05-12 21:21:01 +020020 int cpu_to_pri[NR_CPUS];
21};
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#else
30#define cpupri_set(cp, cpu, pri) do { } while (0)
31#define cpupri_init() do { } while (0)
32#endif
33
34#endif /* _LINUX_CPUPRI_H */