blob: 9a7e859b8fbfdd753f09a4bc0949cf5345e2ae75 [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 {
15 spinlock_t lock;
16 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);
Rusty Russell68e74562008-11-25 02:35:13 +103030int cpupri_init(struct cpupri *cp, bool bootmem);
31void 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 */