blob: 9fc7d386fea4b845f5e3be3183825d00d182cda9 [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 {
Thomas Gleixnerfe841222009-11-17 17:59:15 +010015 raw_spinlock_t lock;
Gregory Haskins6e0534f2008-05-12 21:21:01 +020016 int count;
Rusty Russell68e74562008-11-25 02:35:13 +103017 cpumask_var_t mask;
Gregory Haskins6e0534f2008-05-12 21:21:01 +020018};
19
20struct cpupri {
21 struct cpupri_vec pri_to_cpu[CPUPRI_NR_PRIORITIES];
22 long pri_active[CPUPRI_NR_PRI_WORDS];
23 int cpu_to_pri[NR_CPUS];
24};
25
26#ifdef CONFIG_SMP
27int cpupri_find(struct cpupri *cp,
Rusty Russell612a7262009-03-30 22:05:16 -060028 struct task_struct *p, struct cpumask *lowest_mask);
Gregory Haskins6e0534f2008-05-12 21:21:01 +020029void cpupri_set(struct cpupri *cp, int cpu, int pri);
Pekka Enberg68c38fc2010-07-15 23:18:22 +030030int cpupri_init(struct cpupri *cp);
Rusty Russell68e74562008-11-25 02:35:13 +103031void cpupri_cleanup(struct cpupri *cp);
Gregory Haskins6e0534f2008-05-12 21:21:01 +020032#else
33#define cpupri_set(cp, cpu, pri) do { } while (0)
34#define cpupri_init() do { } while (0)
35#endif
36
37#endif /* _LINUX_CPUPRI_H */