Branch data Line data Source code
1 : : #ifndef _SCHED_RT_H
2 : : #define _SCHED_RT_H
3 : :
4 : : /*
5 : : * Priority of a process goes from 0..MAX_PRIO-1, valid RT
6 : : * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
7 : : * tasks are in the range MAX_RT_PRIO..MAX_PRIO-1. Priority
8 : : * values are inverted: lower p->prio value means higher priority.
9 : : *
10 : : * The MAX_USER_RT_PRIO value allows the actual maximum
11 : : * RT priority to be separate from the value exported to
12 : : * user-space. This allows kernel threads to set their
13 : : * priority to a value higher than any user task. Note:
14 : : * MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO.
15 : : */
16 : :
17 : : #define MAX_USER_RT_PRIO 100
18 : : #define MAX_RT_PRIO MAX_USER_RT_PRIO
19 : :
20 : : #define MAX_PRIO (MAX_RT_PRIO + 40)
21 : : #define DEFAULT_PRIO (MAX_RT_PRIO + 20)
22 : :
23 : : static inline int rt_prio(int prio)
24 : : {
25 [ + + ][ + + ]: 3403601 : if (unlikely(prio < MAX_RT_PRIO))
[ + + ][ + + ]
[ + + ][ - + ]
[ + + ][ # # ]
[ + - ][ # # ]
[ + ]
26 : : return 1;
27 : : return 0;
28 : : }
29 : :
30 : : static inline int rt_task(struct task_struct *p)
31 : : {
32 : 3381734 : return rt_prio(p->prio);
33 : : }
34 : :
35 : : #ifdef CONFIG_RT_MUTEXES
36 : : extern int rt_mutex_getprio(struct task_struct *p);
37 : : extern void rt_mutex_setprio(struct task_struct *p, int prio);
38 : : extern void rt_mutex_adjust_pi(struct task_struct *p);
39 : : static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
40 : : {
41 : 10913053 : return tsk->pi_blocked_on != NULL;
42 : : }
43 : : #else
44 : : static inline int rt_mutex_getprio(struct task_struct *p)
45 : : {
46 : : return p->normal_prio;
47 : : }
48 : : # define rt_mutex_adjust_pi(p) do { } while (0)
49 : : static inline bool tsk_is_pi_blocked(struct task_struct *tsk)
50 : : {
51 : : return false;
52 : : }
53 : : #endif
54 : :
55 : : extern void normalize_rt_tasks(void);
56 : :
57 : :
58 : : /*
59 : : * default timeslice is 100 msecs (used only for SCHED_RR tasks).
60 : : * Timeslices get refilled after they expire.
61 : : */
62 : : #define RR_TIMESLICE (100 * HZ / 1000)
63 : :
64 : : #endif /* _SCHED_RT_H */
|