1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | #ifndef _LINUX_SCHED_RT_H |
3 | #define _LINUX_SCHED_RT_H |
4 | |
5 | #include <linux/sched.h> |
6 | |
7 | struct task_struct; |
8 | |
9 | static inline int rt_prio(int prio) |
10 | { |
11 | if (unlikely(prio < MAX_RT_PRIO)) |
12 | return 1; |
13 | return 0; |
14 | } |
15 | |
16 | static inline int rt_task(struct task_struct *p) |
17 | { |
18 | return rt_prio(prio: p->prio); |
19 | } |
20 | |
21 | static inline bool task_is_realtime(struct task_struct *tsk) |
22 | { |
23 | int policy = tsk->policy; |
24 | |
25 | if (policy == SCHED_FIFO || policy == SCHED_RR) |
26 | return true; |
27 | if (policy == SCHED_DEADLINE) |
28 | return true; |
29 | return false; |
30 | } |
31 | |
32 | #ifdef CONFIG_RT_MUTEXES |
33 | extern void rt_mutex_pre_schedule(void); |
34 | extern void rt_mutex_schedule(void); |
35 | extern void rt_mutex_post_schedule(void); |
36 | |
37 | /* |
38 | * Must hold either p->pi_lock or task_rq(p)->lock. |
39 | */ |
40 | static inline struct task_struct *rt_mutex_get_top_task(struct task_struct *p) |
41 | { |
42 | return p->pi_top_task; |
43 | } |
44 | extern void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_task); |
45 | extern void rt_mutex_adjust_pi(struct task_struct *p); |
46 | #else |
47 | static inline struct task_struct *rt_mutex_get_top_task(struct task_struct *task) |
48 | { |
49 | return NULL; |
50 | } |
51 | # define rt_mutex_adjust_pi(p) do { } while (0) |
52 | #endif |
53 | |
54 | extern void normalize_rt_tasks(void); |
55 | |
56 | |
57 | /* |
58 | * default timeslice is 100 msecs (used only for SCHED_RR tasks). |
59 | * Timeslices get refilled after they expire. |
60 | */ |
61 | #define RR_TIMESLICE (100 * HZ / 1000) |
62 | |
63 | #endif /* _LINUX_SCHED_RT_H */ |
64 | |