Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
9ccd27cc IM |
2 | #ifndef _LINUX_SCHED_PRIO_H |
3 | #define _LINUX_SCHED_PRIO_H | |
5c228079 | 4 | |
3ee237dd DY |
5 | #define MAX_NICE 19 |
6 | #define MIN_NICE -20 | |
7 | #define NICE_WIDTH (MAX_NICE - MIN_NICE + 1) | |
8 | ||
5c228079 DY |
9 | /* |
10 | * Priority of a process goes from 0..MAX_PRIO-1, valid RT | |
11 | * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH | |
12 | * tasks are in the range MAX_RT_PRIO..MAX_PRIO-1. Priority | |
13 | * values are inverted: lower p->prio value means higher priority. | |
14 | * | |
15 | * The MAX_USER_RT_PRIO value allows the actual maximum | |
16 | * RT priority to be separate from the value exported to | |
17 | * user-space. This allows kernel threads to set their | |
18 | * priority to a value higher than any user task. Note: | |
19 | * MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO. | |
20 | */ | |
21 | ||
22 | #define MAX_USER_RT_PRIO 100 | |
23 | #define MAX_RT_PRIO MAX_USER_RT_PRIO | |
24 | ||
3ee237dd DY |
25 | #define MAX_PRIO (MAX_RT_PRIO + NICE_WIDTH) |
26 | #define DEFAULT_PRIO (MAX_RT_PRIO + NICE_WIDTH / 2) | |
5c228079 | 27 | |
6b6350f1 DY |
28 | /* |
29 | * Convert user-nice values [ -20 ... 0 ... 19 ] | |
30 | * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ], | |
31 | * and back. | |
32 | */ | |
7e298d60 DY |
33 | #define NICE_TO_PRIO(nice) ((nice) + DEFAULT_PRIO) |
34 | #define PRIO_TO_NICE(prio) ((prio) - DEFAULT_PRIO) | |
6b6350f1 DY |
35 | |
36 | /* | |
37 | * 'User priority' is the nice value converted to something we | |
38 | * can work with better when scaling various scheduler parameters, | |
39 | * it's a [ 0 ... 39 ] range. | |
40 | */ | |
41 | #define USER_PRIO(p) ((p)-MAX_RT_PRIO) | |
42 | #define TASK_USER_PRIO(p) USER_PRIO((p)->static_prio) | |
43 | #define MAX_USER_PRIO (USER_PRIO(MAX_PRIO)) | |
44 | ||
7aa2c016 DY |
45 | /* |
46 | * Convert nice value [19,-20] to rlimit style value [1,40]. | |
47 | */ | |
48 | static inline long nice_to_rlimit(long nice) | |
49 | { | |
50 | return (MAX_NICE - nice + 1); | |
51 | } | |
52 | ||
53 | /* | |
54 | * Convert rlimit style value [1,40] to nice value [-20, 19]. | |
55 | */ | |
56 | static inline long rlimit_to_nice(long prio) | |
57 | { | |
58 | return (MAX_NICE - prio + 1); | |
59 | } | |
60 | ||
9ccd27cc | 61 | #endif /* _LINUX_SCHED_PRIO_H */ |