blob: 6b4cd17dead6d8fb3d5c86eb467052402edaa4c8 [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)
7#define CPUPRI_NR_PRI_WORDS BITS_TO_LONGS(CPUPRI_NR_PRIORITIES)
Gregory Haskins6e0534f2008-05-12 21:21:01 +02008
9#define CPUPRI_INVALID -1
10#define CPUPRI_IDLE 0
11#define CPUPRI_NORMAL 1
12/* values 2-101 are RT priorities 0-99 */
13
14struct cpupri_vec {
Steven Rostedtc92211d2011-08-02 16:36:12 -040015 atomic_t count;
16 cpumask_var_t mask;
Gregory Haskins6e0534f2008-05-12 21:21:01 +020017};
18
19struct cpupri {
20 struct cpupri_vec pri_to_cpu[CPUPRI_NR_PRIORITIES];
21 long pri_active[CPUPRI_NR_PRI_WORDS];
22 int cpu_to_pri[NR_CPUS];
23};
24
25#ifdef CONFIG_SMP
26int cpupri_find(struct cpupri *cp,
Rusty Russell612a7262009-03-30 22:05:16 -060027 struct task_struct *p, struct cpumask *lowest_mask);
Gregory Haskins6e0534f2008-05-12 21:21:01 +020028void cpupri_set(struct cpupri *cp, int cpu, int pri);
Pekka Enberg68c38fc2010-07-15 23:18:22 +030029int cpupri_init(struct cpupri *cp);
Rusty Russell68e74562008-11-25 02:35:13 +103030void cpupri_cleanup(struct cpupri *cp);
Gregory Haskins6e0534f2008-05-12 21:21:01 +020031#else
32#define cpupri_set(cp, cpu, pri) do { } while (0)
33#define cpupri_init() do { } while (0)
34#endif
35
36#endif /* _LINUX_CPUPRI_H */