xref: /openbmc/linux/include/linux/sched/rt.h (revision fa0a497b)
1 #ifndef _SCHED_RT_H
2 #define _SCHED_RT_H
3 
4 #include <linux/sched/prio.h>
5 
6 static inline int rt_prio(int prio)
7 {
8 	if (unlikely(prio < MAX_RT_PRIO))
9 		return 1;
10 	return 0;
11 }
12 
13 static inline int rt_task(struct task_struct *p)
14 {
15 	return rt_prio(p->prio);
16 }
17 
18 #ifdef CONFIG_RT_MUTEXES
19 extern int rt_mutex_getprio(struct task_struct *p);
20 extern void rt_mutex_setprio(struct task_struct *p, int prio);
21 extern int rt_mutex_get_effective_prio(struct task_struct *task, int newprio);
22 extern struct task_struct *rt_mutex_get_top_task(struct task_struct *task);
23 extern void rt_mutex_adjust_pi(struct task_struct *p);
24 static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
25 {
26 	return tsk->pi_blocked_on != NULL;
27 }
28 #else
29 static inline int rt_mutex_getprio(struct task_struct *p)
30 {
31 	return p->normal_prio;
32 }
33 
34 static inline int rt_mutex_get_effective_prio(struct task_struct *task,
35 					      int newprio)
36 {
37 	return newprio;
38 }
39 
40 static inline struct task_struct *rt_mutex_get_top_task(struct task_struct *task)
41 {
42 	return NULL;
43 }
44 # define rt_mutex_adjust_pi(p)		do { } while (0)
45 static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
46 {
47 	return false;
48 }
49 #endif
50 
51 extern void normalize_rt_tasks(void);
52 
53 
54 /*
55  * default timeslice is 100 msecs (used only for SCHED_RR tasks).
56  * Timeslices get refilled after they expire.
57  */
58 #define RR_TIMESLICE		(100 * HZ / 1000)
59 
60 #endif /* _SCHED_RT_H */
61