Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck...
[linux-2.6-microblaze.git] / include / linux / sched.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_SCHED_H
3 #define _LINUX_SCHED_H
4
5 /*
6  * Define 'struct task_struct' and provide the main scheduler
7  * APIs (schedule(), wakeup variants, etc.)
8  */
9
10 #include <uapi/linux/sched.h>
11
12 #include <asm/current.h>
13
14 #include <linux/pid.h>
15 #include <linux/sem.h>
16 #include <linux/shm.h>
17 #include <linux/kcov.h>
18 #include <linux/mutex.h>
19 #include <linux/plist.h>
20 #include <linux/hrtimer.h>
21 #include <linux/seccomp.h>
22 #include <linux/nodemask.h>
23 #include <linux/rcupdate.h>
24 #include <linux/resource.h>
25 #include <linux/latencytop.h>
26 #include <linux/sched/prio.h>
27 #include <linux/signal_types.h>
28 #include <linux/mm_types_task.h>
29 #include <linux/task_io_accounting.h>
30
31 /* task_struct member predeclarations (sorted alphabetically): */
32 struct audit_context;
33 struct backing_dev_info;
34 struct bio_list;
35 struct blk_plug;
36 struct cfs_rq;
37 struct fs_struct;
38 struct futex_pi_state;
39 struct io_context;
40 struct mempolicy;
41 struct nameidata;
42 struct nsproxy;
43 struct perf_event_context;
44 struct pid_namespace;
45 struct pipe_inode_info;
46 struct rcu_node;
47 struct reclaim_state;
48 struct robust_list_head;
49 struct sched_attr;
50 struct sched_param;
51 struct seq_file;
52 struct sighand_struct;
53 struct signal_struct;
54 struct task_delay_info;
55 struct task_group;
56
57 /*
58  * Task state bitmask. NOTE! These bits are also
59  * encoded in fs/proc/array.c: get_task_state().
60  *
61  * We have two separate sets of flags: task->state
62  * is about runnability, while task->exit_state are
63  * about the task exiting. Confusing, but this way
64  * modifying one set can't modify the other one by
65  * mistake.
66  */
67
68 /* Used in tsk->state: */
69 #define TASK_RUNNING                    0x0000
70 #define TASK_INTERRUPTIBLE              0x0001
71 #define TASK_UNINTERRUPTIBLE            0x0002
72 #define __TASK_STOPPED                  0x0004
73 #define __TASK_TRACED                   0x0008
74 /* Used in tsk->exit_state: */
75 #define EXIT_DEAD                       0x0010
76 #define EXIT_ZOMBIE                     0x0020
77 #define EXIT_TRACE                      (EXIT_ZOMBIE | EXIT_DEAD)
78 /* Used in tsk->state again: */
79 #define TASK_PARKED                     0x0040
80 #define TASK_DEAD                       0x0080
81 #define TASK_WAKEKILL                   0x0100
82 #define TASK_WAKING                     0x0200
83 #define TASK_NOLOAD                     0x0400
84 #define TASK_NEW                        0x0800
85 #define TASK_STATE_MAX                  0x1000
86
87 /* Convenience macros for the sake of set_current_state: */
88 #define TASK_KILLABLE                   (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE)
89 #define TASK_STOPPED                    (TASK_WAKEKILL | __TASK_STOPPED)
90 #define TASK_TRACED                     (TASK_WAKEKILL | __TASK_TRACED)
91
92 #define TASK_IDLE                       (TASK_UNINTERRUPTIBLE | TASK_NOLOAD)
93
94 /* Convenience macros for the sake of wake_up(): */
95 #define TASK_NORMAL                     (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE)
96
97 /* get_task_state(): */
98 #define TASK_REPORT                     (TASK_RUNNING | TASK_INTERRUPTIBLE | \
99                                          TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \
100                                          __TASK_TRACED | EXIT_DEAD | EXIT_ZOMBIE | \
101                                          TASK_PARKED)
102
103 #define task_is_traced(task)            ((task->state & __TASK_TRACED) != 0)
104
105 #define task_is_stopped(task)           ((task->state & __TASK_STOPPED) != 0)
106
107 #define task_is_stopped_or_traced(task) ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
108
109 #define task_contributes_to_load(task)  ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \
110                                          (task->flags & PF_FROZEN) == 0 && \
111                                          (task->state & TASK_NOLOAD) == 0)
112
113 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
114
115 /*
116  * Special states are those that do not use the normal wait-loop pattern. See
117  * the comment with set_special_state().
118  */
119 #define is_special_task_state(state)                            \
120         ((state) & (__TASK_STOPPED | __TASK_TRACED | TASK_DEAD))
121
122 #define __set_current_state(state_value)                        \
123         do {                                                    \
124                 WARN_ON_ONCE(is_special_task_state(state_value));\
125                 current->task_state_change = _THIS_IP_;         \
126                 current->state = (state_value);                 \
127         } while (0)
128
129 #define set_current_state(state_value)                          \
130         do {                                                    \
131                 WARN_ON_ONCE(is_special_task_state(state_value));\
132                 current->task_state_change = _THIS_IP_;         \
133                 smp_store_mb(current->state, (state_value));    \
134         } while (0)
135
136 #define set_special_state(state_value)                                  \
137         do {                                                            \
138                 unsigned long flags; /* may shadow */                   \
139                 WARN_ON_ONCE(!is_special_task_state(state_value));      \
140                 raw_spin_lock_irqsave(&current->pi_lock, flags);        \
141                 current->task_state_change = _THIS_IP_;                 \
142                 current->state = (state_value);                         \
143                 raw_spin_unlock_irqrestore(&current->pi_lock, flags);   \
144         } while (0)
145 #else
146 /*
147  * set_current_state() includes a barrier so that the write of current->state
148  * is correctly serialised wrt the caller's subsequent test of whether to
149  * actually sleep:
150  *
151  *   for (;;) {
152  *      set_current_state(TASK_UNINTERRUPTIBLE);
153  *      if (!need_sleep)
154  *              break;
155  *
156  *      schedule();
157  *   }
158  *   __set_current_state(TASK_RUNNING);
159  *
160  * If the caller does not need such serialisation (because, for instance, the
161  * condition test and condition change and wakeup are under the same lock) then
162  * use __set_current_state().
163  *
164  * The above is typically ordered against the wakeup, which does:
165  *
166  *   need_sleep = false;
167  *   wake_up_state(p, TASK_UNINTERRUPTIBLE);
168  *
169  * Where wake_up_state() (and all other wakeup primitives) imply enough
170  * barriers to order the store of the variable against wakeup.
171  *
172  * Wakeup will do: if (@state & p->state) p->state = TASK_RUNNING, that is,
173  * once it observes the TASK_UNINTERRUPTIBLE store the waking CPU can issue a
174  * TASK_RUNNING store which can collide with __set_current_state(TASK_RUNNING).
175  *
176  * However, with slightly different timing the wakeup TASK_RUNNING store can
177  * also collide with the TASK_UNINTERRUPTIBLE store. Loosing that store is not
178  * a problem either because that will result in one extra go around the loop
179  * and our @cond test will save the day.
180  *
181  * Also see the comments of try_to_wake_up().
182  */
183 #define __set_current_state(state_value)                                \
184         current->state = (state_value)
185
186 #define set_current_state(state_value)                                  \
187         smp_store_mb(current->state, (state_value))
188
189 /*
190  * set_special_state() should be used for those states when the blocking task
191  * can not use the regular condition based wait-loop. In that case we must
192  * serialize against wakeups such that any possible in-flight TASK_RUNNING stores
193  * will not collide with our state change.
194  */
195 #define set_special_state(state_value)                                  \
196         do {                                                            \
197                 unsigned long flags; /* may shadow */                   \
198                 raw_spin_lock_irqsave(&current->pi_lock, flags);        \
199                 current->state = (state_value);                         \
200                 raw_spin_unlock_irqrestore(&current->pi_lock, flags);   \
201         } while (0)
202
203 #endif
204
205 /* Task command name length: */
206 #define TASK_COMM_LEN                   16
207
208 extern void scheduler_tick(void);
209
210 #define MAX_SCHEDULE_TIMEOUT            LONG_MAX
211
212 extern long schedule_timeout(long timeout);
213 extern long schedule_timeout_interruptible(long timeout);
214 extern long schedule_timeout_killable(long timeout);
215 extern long schedule_timeout_uninterruptible(long timeout);
216 extern long schedule_timeout_idle(long timeout);
217 asmlinkage void schedule(void);
218 extern void schedule_preempt_disabled(void);
219
220 extern int __must_check io_schedule_prepare(void);
221 extern void io_schedule_finish(int token);
222 extern long io_schedule_timeout(long timeout);
223 extern void io_schedule(void);
224
225 /**
226  * struct prev_cputime - snapshot of system and user cputime
227  * @utime: time spent in user mode
228  * @stime: time spent in system mode
229  * @lock: protects the above two fields
230  *
231  * Stores previous user/system time values such that we can guarantee
232  * monotonicity.
233  */
234 struct prev_cputime {
235 #ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
236         u64                             utime;
237         u64                             stime;
238         raw_spinlock_t                  lock;
239 #endif
240 };
241
242 /**
243  * struct task_cputime - collected CPU time counts
244  * @utime:              time spent in user mode, in nanoseconds
245  * @stime:              time spent in kernel mode, in nanoseconds
246  * @sum_exec_runtime:   total time spent on the CPU, in nanoseconds
247  *
248  * This structure groups together three kinds of CPU time that are tracked for
249  * threads and thread groups.  Most things considering CPU time want to group
250  * these counts together and treat all three of them in parallel.
251  */
252 struct task_cputime {
253         u64                             utime;
254         u64                             stime;
255         unsigned long long              sum_exec_runtime;
256 };
257
258 /* Alternate field names when used on cache expirations: */
259 #define virt_exp                        utime
260 #define prof_exp                        stime
261 #define sched_exp                       sum_exec_runtime
262
263 enum vtime_state {
264         /* Task is sleeping or running in a CPU with VTIME inactive: */
265         VTIME_INACTIVE = 0,
266         /* Task runs in userspace in a CPU with VTIME active: */
267         VTIME_USER,
268         /* Task runs in kernelspace in a CPU with VTIME active: */
269         VTIME_SYS,
270 };
271
272 struct vtime {
273         seqcount_t              seqcount;
274         unsigned long long      starttime;
275         enum vtime_state        state;
276         u64                     utime;
277         u64                     stime;
278         u64                     gtime;
279 };
280
281 struct sched_info {
282 #ifdef CONFIG_SCHED_INFO
283         /* Cumulative counters: */
284
285         /* # of times we have run on this CPU: */
286         unsigned long                   pcount;
287
288         /* Time spent waiting on a runqueue: */
289         unsigned long long              run_delay;
290
291         /* Timestamps: */
292
293         /* When did we last run on a CPU? */
294         unsigned long long              last_arrival;
295
296         /* When were we last queued to run? */
297         unsigned long long              last_queued;
298
299 #endif /* CONFIG_SCHED_INFO */
300 };
301
302 /*
303  * Integer metrics need fixed point arithmetic, e.g., sched/fair
304  * has a few: load, load_avg, util_avg, freq, and capacity.
305  *
306  * We define a basic fixed point arithmetic range, and then formalize
307  * all these metrics based on that basic range.
308  */
309 # define SCHED_FIXEDPOINT_SHIFT         10
310 # define SCHED_FIXEDPOINT_SCALE         (1L << SCHED_FIXEDPOINT_SHIFT)
311
312 struct load_weight {
313         unsigned long                   weight;
314         u32                             inv_weight;
315 };
316
317 /**
318  * struct util_est - Estimation utilization of FAIR tasks
319  * @enqueued: instantaneous estimated utilization of a task/cpu
320  * @ewma:     the Exponential Weighted Moving Average (EWMA)
321  *            utilization of a task
322  *
323  * Support data structure to track an Exponential Weighted Moving Average
324  * (EWMA) of a FAIR task's utilization. New samples are added to the moving
325  * average each time a task completes an activation. Sample's weight is chosen
326  * so that the EWMA will be relatively insensitive to transient changes to the
327  * task's workload.
328  *
329  * The enqueued attribute has a slightly different meaning for tasks and cpus:
330  * - task:   the task's util_avg at last task dequeue time
331  * - cfs_rq: the sum of util_est.enqueued for each RUNNABLE task on that CPU
332  * Thus, the util_est.enqueued of a task represents the contribution on the
333  * estimated utilization of the CPU where that task is currently enqueued.
334  *
335  * Only for tasks we track a moving average of the past instantaneous
336  * estimated utilization. This allows to absorb sporadic drops in utilization
337  * of an otherwise almost periodic task.
338  */
339 struct util_est {
340         unsigned int                    enqueued;
341         unsigned int                    ewma;
342 #define UTIL_EST_WEIGHT_SHIFT           2
343 } __attribute__((__aligned__(sizeof(u64))));
344
345 /*
346  * The load_avg/util_avg accumulates an infinite geometric series
347  * (see __update_load_avg() in kernel/sched/fair.c).
348  *
349  * [load_avg definition]
350  *
351  *   load_avg = runnable% * scale_load_down(load)
352  *
353  * where runnable% is the time ratio that a sched_entity is runnable.
354  * For cfs_rq, it is the aggregated load_avg of all runnable and
355  * blocked sched_entities.
356  *
357  * load_avg may also take frequency scaling into account:
358  *
359  *   load_avg = runnable% * scale_load_down(load) * freq%
360  *
361  * where freq% is the CPU frequency normalized to the highest frequency.
362  *
363  * [util_avg definition]
364  *
365  *   util_avg = running% * SCHED_CAPACITY_SCALE
366  *
367  * where running% is the time ratio that a sched_entity is running on
368  * a CPU. For cfs_rq, it is the aggregated util_avg of all runnable
369  * and blocked sched_entities.
370  *
371  * util_avg may also factor frequency scaling and CPU capacity scaling:
372  *
373  *   util_avg = running% * SCHED_CAPACITY_SCALE * freq% * capacity%
374  *
375  * where freq% is the same as above, and capacity% is the CPU capacity
376  * normalized to the greatest capacity (due to uarch differences, etc).
377  *
378  * N.B., the above ratios (runnable%, running%, freq%, and capacity%)
379  * themselves are in the range of [0, 1]. To do fixed point arithmetics,
380  * we therefore scale them to as large a range as necessary. This is for
381  * example reflected by util_avg's SCHED_CAPACITY_SCALE.
382  *
383  * [Overflow issue]
384  *
385  * The 64-bit load_sum can have 4353082796 (=2^64/47742/88761) entities
386  * with the highest load (=88761), always runnable on a single cfs_rq,
387  * and should not overflow as the number already hits PID_MAX_LIMIT.
388  *
389  * For all other cases (including 32-bit kernels), struct load_weight's
390  * weight will overflow first before we do, because:
391  *
392  *    Max(load_avg) <= Max(load.weight)
393  *
394  * Then it is the load_weight's responsibility to consider overflow
395  * issues.
396  */
397 struct sched_avg {
398         u64                             last_update_time;
399         u64                             load_sum;
400         u64                             runnable_load_sum;
401         u32                             util_sum;
402         u32                             period_contrib;
403         unsigned long                   load_avg;
404         unsigned long                   runnable_load_avg;
405         unsigned long                   util_avg;
406         struct util_est                 util_est;
407 } ____cacheline_aligned;
408
409 struct sched_statistics {
410 #ifdef CONFIG_SCHEDSTATS
411         u64                             wait_start;
412         u64                             wait_max;
413         u64                             wait_count;
414         u64                             wait_sum;
415         u64                             iowait_count;
416         u64                             iowait_sum;
417
418         u64                             sleep_start;
419         u64                             sleep_max;
420         s64                             sum_sleep_runtime;
421
422         u64                             block_start;
423         u64                             block_max;
424         u64                             exec_max;
425         u64                             slice_max;
426
427         u64                             nr_migrations_cold;
428         u64                             nr_failed_migrations_affine;
429         u64                             nr_failed_migrations_running;
430         u64                             nr_failed_migrations_hot;
431         u64                             nr_forced_migrations;
432
433         u64                             nr_wakeups;
434         u64                             nr_wakeups_sync;
435         u64                             nr_wakeups_migrate;
436         u64                             nr_wakeups_local;
437         u64                             nr_wakeups_remote;
438         u64                             nr_wakeups_affine;
439         u64                             nr_wakeups_affine_attempts;
440         u64                             nr_wakeups_passive;
441         u64                             nr_wakeups_idle;
442 #endif
443 };
444
445 struct sched_entity {
446         /* For load-balancing: */
447         struct load_weight              load;
448         unsigned long                   runnable_weight;
449         struct rb_node                  run_node;
450         struct list_head                group_node;
451         unsigned int                    on_rq;
452
453         u64                             exec_start;
454         u64                             sum_exec_runtime;
455         u64                             vruntime;
456         u64                             prev_sum_exec_runtime;
457
458         u64                             nr_migrations;
459
460         struct sched_statistics         statistics;
461
462 #ifdef CONFIG_FAIR_GROUP_SCHED
463         int                             depth;
464         struct sched_entity             *parent;
465         /* rq on which this entity is (to be) queued: */
466         struct cfs_rq                   *cfs_rq;
467         /* rq "owned" by this entity/group: */
468         struct cfs_rq                   *my_q;
469 #endif
470
471 #ifdef CONFIG_SMP
472         /*
473          * Per entity load average tracking.
474          *
475          * Put into separate cache line so it does not
476          * collide with read-mostly values above.
477          */
478         struct sched_avg                avg;
479 #endif
480 };
481
482 struct sched_rt_entity {
483         struct list_head                run_list;
484         unsigned long                   timeout;
485         unsigned long                   watchdog_stamp;
486         unsigned int                    time_slice;
487         unsigned short                  on_rq;
488         unsigned short                  on_list;
489
490         struct sched_rt_entity          *back;
491 #ifdef CONFIG_RT_GROUP_SCHED
492         struct sched_rt_entity          *parent;
493         /* rq on which this entity is (to be) queued: */
494         struct rt_rq                    *rt_rq;
495         /* rq "owned" by this entity/group: */
496         struct rt_rq                    *my_q;
497 #endif
498 } __randomize_layout;
499
500 struct sched_dl_entity {
501         struct rb_node                  rb_node;
502
503         /*
504          * Original scheduling parameters. Copied here from sched_attr
505          * during sched_setattr(), they will remain the same until
506          * the next sched_setattr().
507          */
508         u64                             dl_runtime;     /* Maximum runtime for each instance    */
509         u64                             dl_deadline;    /* Relative deadline of each instance   */
510         u64                             dl_period;      /* Separation of two instances (period) */
511         u64                             dl_bw;          /* dl_runtime / dl_period               */
512         u64                             dl_density;     /* dl_runtime / dl_deadline             */
513
514         /*
515          * Actual scheduling parameters. Initialized with the values above,
516          * they are continously updated during task execution. Note that
517          * the remaining runtime could be < 0 in case we are in overrun.
518          */
519         s64                             runtime;        /* Remaining runtime for this instance  */
520         u64                             deadline;       /* Absolute deadline for this instance  */
521         unsigned int                    flags;          /* Specifying the scheduler behaviour   */
522
523         /*
524          * Some bool flags:
525          *
526          * @dl_throttled tells if we exhausted the runtime. If so, the
527          * task has to wait for a replenishment to be performed at the
528          * next firing of dl_timer.
529          *
530          * @dl_boosted tells if we are boosted due to DI. If so we are
531          * outside bandwidth enforcement mechanism (but only until we
532          * exit the critical section);
533          *
534          * @dl_yielded tells if task gave up the CPU before consuming
535          * all its available runtime during the last job.
536          *
537          * @dl_non_contending tells if the task is inactive while still
538          * contributing to the active utilization. In other words, it
539          * indicates if the inactive timer has been armed and its handler
540          * has not been executed yet. This flag is useful to avoid race
541          * conditions between the inactive timer handler and the wakeup
542          * code.
543          *
544          * @dl_overrun tells if the task asked to be informed about runtime
545          * overruns.
546          */
547         unsigned int                    dl_throttled      : 1;
548         unsigned int                    dl_boosted        : 1;
549         unsigned int                    dl_yielded        : 1;
550         unsigned int                    dl_non_contending : 1;
551         unsigned int                    dl_overrun        : 1;
552
553         /*
554          * Bandwidth enforcement timer. Each -deadline task has its
555          * own bandwidth to be enforced, thus we need one timer per task.
556          */
557         struct hrtimer                  dl_timer;
558
559         /*
560          * Inactive timer, responsible for decreasing the active utilization
561          * at the "0-lag time". When a -deadline task blocks, it contributes
562          * to GRUB's active utilization until the "0-lag time", hence a
563          * timer is needed to decrease the active utilization at the correct
564          * time.
565          */
566         struct hrtimer inactive_timer;
567 };
568
569 union rcu_special {
570         struct {
571                 u8                      blocked;
572                 u8                      need_qs;
573                 u8                      exp_need_qs;
574
575                 /* Otherwise the compiler can store garbage here: */
576                 u8                      pad;
577         } b; /* Bits. */
578         u32 s; /* Set of bits. */
579 };
580
581 enum perf_event_task_context {
582         perf_invalid_context = -1,
583         perf_hw_context = 0,
584         perf_sw_context,
585         perf_nr_task_contexts,
586 };
587
588 struct wake_q_node {
589         struct wake_q_node *next;
590 };
591
592 struct task_struct {
593 #ifdef CONFIG_THREAD_INFO_IN_TASK
594         /*
595          * For reasons of header soup (see current_thread_info()), this
596          * must be the first element of task_struct.
597          */
598         struct thread_info              thread_info;
599 #endif
600         /* -1 unrunnable, 0 runnable, >0 stopped: */
601         volatile long                   state;
602
603         /*
604          * This begins the randomizable portion of task_struct. Only
605          * scheduling-critical items should be added above here.
606          */
607         randomized_struct_fields_start
608
609         void                            *stack;
610         atomic_t                        usage;
611         /* Per task flags (PF_*), defined further below: */
612         unsigned int                    flags;
613         unsigned int                    ptrace;
614
615 #ifdef CONFIG_SMP
616         struct llist_node               wake_entry;
617         int                             on_cpu;
618 #ifdef CONFIG_THREAD_INFO_IN_TASK
619         /* Current CPU: */
620         unsigned int                    cpu;
621 #endif
622         unsigned int                    wakee_flips;
623         unsigned long                   wakee_flip_decay_ts;
624         struct task_struct              *last_wakee;
625
626         /*
627          * recent_used_cpu is initially set as the last CPU used by a task
628          * that wakes affine another task. Waker/wakee relationships can
629          * push tasks around a CPU where each wakeup moves to the next one.
630          * Tracking a recently used CPU allows a quick search for a recently
631          * used CPU that may be idle.
632          */
633         int                             recent_used_cpu;
634         int                             wake_cpu;
635 #endif
636         int                             on_rq;
637
638         int                             prio;
639         int                             static_prio;
640         int                             normal_prio;
641         unsigned int                    rt_priority;
642
643         const struct sched_class        *sched_class;
644         struct sched_entity             se;
645         struct sched_rt_entity          rt;
646 #ifdef CONFIG_CGROUP_SCHED
647         struct task_group               *sched_task_group;
648 #endif
649         struct sched_dl_entity          dl;
650
651 #ifdef CONFIG_PREEMPT_NOTIFIERS
652         /* List of struct preempt_notifier: */
653         struct hlist_head               preempt_notifiers;
654 #endif
655
656 #ifdef CONFIG_BLK_DEV_IO_TRACE
657         unsigned int                    btrace_seq;
658 #endif
659
660         unsigned int                    policy;
661         int                             nr_cpus_allowed;
662         cpumask_t                       cpus_allowed;
663
664 #ifdef CONFIG_PREEMPT_RCU
665         int                             rcu_read_lock_nesting;
666         union rcu_special               rcu_read_unlock_special;
667         struct list_head                rcu_node_entry;
668         struct rcu_node                 *rcu_blocked_node;
669 #endif /* #ifdef CONFIG_PREEMPT_RCU */
670
671 #ifdef CONFIG_TASKS_RCU
672         unsigned long                   rcu_tasks_nvcsw;
673         u8                              rcu_tasks_holdout;
674         u8                              rcu_tasks_idx;
675         int                             rcu_tasks_idle_cpu;
676         struct list_head                rcu_tasks_holdout_list;
677 #endif /* #ifdef CONFIG_TASKS_RCU */
678
679         struct sched_info               sched_info;
680
681         struct list_head                tasks;
682 #ifdef CONFIG_SMP
683         struct plist_node               pushable_tasks;
684         struct rb_node                  pushable_dl_tasks;
685 #endif
686
687         struct mm_struct                *mm;
688         struct mm_struct                *active_mm;
689
690         /* Per-thread vma caching: */
691         struct vmacache                 vmacache;
692
693 #ifdef SPLIT_RSS_COUNTING
694         struct task_rss_stat            rss_stat;
695 #endif
696         int                             exit_state;
697         int                             exit_code;
698         int                             exit_signal;
699         /* The signal sent when the parent dies: */
700         int                             pdeath_signal;
701         /* JOBCTL_*, siglock protected: */
702         unsigned long                   jobctl;
703
704         /* Used for emulating ABI behavior of previous Linux versions: */
705         unsigned int                    personality;
706
707         /* Scheduler bits, serialized by scheduler locks: */
708         unsigned                        sched_reset_on_fork:1;
709         unsigned                        sched_contributes_to_load:1;
710         unsigned                        sched_migrated:1;
711         unsigned                        sched_remote_wakeup:1;
712         /* Force alignment to the next boundary: */
713         unsigned                        :0;
714
715         /* Unserialized, strictly 'current' */
716
717         /* Bit to tell LSMs we're in execve(): */
718         unsigned                        in_execve:1;
719         unsigned                        in_iowait:1;
720 #ifndef TIF_RESTORE_SIGMASK
721         unsigned                        restore_sigmask:1;
722 #endif
723 #ifdef CONFIG_MEMCG
724         unsigned                        memcg_may_oom:1;
725 #ifndef CONFIG_SLOB
726         unsigned                        memcg_kmem_skip_account:1;
727 #endif
728 #endif
729 #ifdef CONFIG_COMPAT_BRK
730         unsigned                        brk_randomized:1;
731 #endif
732 #ifdef CONFIG_CGROUPS
733         /* disallow userland-initiated cgroup migration */
734         unsigned                        no_cgroup_migration:1;
735 #endif
736
737         unsigned long                   atomic_flags; /* Flags requiring atomic access. */
738
739         struct restart_block            restart_block;
740
741         pid_t                           pid;
742         pid_t                           tgid;
743
744 #ifdef CONFIG_CC_STACKPROTECTOR
745         /* Canary value for the -fstack-protector GCC feature: */
746         unsigned long                   stack_canary;
747 #endif
748         /*
749          * Pointers to the (original) parent process, youngest child, younger sibling,
750          * older sibling, respectively.  (p->father can be replaced with
751          * p->real_parent->pid)
752          */
753
754         /* Real parent process: */
755         struct task_struct __rcu        *real_parent;
756
757         /* Recipient of SIGCHLD, wait4() reports: */
758         struct task_struct __rcu        *parent;
759
760         /*
761          * Children/sibling form the list of natural children:
762          */
763         struct list_head                children;
764         struct list_head                sibling;
765         struct task_struct              *group_leader;
766
767         /*
768          * 'ptraced' is the list of tasks this task is using ptrace() on.
769          *
770          * This includes both natural children and PTRACE_ATTACH targets.
771          * 'ptrace_entry' is this task's link on the p->parent->ptraced list.
772          */
773         struct list_head                ptraced;
774         struct list_head                ptrace_entry;
775
776         /* PID/PID hash table linkage. */
777         struct pid_link                 pids[PIDTYPE_MAX];
778         struct list_head                thread_group;
779         struct list_head                thread_node;
780
781         struct completion               *vfork_done;
782
783         /* CLONE_CHILD_SETTID: */
784         int __user                      *set_child_tid;
785
786         /* CLONE_CHILD_CLEARTID: */
787         int __user                      *clear_child_tid;
788
789         u64                             utime;
790         u64                             stime;
791 #ifdef CONFIG_ARCH_HAS_SCALED_CPUTIME
792         u64                             utimescaled;
793         u64                             stimescaled;
794 #endif
795         u64                             gtime;
796         struct prev_cputime             prev_cputime;
797 #ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
798         struct vtime                    vtime;
799 #endif
800
801 #ifdef CONFIG_NO_HZ_FULL
802         atomic_t                        tick_dep_mask;
803 #endif
804         /* Context switch counts: */
805         unsigned long                   nvcsw;
806         unsigned long                   nivcsw;
807
808         /* Monotonic time in nsecs: */
809         u64                             start_time;
810
811         /* Boot based time in nsecs: */
812         u64                             real_start_time;
813
814         /* MM fault and swap info: this can arguably be seen as either mm-specific or thread-specific: */
815         unsigned long                   min_flt;
816         unsigned long                   maj_flt;
817
818 #ifdef CONFIG_POSIX_TIMERS
819         struct task_cputime             cputime_expires;
820         struct list_head                cpu_timers[3];
821 #endif
822
823         /* Process credentials: */
824
825         /* Tracer's credentials at attach: */
826         const struct cred __rcu         *ptracer_cred;
827
828         /* Objective and real subjective task credentials (COW): */
829         const struct cred __rcu         *real_cred;
830
831         /* Effective (overridable) subjective task credentials (COW): */
832         const struct cred __rcu         *cred;
833
834         /*
835          * executable name, excluding path.
836          *
837          * - normally initialized setup_new_exec()
838          * - access it with [gs]et_task_comm()
839          * - lock it with task_lock()
840          */
841         char                            comm[TASK_COMM_LEN];
842
843         struct nameidata                *nameidata;
844
845 #ifdef CONFIG_SYSVIPC
846         struct sysv_sem                 sysvsem;
847         struct sysv_shm                 sysvshm;
848 #endif
849 #ifdef CONFIG_DETECT_HUNG_TASK
850         unsigned long                   last_switch_count;
851 #endif
852         /* Filesystem information: */
853         struct fs_struct                *fs;
854
855         /* Open file information: */
856         struct files_struct             *files;
857
858         /* Namespaces: */
859         struct nsproxy                  *nsproxy;
860
861         /* Signal handlers: */
862         struct signal_struct            *signal;
863         struct sighand_struct           *sighand;
864         sigset_t                        blocked;
865         sigset_t                        real_blocked;
866         /* Restored if set_restore_sigmask() was used: */
867         sigset_t                        saved_sigmask;
868         struct sigpending               pending;
869         unsigned long                   sas_ss_sp;
870         size_t                          sas_ss_size;
871         unsigned int                    sas_ss_flags;
872
873         struct callback_head            *task_works;
874
875         struct audit_context            *audit_context;
876 #ifdef CONFIG_AUDITSYSCALL
877         kuid_t                          loginuid;
878         unsigned int                    sessionid;
879 #endif
880         struct seccomp                  seccomp;
881
882         /* Thread group tracking: */
883         u32                             parent_exec_id;
884         u32                             self_exec_id;
885
886         /* Protection against (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed, mempolicy: */
887         spinlock_t                      alloc_lock;
888
889         /* Protection of the PI data structures: */
890         raw_spinlock_t                  pi_lock;
891
892         struct wake_q_node              wake_q;
893
894 #ifdef CONFIG_RT_MUTEXES
895         /* PI waiters blocked on a rt_mutex held by this task: */
896         struct rb_root_cached           pi_waiters;
897         /* Updated under owner's pi_lock and rq lock */
898         struct task_struct              *pi_top_task;
899         /* Deadlock detection and priority inheritance handling: */
900         struct rt_mutex_waiter          *pi_blocked_on;
901 #endif
902
903 #ifdef CONFIG_DEBUG_MUTEXES
904         /* Mutex deadlock detection: */
905         struct mutex_waiter             *blocked_on;
906 #endif
907
908 #ifdef CONFIG_TRACE_IRQFLAGS
909         unsigned int                    irq_events;
910         unsigned long                   hardirq_enable_ip;
911         unsigned long                   hardirq_disable_ip;
912         unsigned int                    hardirq_enable_event;
913         unsigned int                    hardirq_disable_event;
914         int                             hardirqs_enabled;
915         int                             hardirq_context;
916         unsigned long                   softirq_disable_ip;
917         unsigned long                   softirq_enable_ip;
918         unsigned int                    softirq_disable_event;
919         unsigned int                    softirq_enable_event;
920         int                             softirqs_enabled;
921         int                             softirq_context;
922 #endif
923
924 #ifdef CONFIG_LOCKDEP
925 # define MAX_LOCK_DEPTH                 48UL
926         u64                             curr_chain_key;
927         int                             lockdep_depth;
928         unsigned int                    lockdep_recursion;
929         struct held_lock                held_locks[MAX_LOCK_DEPTH];
930 #endif
931
932 #ifdef CONFIG_UBSAN
933         unsigned int                    in_ubsan;
934 #endif
935
936         /* Journalling filesystem info: */
937         void                            *journal_info;
938
939         /* Stacked block device info: */
940         struct bio_list                 *bio_list;
941
942 #ifdef CONFIG_BLOCK
943         /* Stack plugging: */
944         struct blk_plug                 *plug;
945 #endif
946
947         /* VM state: */
948         struct reclaim_state            *reclaim_state;
949
950         struct backing_dev_info         *backing_dev_info;
951
952         struct io_context               *io_context;
953
954         /* Ptrace state: */
955         unsigned long                   ptrace_message;
956         siginfo_t                       *last_siginfo;
957
958         struct task_io_accounting       ioac;
959 #ifdef CONFIG_TASK_XACCT
960         /* Accumulated RSS usage: */
961         u64                             acct_rss_mem1;
962         /* Accumulated virtual memory usage: */
963         u64                             acct_vm_mem1;
964         /* stime + utime since last update: */
965         u64                             acct_timexpd;
966 #endif
967 #ifdef CONFIG_CPUSETS
968         /* Protected by ->alloc_lock: */
969         nodemask_t                      mems_allowed;
970         /* Seqence number to catch updates: */
971         seqcount_t                      mems_allowed_seq;
972         int                             cpuset_mem_spread_rotor;
973         int                             cpuset_slab_spread_rotor;
974 #endif
975 #ifdef CONFIG_CGROUPS
976         /* Control Group info protected by css_set_lock: */
977         struct css_set __rcu            *cgroups;
978         /* cg_list protected by css_set_lock and tsk->alloc_lock: */
979         struct list_head                cg_list;
980 #endif
981 #ifdef CONFIG_INTEL_RDT
982         u32                             closid;
983         u32                             rmid;
984 #endif
985 #ifdef CONFIG_FUTEX
986         struct robust_list_head __user  *robust_list;
987 #ifdef CONFIG_COMPAT
988         struct compat_robust_list_head __user *compat_robust_list;
989 #endif
990         struct list_head                pi_state_list;
991         struct futex_pi_state           *pi_state_cache;
992 #endif
993 #ifdef CONFIG_PERF_EVENTS
994         struct perf_event_context       *perf_event_ctxp[perf_nr_task_contexts];
995         struct mutex                    perf_event_mutex;
996         struct list_head                perf_event_list;
997 #endif
998 #ifdef CONFIG_DEBUG_PREEMPT
999         unsigned long                   preempt_disable_ip;
1000 #endif
1001 #ifdef CONFIG_NUMA
1002         /* Protected by alloc_lock: */
1003         struct mempolicy                *mempolicy;
1004         short                           il_prev;
1005         short                           pref_node_fork;
1006 #endif
1007 #ifdef CONFIG_NUMA_BALANCING
1008         int                             numa_scan_seq;
1009         unsigned int                    numa_scan_period;
1010         unsigned int                    numa_scan_period_max;
1011         int                             numa_preferred_nid;
1012         unsigned long                   numa_migrate_retry;
1013         /* Migration stamp: */
1014         u64                             node_stamp;
1015         u64                             last_task_numa_placement;
1016         u64                             last_sum_exec_runtime;
1017         struct callback_head            numa_work;
1018
1019         struct list_head                numa_entry;
1020         struct numa_group               *numa_group;
1021
1022         /*
1023          * numa_faults is an array split into four regions:
1024          * faults_memory, faults_cpu, faults_memory_buffer, faults_cpu_buffer
1025          * in this precise order.
1026          *
1027          * faults_memory: Exponential decaying average of faults on a per-node
1028          * basis. Scheduling placement decisions are made based on these
1029          * counts. The values remain static for the duration of a PTE scan.
1030          * faults_cpu: Track the nodes the process was running on when a NUMA
1031          * hinting fault was incurred.
1032          * faults_memory_buffer and faults_cpu_buffer: Record faults per node
1033          * during the current scan window. When the scan completes, the counts
1034          * in faults_memory and faults_cpu decay and these values are copied.
1035          */
1036         unsigned long                   *numa_faults;
1037         unsigned long                   total_numa_faults;
1038
1039         /*
1040          * numa_faults_locality tracks if faults recorded during the last
1041          * scan window were remote/local or failed to migrate. The task scan
1042          * period is adapted based on the locality of the faults with different
1043          * weights depending on whether they were shared or private faults
1044          */
1045         unsigned long                   numa_faults_locality[3];
1046
1047         unsigned long                   numa_pages_migrated;
1048 #endif /* CONFIG_NUMA_BALANCING */
1049
1050         struct tlbflush_unmap_batch     tlb_ubc;
1051
1052         struct rcu_head                 rcu;
1053
1054         /* Cache last used pipe for splice(): */
1055         struct pipe_inode_info          *splice_pipe;
1056
1057         struct page_frag                task_frag;
1058
1059 #ifdef CONFIG_TASK_DELAY_ACCT
1060         struct task_delay_info          *delays;
1061 #endif
1062
1063 #ifdef CONFIG_FAULT_INJECTION
1064         int                             make_it_fail;
1065         unsigned int                    fail_nth;
1066 #endif
1067         /*
1068          * When (nr_dirtied >= nr_dirtied_pause), it's time to call
1069          * balance_dirty_pages() for a dirty throttling pause:
1070          */
1071         int                             nr_dirtied;
1072         int                             nr_dirtied_pause;
1073         /* Start of a write-and-pause period: */
1074         unsigned long                   dirty_paused_when;
1075
1076 #ifdef CONFIG_LATENCYTOP
1077         int                             latency_record_count;
1078         struct latency_record           latency_record[LT_SAVECOUNT];
1079 #endif
1080         /*
1081          * Time slack values; these are used to round up poll() and
1082          * select() etc timeout values. These are in nanoseconds.
1083          */
1084         u64                             timer_slack_ns;
1085         u64                             default_timer_slack_ns;
1086
1087 #ifdef CONFIG_KASAN
1088         unsigned int                    kasan_depth;
1089 #endif
1090
1091 #ifdef CONFIG_FUNCTION_GRAPH_TRACER
1092         /* Index of current stored address in ret_stack: */
1093         int                             curr_ret_stack;
1094
1095         /* Stack of return addresses for return function tracing: */
1096         struct ftrace_ret_stack         *ret_stack;
1097
1098         /* Timestamp for last schedule: */
1099         unsigned long long              ftrace_timestamp;
1100
1101         /*
1102          * Number of functions that haven't been traced
1103          * because of depth overrun:
1104          */
1105         atomic_t                        trace_overrun;
1106
1107         /* Pause tracing: */
1108         atomic_t                        tracing_graph_pause;
1109 #endif
1110
1111 #ifdef CONFIG_TRACING
1112         /* State flags for use by tracers: */
1113         unsigned long                   trace;
1114
1115         /* Bitmask and counter of trace recursion: */
1116         unsigned long                   trace_recursion;
1117 #endif /* CONFIG_TRACING */
1118
1119 #ifdef CONFIG_KCOV
1120         /* Coverage collection mode enabled for this task (0 if disabled): */
1121         enum kcov_mode                  kcov_mode;
1122
1123         /* Size of the kcov_area: */
1124         unsigned int                    kcov_size;
1125
1126         /* Buffer for coverage collection: */
1127         void                            *kcov_area;
1128
1129         /* KCOV descriptor wired with this task or NULL: */
1130         struct kcov                     *kcov;
1131 #endif
1132
1133 #ifdef CONFIG_MEMCG
1134         struct mem_cgroup               *memcg_in_oom;
1135         gfp_t                           memcg_oom_gfp_mask;
1136         int                             memcg_oom_order;
1137
1138         /* Number of pages to reclaim on returning to userland: */
1139         unsigned int                    memcg_nr_pages_over_high;
1140 #endif
1141
1142 #ifdef CONFIG_UPROBES
1143         struct uprobe_task              *utask;
1144 #endif
1145 #if defined(CONFIG_BCACHE) || defined(CONFIG_BCACHE_MODULE)
1146         unsigned int                    sequential_io;
1147         unsigned int                    sequential_io_avg;
1148 #endif
1149 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
1150         unsigned long                   task_state_change;
1151 #endif
1152         int                             pagefault_disabled;
1153 #ifdef CONFIG_MMU
1154         struct task_struct              *oom_reaper_list;
1155 #endif
1156 #ifdef CONFIG_VMAP_STACK
1157         struct vm_struct                *stack_vm_area;
1158 #endif
1159 #ifdef CONFIG_THREAD_INFO_IN_TASK
1160         /* A live task holds one reference: */
1161         atomic_t                        stack_refcount;
1162 #endif
1163 #ifdef CONFIG_LIVEPATCH
1164         int patch_state;
1165 #endif
1166 #ifdef CONFIG_SECURITY
1167         /* Used by LSM modules for access restriction: */
1168         void                            *security;
1169 #endif
1170
1171         /*
1172          * New fields for task_struct should be added above here, so that
1173          * they are included in the randomized portion of task_struct.
1174          */
1175         randomized_struct_fields_end
1176
1177         /* CPU-specific state of this task: */
1178         struct thread_struct            thread;
1179
1180         /*
1181          * WARNING: on x86, 'thread_struct' contains a variable-sized
1182          * structure.  It *MUST* be at the end of 'task_struct'.
1183          *
1184          * Do not put anything below here!
1185          */
1186 };
1187
1188 static inline struct pid *task_pid(struct task_struct *task)
1189 {
1190         return task->pids[PIDTYPE_PID].pid;
1191 }
1192
1193 static inline struct pid *task_tgid(struct task_struct *task)
1194 {
1195         return task->group_leader->pids[PIDTYPE_PID].pid;
1196 }
1197
1198 /*
1199  * Without tasklist or RCU lock it is not safe to dereference
1200  * the result of task_pgrp/task_session even if task == current,
1201  * we can race with another thread doing sys_setsid/sys_setpgid.
1202  */
1203 static inline struct pid *task_pgrp(struct task_struct *task)
1204 {
1205         return task->group_leader->pids[PIDTYPE_PGID].pid;
1206 }
1207
1208 static inline struct pid *task_session(struct task_struct *task)
1209 {
1210         return task->group_leader->pids[PIDTYPE_SID].pid;
1211 }
1212
1213 /*
1214  * the helpers to get the task's different pids as they are seen
1215  * from various namespaces
1216  *
1217  * task_xid_nr()     : global id, i.e. the id seen from the init namespace;
1218  * task_xid_vnr()    : virtual id, i.e. the id seen from the pid namespace of
1219  *                     current.
1220  * task_xid_nr_ns()  : id seen from the ns specified;
1221  *
1222  * see also pid_nr() etc in include/linux/pid.h
1223  */
1224 pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct pid_namespace *ns);
1225
1226 static inline pid_t task_pid_nr(struct task_struct *tsk)
1227 {
1228         return tsk->pid;
1229 }
1230
1231 static inline pid_t task_pid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1232 {
1233         return __task_pid_nr_ns(tsk, PIDTYPE_PID, ns);
1234 }
1235
1236 static inline pid_t task_pid_vnr(struct task_struct *tsk)
1237 {
1238         return __task_pid_nr_ns(tsk, PIDTYPE_PID, NULL);
1239 }
1240
1241
1242 static inline pid_t task_tgid_nr(struct task_struct *tsk)
1243 {
1244         return tsk->tgid;
1245 }
1246
1247 /**
1248  * pid_alive - check that a task structure is not stale
1249  * @p: Task structure to be checked.
1250  *
1251  * Test if a process is not yet dead (at most zombie state)
1252  * If pid_alive fails, then pointers within the task structure
1253  * can be stale and must not be dereferenced.
1254  *
1255  * Return: 1 if the process is alive. 0 otherwise.
1256  */
1257 static inline int pid_alive(const struct task_struct *p)
1258 {
1259         return p->pids[PIDTYPE_PID].pid != NULL;
1260 }
1261
1262 static inline pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1263 {
1264         return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns);
1265 }
1266
1267 static inline pid_t task_pgrp_vnr(struct task_struct *tsk)
1268 {
1269         return __task_pid_nr_ns(tsk, PIDTYPE_PGID, NULL);
1270 }
1271
1272
1273 static inline pid_t task_session_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1274 {
1275         return __task_pid_nr_ns(tsk, PIDTYPE_SID, ns);
1276 }
1277
1278 static inline pid_t task_session_vnr(struct task_struct *tsk)
1279 {
1280         return __task_pid_nr_ns(tsk, PIDTYPE_SID, NULL);
1281 }
1282
1283 static inline pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1284 {
1285         return __task_pid_nr_ns(tsk, __PIDTYPE_TGID, ns);
1286 }
1287
1288 static inline pid_t task_tgid_vnr(struct task_struct *tsk)
1289 {
1290         return __task_pid_nr_ns(tsk, __PIDTYPE_TGID, NULL);
1291 }
1292
1293 static inline pid_t task_ppid_nr_ns(const struct task_struct *tsk, struct pid_namespace *ns)
1294 {
1295         pid_t pid = 0;
1296
1297         rcu_read_lock();
1298         if (pid_alive(tsk))
1299                 pid = task_tgid_nr_ns(rcu_dereference(tsk->real_parent), ns);
1300         rcu_read_unlock();
1301
1302         return pid;
1303 }
1304
1305 static inline pid_t task_ppid_nr(const struct task_struct *tsk)
1306 {
1307         return task_ppid_nr_ns(tsk, &init_pid_ns);
1308 }
1309
1310 /* Obsolete, do not use: */
1311 static inline pid_t task_pgrp_nr(struct task_struct *tsk)
1312 {
1313         return task_pgrp_nr_ns(tsk, &init_pid_ns);
1314 }
1315
1316 #define TASK_REPORT_IDLE        (TASK_REPORT + 1)
1317 #define TASK_REPORT_MAX         (TASK_REPORT_IDLE << 1)
1318
1319 static inline unsigned int task_state_index(struct task_struct *tsk)
1320 {
1321         unsigned int tsk_state = READ_ONCE(tsk->state);
1322         unsigned int state = (tsk_state | tsk->exit_state) & TASK_REPORT;
1323
1324         BUILD_BUG_ON_NOT_POWER_OF_2(TASK_REPORT_MAX);
1325
1326         if (tsk_state == TASK_IDLE)
1327                 state = TASK_REPORT_IDLE;
1328
1329         return fls(state);
1330 }
1331
1332 static inline char task_index_to_char(unsigned int state)
1333 {
1334         static const char state_char[] = "RSDTtXZPI";
1335
1336         BUILD_BUG_ON(1 + ilog2(TASK_REPORT_MAX) != sizeof(state_char) - 1);
1337
1338         return state_char[state];
1339 }
1340
1341 static inline char task_state_to_char(struct task_struct *tsk)
1342 {
1343         return task_index_to_char(task_state_index(tsk));
1344 }
1345
1346 /**
1347  * is_global_init - check if a task structure is init. Since init
1348  * is free to have sub-threads we need to check tgid.
1349  * @tsk: Task structure to be checked.
1350  *
1351  * Check if a task structure is the first user space task the kernel created.
1352  *
1353  * Return: 1 if the task structure is init. 0 otherwise.
1354  */
1355 static inline int is_global_init(struct task_struct *tsk)
1356 {
1357         return task_tgid_nr(tsk) == 1;
1358 }
1359
1360 extern struct pid *cad_pid;
1361
1362 /*
1363  * Per process flags
1364  */
1365 #define PF_IDLE                 0x00000002      /* I am an IDLE thread */
1366 #define PF_EXITING              0x00000004      /* Getting shut down */
1367 #define PF_EXITPIDONE           0x00000008      /* PI exit done on shut down */
1368 #define PF_VCPU                 0x00000010      /* I'm a virtual CPU */
1369 #define PF_WQ_WORKER            0x00000020      /* I'm a workqueue worker */
1370 #define PF_FORKNOEXEC           0x00000040      /* Forked but didn't exec */
1371 #define PF_MCE_PROCESS          0x00000080      /* Process policy on mce errors */
1372 #define PF_SUPERPRIV            0x00000100      /* Used super-user privileges */
1373 #define PF_DUMPCORE             0x00000200      /* Dumped core */
1374 #define PF_SIGNALED             0x00000400      /* Killed by a signal */
1375 #define PF_MEMALLOC             0x00000800      /* Allocating memory */
1376 #define PF_NPROC_EXCEEDED       0x00001000      /* set_user() noticed that RLIMIT_NPROC was exceeded */
1377 #define PF_USED_MATH            0x00002000      /* If unset the fpu must be initialized before use */
1378 #define PF_USED_ASYNC           0x00004000      /* Used async_schedule*(), used by module init */
1379 #define PF_NOFREEZE             0x00008000      /* This thread should not be frozen */
1380 #define PF_FROZEN               0x00010000      /* Frozen for system suspend */
1381 #define PF_KSWAPD               0x00020000      /* I am kswapd */
1382 #define PF_MEMALLOC_NOFS        0x00040000      /* All allocation requests will inherit GFP_NOFS */
1383 #define PF_MEMALLOC_NOIO        0x00080000      /* All allocation requests will inherit GFP_NOIO */
1384 #define PF_LESS_THROTTLE        0x00100000      /* Throttle me less: I clean memory */
1385 #define PF_KTHREAD              0x00200000      /* I am a kernel thread */
1386 #define PF_RANDOMIZE            0x00400000      /* Randomize virtual address space */
1387 #define PF_SWAPWRITE            0x00800000      /* Allowed to write to swap */
1388 #define PF_NO_SETAFFINITY       0x04000000      /* Userland is not allowed to meddle with cpus_allowed */
1389 #define PF_MCE_EARLY            0x08000000      /* Early kill for mce process policy */
1390 #define PF_MUTEX_TESTER         0x20000000      /* Thread belongs to the rt mutex tester */
1391 #define PF_FREEZER_SKIP         0x40000000      /* Freezer should not count it as freezable */
1392 #define PF_SUSPEND_TASK         0x80000000      /* This thread called freeze_processes() and should not be frozen */
1393
1394 /*
1395  * Only the _current_ task can read/write to tsk->flags, but other
1396  * tasks can access tsk->flags in readonly mode for example
1397  * with tsk_used_math (like during threaded core dumping).
1398  * There is however an exception to this rule during ptrace
1399  * or during fork: the ptracer task is allowed to write to the
1400  * child->flags of its traced child (same goes for fork, the parent
1401  * can write to the child->flags), because we're guaranteed the
1402  * child is not running and in turn not changing child->flags
1403  * at the same time the parent does it.
1404  */
1405 #define clear_stopped_child_used_math(child)    do { (child)->flags &= ~PF_USED_MATH; } while (0)
1406 #define set_stopped_child_used_math(child)      do { (child)->flags |= PF_USED_MATH; } while (0)
1407 #define clear_used_math()                       clear_stopped_child_used_math(current)
1408 #define set_used_math()                         set_stopped_child_used_math(current)
1409
1410 #define conditional_stopped_child_used_math(condition, child) \
1411         do { (child)->flags &= ~PF_USED_MATH, (child)->flags |= (condition) ? PF_USED_MATH : 0; } while (0)
1412
1413 #define conditional_used_math(condition)        conditional_stopped_child_used_math(condition, current)
1414
1415 #define copy_to_stopped_child_used_math(child) \
1416         do { (child)->flags &= ~PF_USED_MATH, (child)->flags |= current->flags & PF_USED_MATH; } while (0)
1417
1418 /* NOTE: this will return 0 or PF_USED_MATH, it will never return 1 */
1419 #define tsk_used_math(p)                        ((p)->flags & PF_USED_MATH)
1420 #define used_math()                             tsk_used_math(current)
1421
1422 static inline bool is_percpu_thread(void)
1423 {
1424 #ifdef CONFIG_SMP
1425         return (current->flags & PF_NO_SETAFFINITY) &&
1426                 (current->nr_cpus_allowed  == 1);
1427 #else
1428         return true;
1429 #endif
1430 }
1431
1432 /* Per-process atomic flags. */
1433 #define PFA_NO_NEW_PRIVS                0       /* May not gain new privileges. */
1434 #define PFA_SPREAD_PAGE                 1       /* Spread page cache over cpuset */
1435 #define PFA_SPREAD_SLAB                 2       /* Spread some slab caches over cpuset */
1436
1437
1438 #define TASK_PFA_TEST(name, func)                                       \
1439         static inline bool task_##func(struct task_struct *p)           \
1440         { return test_bit(PFA_##name, &p->atomic_flags); }
1441
1442 #define TASK_PFA_SET(name, func)                                        \
1443         static inline void task_set_##func(struct task_struct *p)       \
1444         { set_bit(PFA_##name, &p->atomic_flags); }
1445
1446 #define TASK_PFA_CLEAR(name, func)                                      \
1447         static inline void task_clear_##func(struct task_struct *p)     \
1448         { clear_bit(PFA_##name, &p->atomic_flags); }
1449
1450 TASK_PFA_TEST(NO_NEW_PRIVS, no_new_privs)
1451 TASK_PFA_SET(NO_NEW_PRIVS, no_new_privs)
1452
1453 TASK_PFA_TEST(SPREAD_PAGE, spread_page)
1454 TASK_PFA_SET(SPREAD_PAGE, spread_page)
1455 TASK_PFA_CLEAR(SPREAD_PAGE, spread_page)
1456
1457 TASK_PFA_TEST(SPREAD_SLAB, spread_slab)
1458 TASK_PFA_SET(SPREAD_SLAB, spread_slab)
1459 TASK_PFA_CLEAR(SPREAD_SLAB, spread_slab)
1460
1461 static inline void
1462 current_restore_flags(unsigned long orig_flags, unsigned long flags)
1463 {
1464         current->flags &= ~flags;
1465         current->flags |= orig_flags & flags;
1466 }
1467
1468 extern int cpuset_cpumask_can_shrink(const struct cpumask *cur, const struct cpumask *trial);
1469 extern int task_can_attach(struct task_struct *p, const struct cpumask *cs_cpus_allowed);
1470 #ifdef CONFIG_SMP
1471 extern void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask);
1472 extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask);
1473 #else
1474 static inline void do_set_cpus_allowed(struct task_struct *p, const struct cpumask *new_mask)
1475 {
1476 }
1477 static inline int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
1478 {
1479         if (!cpumask_test_cpu(0, new_mask))
1480                 return -EINVAL;
1481         return 0;
1482 }
1483 #endif
1484
1485 #ifndef cpu_relax_yield
1486 #define cpu_relax_yield() cpu_relax()
1487 #endif
1488
1489 extern int yield_to(struct task_struct *p, bool preempt);
1490 extern void set_user_nice(struct task_struct *p, long nice);
1491 extern int task_prio(const struct task_struct *p);
1492
1493 /**
1494  * task_nice - return the nice value of a given task.
1495  * @p: the task in question.
1496  *
1497  * Return: The nice value [ -20 ... 0 ... 19 ].
1498  */
1499 static inline int task_nice(const struct task_struct *p)
1500 {
1501         return PRIO_TO_NICE((p)->static_prio);
1502 }
1503
1504 extern int can_nice(const struct task_struct *p, const int nice);
1505 extern int task_curr(const struct task_struct *p);
1506 extern int idle_cpu(int cpu);
1507 extern int sched_setscheduler(struct task_struct *, int, const struct sched_param *);
1508 extern int sched_setscheduler_nocheck(struct task_struct *, int, const struct sched_param *);
1509 extern int sched_setattr(struct task_struct *, const struct sched_attr *);
1510 extern int sched_setattr_nocheck(struct task_struct *, const struct sched_attr *);
1511 extern struct task_struct *idle_task(int cpu);
1512
1513 /**
1514  * is_idle_task - is the specified task an idle task?
1515  * @p: the task in question.
1516  *
1517  * Return: 1 if @p is an idle task. 0 otherwise.
1518  */
1519 static inline bool is_idle_task(const struct task_struct *p)
1520 {
1521         return !!(p->flags & PF_IDLE);
1522 }
1523
1524 extern struct task_struct *curr_task(int cpu);
1525 extern void ia64_set_curr_task(int cpu, struct task_struct *p);
1526
1527 void yield(void);
1528
1529 union thread_union {
1530 #ifndef CONFIG_ARCH_TASK_STRUCT_ON_STACK
1531         struct task_struct task;
1532 #endif
1533 #ifndef CONFIG_THREAD_INFO_IN_TASK
1534         struct thread_info thread_info;
1535 #endif
1536         unsigned long stack[THREAD_SIZE/sizeof(long)];
1537 };
1538
1539 #ifndef CONFIG_THREAD_INFO_IN_TASK
1540 extern struct thread_info init_thread_info;
1541 #endif
1542
1543 extern unsigned long init_stack[THREAD_SIZE / sizeof(unsigned long)];
1544
1545 #ifdef CONFIG_THREAD_INFO_IN_TASK
1546 static inline struct thread_info *task_thread_info(struct task_struct *task)
1547 {
1548         return &task->thread_info;
1549 }
1550 #elif !defined(__HAVE_THREAD_FUNCTIONS)
1551 # define task_thread_info(task) ((struct thread_info *)(task)->stack)
1552 #endif
1553
1554 /*
1555  * find a task by one of its numerical ids
1556  *
1557  * find_task_by_pid_ns():
1558  *      finds a task by its pid in the specified namespace
1559  * find_task_by_vpid():
1560  *      finds a task by its virtual pid
1561  *
1562  * see also find_vpid() etc in include/linux/pid.h
1563  */
1564
1565 extern struct task_struct *find_task_by_vpid(pid_t nr);
1566 extern struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespace *ns);
1567
1568 /*
1569  * find a task by its virtual pid and get the task struct
1570  */
1571 extern struct task_struct *find_get_task_by_vpid(pid_t nr);
1572
1573 extern int wake_up_state(struct task_struct *tsk, unsigned int state);
1574 extern int wake_up_process(struct task_struct *tsk);
1575 extern void wake_up_new_task(struct task_struct *tsk);
1576
1577 #ifdef CONFIG_SMP
1578 extern void kick_process(struct task_struct *tsk);
1579 #else
1580 static inline void kick_process(struct task_struct *tsk) { }
1581 #endif
1582
1583 extern void __set_task_comm(struct task_struct *tsk, const char *from, bool exec);
1584
1585 static inline void set_task_comm(struct task_struct *tsk, const char *from)
1586 {
1587         __set_task_comm(tsk, from, false);
1588 }
1589
1590 extern char *__get_task_comm(char *to, size_t len, struct task_struct *tsk);
1591 #define get_task_comm(buf, tsk) ({                      \
1592         BUILD_BUG_ON(sizeof(buf) != TASK_COMM_LEN);     \
1593         __get_task_comm(buf, sizeof(buf), tsk);         \
1594 })
1595
1596 #ifdef CONFIG_SMP
1597 void scheduler_ipi(void);
1598 extern unsigned long wait_task_inactive(struct task_struct *, long match_state);
1599 #else
1600 static inline void scheduler_ipi(void) { }
1601 static inline unsigned long wait_task_inactive(struct task_struct *p, long match_state)
1602 {
1603         return 1;
1604 }
1605 #endif
1606
1607 /*
1608  * Set thread flags in other task's structures.
1609  * See asm/thread_info.h for TIF_xxxx flags available:
1610  */
1611 static inline void set_tsk_thread_flag(struct task_struct *tsk, int flag)
1612 {
1613         set_ti_thread_flag(task_thread_info(tsk), flag);
1614 }
1615
1616 static inline void clear_tsk_thread_flag(struct task_struct *tsk, int flag)
1617 {
1618         clear_ti_thread_flag(task_thread_info(tsk), flag);
1619 }
1620
1621 static inline int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag)
1622 {
1623         return test_and_set_ti_thread_flag(task_thread_info(tsk), flag);
1624 }
1625
1626 static inline int test_and_clear_tsk_thread_flag(struct task_struct *tsk, int flag)
1627 {
1628         return test_and_clear_ti_thread_flag(task_thread_info(tsk), flag);
1629 }
1630
1631 static inline int test_tsk_thread_flag(struct task_struct *tsk, int flag)
1632 {
1633         return test_ti_thread_flag(task_thread_info(tsk), flag);
1634 }
1635
1636 static inline void set_tsk_need_resched(struct task_struct *tsk)
1637 {
1638         set_tsk_thread_flag(tsk,TIF_NEED_RESCHED);
1639 }
1640
1641 static inline void clear_tsk_need_resched(struct task_struct *tsk)
1642 {
1643         clear_tsk_thread_flag(tsk,TIF_NEED_RESCHED);
1644 }
1645
1646 static inline int test_tsk_need_resched(struct task_struct *tsk)
1647 {
1648         return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED));
1649 }
1650
1651 /*
1652  * cond_resched() and cond_resched_lock(): latency reduction via
1653  * explicit rescheduling in places that are safe. The return
1654  * value indicates whether a reschedule was done in fact.
1655  * cond_resched_lock() will drop the spinlock before scheduling,
1656  */
1657 #ifndef CONFIG_PREEMPT
1658 extern int _cond_resched(void);
1659 #else
1660 static inline int _cond_resched(void) { return 0; }
1661 #endif
1662
1663 #define cond_resched() ({                       \
1664         ___might_sleep(__FILE__, __LINE__, 0);  \
1665         _cond_resched();                        \
1666 })
1667
1668 extern int __cond_resched_lock(spinlock_t *lock);
1669
1670 #define cond_resched_lock(lock) ({                              \
1671         ___might_sleep(__FILE__, __LINE__, PREEMPT_LOCK_OFFSET);\
1672         __cond_resched_lock(lock);                              \
1673 })
1674
1675 static inline void cond_resched_rcu(void)
1676 {
1677 #if defined(CONFIG_DEBUG_ATOMIC_SLEEP) || !defined(CONFIG_PREEMPT_RCU)
1678         rcu_read_unlock();
1679         cond_resched();
1680         rcu_read_lock();
1681 #endif
1682 }
1683
1684 /*
1685  * Does a critical section need to be broken due to another
1686  * task waiting?: (technically does not depend on CONFIG_PREEMPT,
1687  * but a general need for low latency)
1688  */
1689 static inline int spin_needbreak(spinlock_t *lock)
1690 {
1691 #ifdef CONFIG_PREEMPT
1692         return spin_is_contended(lock);
1693 #else
1694         return 0;
1695 #endif
1696 }
1697
1698 static __always_inline bool need_resched(void)
1699 {
1700         return unlikely(tif_need_resched());
1701 }
1702
1703 /*
1704  * Wrappers for p->thread_info->cpu access. No-op on UP.
1705  */
1706 #ifdef CONFIG_SMP
1707
1708 static inline unsigned int task_cpu(const struct task_struct *p)
1709 {
1710 #ifdef CONFIG_THREAD_INFO_IN_TASK
1711         return p->cpu;
1712 #else
1713         return task_thread_info(p)->cpu;
1714 #endif
1715 }
1716
1717 extern void set_task_cpu(struct task_struct *p, unsigned int cpu);
1718
1719 #else
1720
1721 static inline unsigned int task_cpu(const struct task_struct *p)
1722 {
1723         return 0;
1724 }
1725
1726 static inline void set_task_cpu(struct task_struct *p, unsigned int cpu)
1727 {
1728 }
1729
1730 #endif /* CONFIG_SMP */
1731
1732 /*
1733  * In order to reduce various lock holder preemption latencies provide an
1734  * interface to see if a vCPU is currently running or not.
1735  *
1736  * This allows us to terminate optimistic spin loops and block, analogous to
1737  * the native optimistic spin heuristic of testing if the lock owner task is
1738  * running or not.
1739  */
1740 #ifndef vcpu_is_preempted
1741 # define vcpu_is_preempted(cpu) false
1742 #endif
1743
1744 extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask);
1745 extern long sched_getaffinity(pid_t pid, struct cpumask *mask);
1746
1747 #ifndef TASK_SIZE_OF
1748 #define TASK_SIZE_OF(tsk)       TASK_SIZE
1749 #endif
1750
1751 #endif