blob: f7453d4c561354776b68c865a5bee71cd79b8e37 [file] [log] [blame]
Clark Williams8bd75c72013-02-07 09:47:07 -06001#ifndef _SCHED_RT_H
2#define _SCHED_RT_H
3
Dongsheng Yang5c228072014-01-27 17:15:37 -05004#include <linux/sched/prio.h>
Clark Williams8bd75c72013-02-07 09:47:07 -06005
6static inline int rt_prio(int prio)
7{
8 if (unlikely(prio < MAX_RT_PRIO))
9 return 1;
10 return 0;
11}
12
13static inline int rt_task(struct task_struct *p)
14{
15 return rt_prio(p->prio);
16}
17
18#ifdef CONFIG_RT_MUTEXES
19extern int rt_mutex_getprio(struct task_struct *p);
20extern void rt_mutex_setprio(struct task_struct *p, int prio);
Dario Faggioli2d3d8912013-11-07 14:43:44 +010021extern struct task_struct *rt_mutex_get_top_task(struct task_struct *task);
Clark Williams8bd75c72013-02-07 09:47:07 -060022extern void rt_mutex_adjust_pi(struct task_struct *p);
23static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
24{
25 return tsk->pi_blocked_on != NULL;
26}
27#else
28static inline int rt_mutex_getprio(struct task_struct *p)
29{
30 return p->normal_prio;
31}
Dario Faggioli2d3d8912013-11-07 14:43:44 +010032static inline struct task_struct *rt_mutex_get_top_task(struct task_struct *task)
33{
34 return NULL;
35}
Clark Williams8bd75c72013-02-07 09:47:07 -060036# define rt_mutex_adjust_pi(p) do { } while (0)
37static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
38{
39 return false;
40}
41#endif
42
43extern void normalize_rt_tasks(void);
44
45
Clark Williamsbc681592013-02-22 09:20:11 -080046/*
47 * default timeslice is 100 msecs (used only for SCHED_RR tasks).
48 * Timeslices get refilled after they expire.
49 */
50#define RR_TIMESLICE (100 * HZ / 1000)
51
Clark Williams8bd75c72013-02-07 09:47:07 -060052#endif /* _SCHED_RT_H */