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