MentOS  0.8.0
The Mentoring Operating System
prio.h
Go to the documentation of this file.
1 
6 // Priority of a process goes from 0..MAX_PRIO-1, valid RT
7 // priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
8 // tasks are in the range MAX_RT_PRIO..MAX_PRIO-1. Priority
9 // values are inverted: lower p->prio value means higher priority.
10 //
11 // The MAX_USER_RT_PRIO value allows the actual maximum
12 // RT priority to be separate from the value exported to
13 // user-space. This allows kernel threads to set their
14 // priority to a value higher than any user task.
15 // Note: MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO.
16 
18 #define MAX_NICE +19
19 
21 #define MIN_NICE -20
22 
24 #define NICE_WIDTH (MAX_NICE - MIN_NICE + 1)
25 
27 #define MAX_RT_PRIO 100
28 
30 #define MAX_PRIO (MAX_RT_PRIO + NICE_WIDTH)
31 
33 #define DEFAULT_PRIO (MAX_RT_PRIO + NICE_WIDTH / 2)
34 
37 #define NICE_TO_PRIO(nice) ((nice) + DEFAULT_PRIO)
38 
41 #define PRIO_TO_NICE(prio) ((prio)-DEFAULT_PRIO)
42 
46 #define USER_PRIO(p) ((p)-MAX_RT_PRIO)
47 
49 #define TASK_USER_PRIO(p) USER_PRIO((p)->static_prio)
50 
52 #define MAX_USER_PRIO (USER_PRIO(MAX_PRIO))
53 
56 static const int prio_to_weight[NICE_WIDTH] = {
57  /* 100 */ 88761, 71755, 56483, 46273, 36291,
58  /* 105 */ 29154, 23254, 18705, 14949, 11916,
59  /* 110 */ 9548, 7620, 6100, 4904, 3906,
60  /* 115 */ 3121, 2501, 1991, 1586, 1277,
61  /* 120 */ 1024, 820, 655, 526, 423,
62  /* 125 */ 335, 272, 215, 172, 137,
63  /* 130 */ 110, 87, 70, 56, 45,
64  /* 135 */ 36, 29, 23, 18, 15
65 };
66 
68 #define GET_WEIGHT(prio) prio_to_weight[USER_PRIO((prio))]
69 
71 #define NICE_0_LOAD GET_WEIGHT(DEFAULT_PRIO)
#define NICE_WIDTH
Niceness range.
Definition: prio.h:24
static const int prio_to_weight[NICE_WIDTH]
Table that transforms the priority into a weight, used for computing the virtual runtime.
Definition: prio.h:56