diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/init_task.h | 1 | ||||
-rw-r--r-- | include/linux/plist.h | 9 | ||||
-rw-r--r-- | include/linux/sched.h | 7 |
3 files changed, 13 insertions, 4 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index ea0ea1a4c36f..fd2b11f59077 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -148,6 +148,7 @@ extern struct cred init_cred; | |||
148 | .nr_cpus_allowed = NR_CPUS, \ | 148 | .nr_cpus_allowed = NR_CPUS, \ |
149 | }, \ | 149 | }, \ |
150 | .tasks = LIST_HEAD_INIT(tsk.tasks), \ | 150 | .tasks = LIST_HEAD_INIT(tsk.tasks), \ |
151 | .pushable_tasks = PLIST_NODE_INIT(tsk.pushable_tasks, MAX_PRIO), \ | ||
151 | .ptraced = LIST_HEAD_INIT(tsk.ptraced), \ | 152 | .ptraced = LIST_HEAD_INIT(tsk.ptraced), \ |
152 | .ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \ | 153 | .ptrace_entry = LIST_HEAD_INIT(tsk.ptrace_entry), \ |
153 | .real_parent = &tsk, \ | 154 | .real_parent = &tsk, \ |
diff --git a/include/linux/plist.h b/include/linux/plist.h index 85de2f055874..45926d77d6ac 100644 --- a/include/linux/plist.h +++ b/include/linux/plist.h | |||
@@ -96,6 +96,10 @@ struct plist_node { | |||
96 | # define PLIST_HEAD_LOCK_INIT(_lock) | 96 | # define PLIST_HEAD_LOCK_INIT(_lock) |
97 | #endif | 97 | #endif |
98 | 98 | ||
99 | #define _PLIST_HEAD_INIT(head) \ | ||
100 | .prio_list = LIST_HEAD_INIT((head).prio_list), \ | ||
101 | .node_list = LIST_HEAD_INIT((head).node_list) | ||
102 | |||
99 | /** | 103 | /** |
100 | * PLIST_HEAD_INIT - static struct plist_head initializer | 104 | * PLIST_HEAD_INIT - static struct plist_head initializer |
101 | * @head: struct plist_head variable name | 105 | * @head: struct plist_head variable name |
@@ -103,8 +107,7 @@ struct plist_node { | |||
103 | */ | 107 | */ |
104 | #define PLIST_HEAD_INIT(head, _lock) \ | 108 | #define PLIST_HEAD_INIT(head, _lock) \ |
105 | { \ | 109 | { \ |
106 | .prio_list = LIST_HEAD_INIT((head).prio_list), \ | 110 | _PLIST_HEAD_INIT(head), \ |
107 | .node_list = LIST_HEAD_INIT((head).node_list), \ | ||
108 | PLIST_HEAD_LOCK_INIT(&(_lock)) \ | 111 | PLIST_HEAD_LOCK_INIT(&(_lock)) \ |
109 | } | 112 | } |
110 | 113 | ||
@@ -116,7 +119,7 @@ struct plist_node { | |||
116 | #define PLIST_NODE_INIT(node, __prio) \ | 119 | #define PLIST_NODE_INIT(node, __prio) \ |
117 | { \ | 120 | { \ |
118 | .prio = (__prio), \ | 121 | .prio = (__prio), \ |
119 | .plist = PLIST_HEAD_INIT((node).plist, NULL), \ | 122 | .plist = { _PLIST_HEAD_INIT((node).plist) }, \ |
120 | } | 123 | } |
121 | 124 | ||
122 | /** | 125 | /** |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 2127e959e0f4..61d9b6c1ebc9 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -981,6 +981,7 @@ struct sched_class { | |||
981 | struct rq *busiest, struct sched_domain *sd, | 981 | struct rq *busiest, struct sched_domain *sd, |
982 | enum cpu_idle_type idle); | 982 | enum cpu_idle_type idle); |
983 | void (*pre_schedule) (struct rq *this_rq, struct task_struct *task); | 983 | void (*pre_schedule) (struct rq *this_rq, struct task_struct *task); |
984 | int (*needs_post_schedule) (struct rq *this_rq); | ||
984 | void (*post_schedule) (struct rq *this_rq); | 985 | void (*post_schedule) (struct rq *this_rq); |
985 | void (*task_wake_up) (struct rq *this_rq, struct task_struct *task); | 986 | void (*task_wake_up) (struct rq *this_rq, struct task_struct *task); |
986 | 987 | ||
@@ -1035,6 +1036,10 @@ struct sched_entity { | |||
1035 | u64 last_wakeup; | 1036 | u64 last_wakeup; |
1036 | u64 avg_overlap; | 1037 | u64 avg_overlap; |
1037 | 1038 | ||
1039 | u64 start_runtime; | ||
1040 | u64 avg_wakeup; | ||
1041 | u64 nr_migrations; | ||
1042 | |||
1038 | #ifdef CONFIG_SCHEDSTATS | 1043 | #ifdef CONFIG_SCHEDSTATS |
1039 | u64 wait_start; | 1044 | u64 wait_start; |
1040 | u64 wait_max; | 1045 | u64 wait_max; |
@@ -1050,7 +1055,6 @@ struct sched_entity { | |||
1050 | u64 exec_max; | 1055 | u64 exec_max; |
1051 | u64 slice_max; | 1056 | u64 slice_max; |
1052 | 1057 | ||
1053 | u64 nr_migrations; | ||
1054 | u64 nr_migrations_cold; | 1058 | u64 nr_migrations_cold; |
1055 | u64 nr_failed_migrations_affine; | 1059 | u64 nr_failed_migrations_affine; |
1056 | u64 nr_failed_migrations_running; | 1060 | u64 nr_failed_migrations_running; |
@@ -1147,6 +1151,7 @@ struct task_struct { | |||
1147 | #endif | 1151 | #endif |
1148 | 1152 | ||
1149 | struct list_head tasks; | 1153 | struct list_head tasks; |
1154 | struct plist_node pushable_tasks; | ||
1150 | 1155 | ||
1151 | struct mm_struct *mm, *active_mm; | 1156 | struct mm_struct *mm, *active_mm; |
1152 | 1157 | ||