Dongsheng Yang | 5c22807 | 2014-01-27 17:15:37 -0500 | [diff] [blame] | 1 | #ifndef _SCHED_PRIO_H |
| 2 | #define _SCHED_PRIO_H |
| 3 | |
Dongsheng Yang | 3ee237d | 2014-02-11 15:34:46 +0800 | [diff] [blame^] | 4 | #define MAX_NICE 19 |
| 5 | #define MIN_NICE -20 |
| 6 | #define NICE_WIDTH (MAX_NICE - MIN_NICE + 1) |
| 7 | |
Dongsheng Yang | 5c22807 | 2014-01-27 17:15:37 -0500 | [diff] [blame] | 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 | |
Dongsheng Yang | 3ee237d | 2014-02-11 15:34:46 +0800 | [diff] [blame^] | 24 | #define MAX_PRIO (MAX_RT_PRIO + NICE_WIDTH) |
| 25 | #define DEFAULT_PRIO (MAX_RT_PRIO + NICE_WIDTH / 2) |
Dongsheng Yang | 5c22807 | 2014-01-27 17:15:37 -0500 | [diff] [blame] | 26 | |
Dongsheng Yang | 6b6350f | 2014-01-27 17:15:38 -0500 | [diff] [blame] | 27 | /* |
| 28 | * Convert user-nice values [ -20 ... 0 ... 19 ] |
| 29 | * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ], |
| 30 | * and back. |
| 31 | */ |
Dongsheng Yang | 7e298d6 | 2014-02-11 15:34:45 +0800 | [diff] [blame] | 32 | #define NICE_TO_PRIO(nice) ((nice) + DEFAULT_PRIO) |
| 33 | #define PRIO_TO_NICE(prio) ((prio) - DEFAULT_PRIO) |
Dongsheng Yang | 6b6350f | 2014-01-27 17:15:38 -0500 | [diff] [blame] | 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 | |
Dongsheng Yang | 5c22807 | 2014-01-27 17:15:37 -0500 | [diff] [blame] | 44 | #endif /* _SCHED_PRIO_H */ |