1 #ifndef _LINUX_SCHED_H 2 #define _LINUX_SCHED_H 3 4 /* 5 * cloning flags: 6 */ 7 #define CSIGNAL 0x000000ff /* signal mask to be sent at exit */ 8 #define CLONE_VM 0x00000100 /* set if VM shared between processes */ 9 #define CLONE_FS 0x00000200 /* set if fs info shared between processes */ 10 #define CLONE_FILES 0x00000400 /* set if open files shared between processes */ 11 #define CLONE_SIGHAND 0x00000800 /* set if signal handlers and blocked signals shared */ 12 #define CLONE_PTRACE 0x00002000 /* set if we want to let tracing continue on the child too */ 13 #define CLONE_VFORK 0x00004000 /* set if the parent wants the child to wake it up on mm_release */ 14 #define CLONE_PARENT 0x00008000 /* set if we want to have the same parent as the cloner */ 15 #define CLONE_THREAD 0x00010000 /* Same thread group? */ 16 #define CLONE_NEWNS 0x00020000 /* New namespace group? */ 17 #define CLONE_SYSVSEM 0x00040000 /* share system V SEM_UNDO semantics */ 18 #define CLONE_SETTLS 0x00080000 /* create a new TLS for the child */ 19 #define CLONE_PARENT_SETTID 0x00100000 /* set the TID in the parent */ 20 #define CLONE_CHILD_CLEARTID 0x00200000 /* clear the TID in the child */ 21 #define CLONE_DETACHED 0x00400000 /* Unused, ignored */ 22 #define CLONE_UNTRACED 0x00800000 /* set if the tracing process can't force CLONE_PTRACE on this clone */ 23 #define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */ 24 /* 0x02000000 was previously the unused CLONE_STOPPED (Start in stopped state) 25 and is now available for re-use. */ 26 #define CLONE_NEWUTS 0x04000000 /* New utsname group? */ 27 #define CLONE_NEWIPC 0x08000000 /* New ipcs */ 28 #define CLONE_NEWUSER 0x10000000 /* New user namespace */ 29 #define CLONE_NEWPID 0x20000000 /* New pid namespace */ 30 #define CLONE_NEWNET 0x40000000 /* New network namespace */ 31 #define CLONE_IO 0x80000000 /* Clone io context */ 32 33 /* 34 * Scheduling policies 35 */ 36 #define SCHED_NORMAL 0 37 #define SCHED_FIFO 1 38 #define SCHED_RR 2 39 #define SCHED_BATCH 3 40 /* SCHED_ISO: reserved but not implemented yet */ 41 #define SCHED_IDLE 5 42 /* Can be ORed in to make sure the process is reverted back to SCHED_NORMAL on fork */ 43 #define SCHED_RESET_ON_FORK 0x40000000 44 45 #ifdef __KERNEL__ 46 47 struct sched_param { 48 int sched_priority; 49 }; 50 51 #include <asm/param.h> /* for HZ */ 52 53 #include <linux/capability.h> 54 #include <linux/threads.h> 55 #include <linux/kernel.h> 56 #include <linux/types.h> 57 #include <linux/timex.h> 58 #include <linux/jiffies.h> 59 #include <linux/rbtree.h> 60 #include <linux/thread_info.h> 61 #include <linux/cpumask.h> 62 #include <linux/errno.h> 63 #include <linux/nodemask.h> 64 #include <linux/mm_types.h> 65 66 #include <asm/page.h> 67 #include <asm/ptrace.h> 68 #include <asm/cputime.h> 69 70 #include <linux/smp.h> 71 #include <linux/sem.h> 72 #include <linux/signal.h> 73 #include <linux/compiler.h> 74 #include <linux/completion.h> 75 #include <linux/pid.h> 76 #include <linux/percpu.h> 77 #include <linux/topology.h> 78 #include <linux/proportions.h> 79 #include <linux/seccomp.h> 80 #include <linux/rcupdate.h> 81 #include <linux/rculist.h> 82 #include <linux/rtmutex.h> 83 84 #include <linux/time.h> 85 #include <linux/param.h> 86 #include <linux/resource.h> 87 #include <linux/timer.h> 88 #include <linux/hrtimer.h> 89 #include <linux/task_io_accounting.h> 90 #include <linux/latencytop.h> 91 #include <linux/cred.h> 92 #include <linux/llist.h> 93 #include <linux/uidgid.h> 94 95 #include <asm/processor.h> 96 97 struct exec_domain; 98 struct futex_pi_state; 99 struct robust_list_head; 100 struct bio_list; 101 struct fs_struct; 102 struct perf_event_context; 103 struct blk_plug; 104 105 /* 106 * List of flags we want to share for kernel threads, 107 * if only because they are not used by them anyway. 108 */ 109 #define CLONE_KERNEL (CLONE_FS | CLONE_FILES | CLONE_SIGHAND) 110 111 /* 112 * These are the constant used to fake the fixed-point load-average 113 * counting. Some notes: 114 * - 11 bit fractions expand to 22 bits by the multiplies: this gives 115 * a load-average precision of 10 bits integer + 11 bits fractional 116 * - if you want to count load-averages more often, you need more 117 * precision, or rounding will get you. With 2-second counting freq, 118 * the EXP_n values would be 1981, 2034 and 2043 if still using only 119 * 11 bit fractions. 120 */ 121 extern unsigned long avenrun[]; /* Load averages */ 122 extern void get_avenrun(unsigned long *loads, unsigned long offset, int shift); 123 124 #define FSHIFT 11 /* nr of bits of precision */ 125 #define FIXED_1 (1<<FSHIFT) /* 1.0 as fixed-point */ 126 #define LOAD_FREQ (5*HZ+1) /* 5 sec intervals */ 127 #define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point */ 128 #define EXP_5 2014 /* 1/exp(5sec/5min) */ 129 #define EXP_15 2037 /* 1/exp(5sec/15min) */ 130 131 #define CALC_LOAD(load,exp,n) \ 132 load *= exp; \ 133 load += n*(FIXED_1-exp); \ 134 load >>= FSHIFT; 135 136 extern unsigned long total_forks; 137 extern int nr_threads; 138 DECLARE_PER_CPU(unsigned long, process_counts); 139 extern int nr_processes(void); 140 extern unsigned long nr_running(void); 141 extern unsigned long nr_uninterruptible(void); 142 extern unsigned long nr_iowait(void); 143 extern unsigned long nr_iowait_cpu(int cpu); 144 extern unsigned long this_cpu_load(void); 145 146 147 extern void calc_global_load(unsigned long ticks); 148 extern void update_cpu_load_nohz(void); 149 150 extern unsigned long get_parent_ip(unsigned long addr); 151 152 struct seq_file; 153 struct cfs_rq; 154 struct task_group; 155 #ifdef CONFIG_SCHED_DEBUG 156 extern void proc_sched_show_task(struct task_struct *p, struct seq_file *m); 157 extern void proc_sched_set_task(struct task_struct *p); 158 extern void 159 print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq); 160 #else 161 static inline void 162 proc_sched_show_task(struct task_struct *p, struct seq_file *m) 163 { 164 } 165 static inline void proc_sched_set_task(struct task_struct *p) 166 { 167 } 168 static inline void 169 print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) 170 { 171 } 172 #endif 173 174 /* 175 * Task state bitmask. NOTE! These bits are also 176 * encoded in fs/proc/array.c: get_task_state(). 177 * 178 * We have two separate sets of flags: task->state 179 * is about runnability, while task->exit_state are 180 * about the task exiting. Confusing, but this way 181 * modifying one set can't modify the other one by 182 * mistake. 183 */ 184 #define TASK_RUNNING 0 185 #define TASK_INTERRUPTIBLE 1 186 #define TASK_UNINTERRUPTIBLE 2 187 #define __TASK_STOPPED 4 188 #define __TASK_TRACED 8 189 /* in tsk->exit_state */ 190 #define EXIT_ZOMBIE 16 191 #define EXIT_DEAD 32 192 /* in tsk->state again */ 193 #define TASK_DEAD 64 194 #define TASK_WAKEKILL 128 195 #define TASK_WAKING 256 196 #define TASK_STATE_MAX 512 197 198 #define TASK_STATE_TO_CHAR_STR "RSDTtZXxKW" 199 200 extern char ___assert_task_state[1 - 2*!!( 201 sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)]; 202 203 /* Convenience macros for the sake of set_task_state */ 204 #define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE) 205 #define TASK_STOPPED (TASK_WAKEKILL | __TASK_STOPPED) 206 #define TASK_TRACED (TASK_WAKEKILL | __TASK_TRACED) 207 208 /* Convenience macros for the sake of wake_up */ 209 #define TASK_NORMAL (TASK_INTERRUPTIBLE | TASK_UNINTERRUPTIBLE) 210 #define TASK_ALL (TASK_NORMAL | __TASK_STOPPED | __TASK_TRACED) 211 212 /* get_task_state() */ 213 #define TASK_REPORT (TASK_RUNNING | TASK_INTERRUPTIBLE | \ 214 TASK_UNINTERRUPTIBLE | __TASK_STOPPED | \ 215 __TASK_TRACED) 216 217 #define task_is_traced(task) ((task->state & __TASK_TRACED) != 0) 218 #define task_is_stopped(task) ((task->state & __TASK_STOPPED) != 0) 219 #define task_is_dead(task) ((task)->exit_state != 0) 220 #define task_is_stopped_or_traced(task) \ 221 ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0) 222 #define task_contributes_to_load(task) \ 223 ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \ 224 (task->flags & PF_FROZEN) == 0) 225 226 #define __set_task_state(tsk, state_value) \ 227 do { (tsk)->state = (state_value); } while (0) 228 #define set_task_state(tsk, state_value) \ 229 set_mb((tsk)->state, (state_value)) 230 231 /* 232 * set_current_state() includes a barrier so that the write of current->state 233 * is correctly serialised wrt the caller's subsequent test of whether to 234 * actually sleep: 235 * 236 * set_current_state(TASK_UNINTERRUPTIBLE); 237 * if (do_i_need_to_sleep()) 238 * schedule(); 239 * 240 * If the caller does not need such serialisation then use __set_current_state() 241 */ 242 #define __set_current_state(state_value) \ 243 do { current->state = (state_value); } while (0) 244 #define set_current_state(state_value) \ 245 set_mb(current->state, (state_value)) 246 247 /* Task command name length */ 248 #define TASK_COMM_LEN 16 249 250 #include <linux/spinlock.h> 251 252 /* 253 * This serializes "schedule()" and also protects 254 * the run-queue from deletions/modifications (but 255 * _adding_ to the beginning of the run-queue has 256 * a separate lock). 257 */ 258 extern rwlock_t tasklist_lock; 259 extern spinlock_t mmlist_lock; 260 261 struct task_struct; 262 263 #ifdef CONFIG_PROVE_RCU 264 extern int lockdep_tasklist_lock_is_held(void); 265 #endif /* #ifdef CONFIG_PROVE_RCU */ 266 267 extern void sched_init(void); 268 extern void sched_init_smp(void); 269 extern asmlinkage void schedule_tail(struct task_struct *prev); 270 extern void init_idle(struct task_struct *idle, int cpu); 271 extern void init_idle_bootup_task(struct task_struct *idle); 272 273 extern int runqueue_is_locked(int cpu); 274 275 #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) 276 extern void nohz_balance_enter_idle(int cpu); 277 extern void set_cpu_sd_state_idle(void); 278 extern int get_nohz_timer_target(void); 279 #else 280 static inline void nohz_balance_enter_idle(int cpu) { } 281 static inline void set_cpu_sd_state_idle(void) { } 282 #endif 283 284 /* 285 * Only dump TASK_* tasks. (0 for all tasks) 286 */ 287 extern void show_state_filter(unsigned long state_filter); 288 289 static inline void show_state(void) 290 { 291 show_state_filter(0); 292 } 293 294 extern void show_regs(struct pt_regs *); 295 296 /* 297 * TASK is a pointer to the task whose backtrace we want to see (or NULL for current 298 * task), SP is the stack pointer of the first frame that should be shown in the back 299 * trace (or NULL if the entire call-chain of the task should be shown). 300 */ 301 extern void show_stack(struct task_struct *task, unsigned long *sp); 302 303 void io_schedule(void); 304 long io_schedule_timeout(long timeout); 305 306 extern void cpu_init (void); 307 extern void trap_init(void); 308 extern void update_process_times(int user); 309 extern void scheduler_tick(void); 310 311 extern void sched_show_task(struct task_struct *p); 312 313 #ifdef CONFIG_LOCKUP_DETECTOR 314 extern void touch_softlockup_watchdog(void); 315 extern void touch_softlockup_watchdog_sync(void); 316 extern void touch_all_softlockup_watchdogs(void); 317 extern int proc_dowatchdog_thresh(struct ctl_table *table, int write, 318 void __user *buffer, 319 size_t *lenp, loff_t *ppos); 320 extern unsigned int softlockup_panic; 321 void lockup_detector_init(void); 322 #else 323 static inline void touch_softlockup_watchdog(void) 324 { 325 } 326 static inline void touch_softlockup_watchdog_sync(void) 327 { 328 } 329 static inline void touch_all_softlockup_watchdogs(void) 330 { 331 } 332 static inline void lockup_detector_init(void) 333 { 334 } 335 #endif 336 337 #ifdef CONFIG_DETECT_HUNG_TASK 338 extern unsigned int sysctl_hung_task_panic; 339 extern unsigned long sysctl_hung_task_check_count; 340 extern unsigned long sysctl_hung_task_timeout_secs; 341 extern unsigned long sysctl_hung_task_warnings; 342 extern int proc_dohung_task_timeout_secs(struct ctl_table *table, int write, 343 void __user *buffer, 344 size_t *lenp, loff_t *ppos); 345 #else 346 /* Avoid need for ifdefs elsewhere in the code */ 347 enum { sysctl_hung_task_timeout_secs = 0 }; 348 #endif 349 350 /* Attach to any functions which should be ignored in wchan output. */ 351 #define __sched __attribute__((__section__(".sched.text"))) 352 353 /* Linker adds these: start and end of __sched functions */ 354 extern char __sched_text_start[], __sched_text_end[]; 355 356 /* Is this address in the __sched functions? */ 357 extern int in_sched_functions(unsigned long addr); 358 359 #define MAX_SCHEDULE_TIMEOUT LONG_MAX 360 extern signed long schedule_timeout(signed long timeout); 361 extern signed long schedule_timeout_interruptible(signed long timeout); 362 extern signed long schedule_timeout_killable(signed long timeout); 363 extern signed long schedule_timeout_uninterruptible(signed long timeout); 364 asmlinkage void schedule(void); 365 extern void schedule_preempt_disabled(void); 366 extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner); 367 368 struct nsproxy; 369 struct user_namespace; 370 371 /* 372 * Default maximum number of active map areas, this limits the number of vmas 373 * per mm struct. Users can overwrite this number by sysctl but there is a 374 * problem. 375 * 376 * When a program's coredump is generated as ELF format, a section is created 377 * per a vma. In ELF, the number of sections is represented in unsigned short. 378 * This means the number of sections should be smaller than 65535 at coredump. 379 * Because the kernel adds some informative sections to a image of program at 380 * generating coredump, we need some margin. The number of extra sections is 381 * 1-3 now and depends on arch. We use "5" as safe margin, here. 382 */ 383 #define MAPCOUNT_ELF_CORE_MARGIN (5) 384 #define DEFAULT_MAX_MAP_COUNT (USHRT_MAX - MAPCOUNT_ELF_CORE_MARGIN) 385 386 extern int sysctl_max_map_count; 387 388 #include <linux/aio.h> 389 390 #ifdef CONFIG_MMU 391 extern void arch_pick_mmap_layout(struct mm_struct *mm); 392 extern unsigned long 393 arch_get_unmapped_area(struct file *, unsigned long, unsigned long, 394 unsigned long, unsigned long); 395 extern unsigned long 396 arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr, 397 unsigned long len, unsigned long pgoff, 398 unsigned long flags); 399 extern void arch_unmap_area(struct mm_struct *, unsigned long); 400 extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long); 401 #else 402 static inline void arch_pick_mmap_layout(struct mm_struct *mm) {} 403 #endif 404 405 406 extern void set_dumpable(struct mm_struct *mm, int value); 407 extern int get_dumpable(struct mm_struct *mm); 408 409 /* get/set_dumpable() values */ 410 #define SUID_DUMPABLE_DISABLED 0 411 #define SUID_DUMPABLE_ENABLED 1 412 #define SUID_DUMPABLE_SAFE 2 413 414 /* mm flags */ 415 /* dumpable bits */ 416 #define MMF_DUMPABLE 0 /* core dump is permitted */ 417 #define MMF_DUMP_SECURELY 1 /* core file is readable only by root */ 418 419 #define MMF_DUMPABLE_BITS 2 420 #define MMF_DUMPABLE_MASK ((1 << MMF_DUMPABLE_BITS) - 1) 421 422 /* coredump filter bits */ 423 #define MMF_DUMP_ANON_PRIVATE 2 424 #define MMF_DUMP_ANON_SHARED 3 425 #define MMF_DUMP_MAPPED_PRIVATE 4 426 #define MMF_DUMP_MAPPED_SHARED 5 427 #define MMF_DUMP_ELF_HEADERS 6 428 #define MMF_DUMP_HUGETLB_PRIVATE 7 429 #define MMF_DUMP_HUGETLB_SHARED 8 430 431 #define MMF_DUMP_FILTER_SHIFT MMF_DUMPABLE_BITS 432 #define MMF_DUMP_FILTER_BITS 7 433 #define MMF_DUMP_FILTER_MASK \ 434 (((1 << MMF_DUMP_FILTER_BITS) - 1) << MMF_DUMP_FILTER_SHIFT) 435 #define MMF_DUMP_FILTER_DEFAULT \ 436 ((1 << MMF_DUMP_ANON_PRIVATE) | (1 << MMF_DUMP_ANON_SHARED) |\ 437 (1 << MMF_DUMP_HUGETLB_PRIVATE) | MMF_DUMP_MASK_DEFAULT_ELF) 438 439 #ifdef CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS 440 # define MMF_DUMP_MASK_DEFAULT_ELF (1 << MMF_DUMP_ELF_HEADERS) 441 #else 442 # define MMF_DUMP_MASK_DEFAULT_ELF 0 443 #endif 444 /* leave room for more dump flags */ 445 #define MMF_VM_MERGEABLE 16 /* KSM may merge identical pages */ 446 #define MMF_VM_HUGEPAGE 17 /* set when VM_HUGEPAGE is set on vma */ 447 #define MMF_EXE_FILE_CHANGED 18 /* see prctl_set_mm_exe_file() */ 448 449 #define MMF_HAS_UPROBES 19 /* has uprobes */ 450 #define MMF_RECALC_UPROBES 20 /* MMF_HAS_UPROBES can be wrong */ 451 452 #define MMF_INIT_MASK (MMF_DUMPABLE_MASK | MMF_DUMP_FILTER_MASK) 453 454 struct sighand_struct { 455 atomic_t count; 456 struct k_sigaction action[_NSIG]; 457 spinlock_t siglock; 458 wait_queue_head_t signalfd_wqh; 459 }; 460 461 struct pacct_struct { 462 int ac_flag; 463 long ac_exitcode; 464 unsigned long ac_mem; 465 cputime_t ac_utime, ac_stime; 466 unsigned long ac_minflt, ac_majflt; 467 }; 468 469 struct cpu_itimer { 470 cputime_t expires; 471 cputime_t incr; 472 u32 error; 473 u32 incr_error; 474 }; 475 476 /** 477 * struct task_cputime - collected CPU time counts 478 * @utime: time spent in user mode, in &cputime_t units 479 * @stime: time spent in kernel mode, in &cputime_t units 480 * @sum_exec_runtime: total time spent on the CPU, in nanoseconds 481 * 482 * This structure groups together three kinds of CPU time that are 483 * tracked for threads and thread groups. Most things considering 484 * CPU time want to group these counts together and treat all three 485 * of them in parallel. 486 */ 487 struct task_cputime { 488 cputime_t utime; 489 cputime_t stime; 490 unsigned long long sum_exec_runtime; 491 }; 492 /* Alternate field names when used to cache expirations. */ 493 #define prof_exp stime 494 #define virt_exp utime 495 #define sched_exp sum_exec_runtime 496 497 #define INIT_CPUTIME \ 498 (struct task_cputime) { \ 499 .utime = 0, \ 500 .stime = 0, \ 501 .sum_exec_runtime = 0, \ 502 } 503 504 /* 505 * Disable preemption until the scheduler is running. 506 * Reset by start_kernel()->sched_init()->init_idle(). 507 * 508 * We include PREEMPT_ACTIVE to avoid cond_resched() from working 509 * before the scheduler is active -- see should_resched(). 510 */ 511 #define INIT_PREEMPT_COUNT (1 + PREEMPT_ACTIVE) 512 513 /** 514 * struct thread_group_cputimer - thread group interval timer counts 515 * @cputime: thread group interval timers. 516 * @running: non-zero when there are timers running and 517 * @cputime receives updates. 518 * @lock: lock for fields in this struct. 519 * 520 * This structure contains the version of task_cputime, above, that is 521 * used for thread group CPU timer calculations. 522 */ 523 struct thread_group_cputimer { 524 struct task_cputime cputime; 525 int running; 526 raw_spinlock_t lock; 527 }; 528 529 #include <linux/rwsem.h> 530 struct autogroup; 531 532 /* 533 * NOTE! "signal_struct" does not have its own 534 * locking, because a shared signal_struct always 535 * implies a shared sighand_struct, so locking 536 * sighand_struct is always a proper superset of 537 * the locking of signal_struct. 538 */ 539 struct signal_struct { 540 atomic_t sigcnt; 541 atomic_t live; 542 int nr_threads; 543 544 wait_queue_head_t wait_chldexit; /* for wait4() */ 545 546 /* current thread group signal load-balancing target: */ 547 struct task_struct *curr_target; 548 549 /* shared signal handling: */ 550 struct sigpending shared_pending; 551 552 /* thread group exit support */ 553 int group_exit_code; 554 /* overloaded: 555 * - notify group_exit_task when ->count is equal to notify_count 556 * - everyone except group_exit_task is stopped during signal delivery 557 * of fatal signals, group_exit_task processes the signal. 558 */ 559 int notify_count; 560 struct task_struct *group_exit_task; 561 562 /* thread group stop support, overloads group_exit_code too */ 563 int group_stop_count; 564 unsigned int flags; /* see SIGNAL_* flags below */ 565 566 /* 567 * PR_SET_CHILD_SUBREAPER marks a process, like a service 568 * manager, to re-parent orphan (double-forking) child processes 569 * to this process instead of 'init'. The service manager is 570 * able to receive SIGCHLD signals and is able to investigate 571 * the process until it calls wait(). All children of this 572 * process will inherit a flag if they should look for a 573 * child_subreaper process at exit. 574 */ 575 unsigned int is_child_subreaper:1; 576 unsigned int has_child_subreaper:1; 577 578 /* POSIX.1b Interval Timers */ 579 struct list_head posix_timers; 580 581 /* ITIMER_REAL timer for the process */ 582 struct hrtimer real_timer; 583 struct pid *leader_pid; 584 ktime_t it_real_incr; 585 586 /* 587 * ITIMER_PROF and ITIMER_VIRTUAL timers for the process, we use 588 * CPUCLOCK_PROF and CPUCLOCK_VIRT for indexing array as these 589 * values are defined to 0 and 1 respectively 590 */ 591 struct cpu_itimer it[2]; 592 593 /* 594 * Thread group totals for process CPU timers. 595 * See thread_group_cputimer(), et al, for details. 596 */ 597 struct thread_group_cputimer cputimer; 598 599 /* Earliest-expiration cache. */ 600 struct task_cputime cputime_expires; 601 602 struct list_head cpu_timers[3]; 603 604 struct pid *tty_old_pgrp; 605 606 /* boolean value for session group leader */ 607 int leader; 608 609 struct tty_struct *tty; /* NULL if no tty */ 610 611 #ifdef CONFIG_SCHED_AUTOGROUP 612 struct autogroup *autogroup; 613 #endif 614 /* 615 * Cumulative resource counters for dead threads in the group, 616 * and for reaped dead child processes forked by this group. 617 * Live threads maintain their own counters and add to these 618 * in __exit_signal, except for the group leader. 619 */ 620 cputime_t utime, stime, cutime, cstime; 621 cputime_t gtime; 622 cputime_t cgtime; 623 #ifndef CONFIG_VIRT_CPU_ACCOUNTING 624 cputime_t prev_utime, prev_stime; 625 #endif 626 unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; 627 unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; 628 unsigned long inblock, oublock, cinblock, coublock; 629 unsigned long maxrss, cmaxrss; 630 struct task_io_accounting ioac; 631 632 /* 633 * Cumulative ns of schedule CPU time fo dead threads in the 634 * group, not including a zombie group leader, (This only differs 635 * from jiffies_to_ns(utime + stime) if sched_clock uses something 636 * other than jiffies.) 637 */ 638 unsigned long long sum_sched_runtime; 639 640 /* 641 * We don't bother to synchronize most readers of this at all, 642 * because there is no reader checking a limit that actually needs 643 * to get both rlim_cur and rlim_max atomically, and either one 644 * alone is a single word that can safely be read normally. 645 * getrlimit/setrlimit use task_lock(current->group_leader) to 646 * protect this instead of the siglock, because they really 647 * have no need to disable irqs. 648 */ 649 struct rlimit rlim[RLIM_NLIMITS]; 650 651 #ifdef CONFIG_BSD_PROCESS_ACCT 652 struct pacct_struct pacct; /* per-process accounting information */ 653 #endif 654 #ifdef CONFIG_TASKSTATS 655 struct taskstats *stats; 656 #endif 657 #ifdef CONFIG_AUDIT 658 unsigned audit_tty; 659 struct tty_audit_buf *tty_audit_buf; 660 #endif 661 #ifdef CONFIG_CGROUPS 662 /* 663 * group_rwsem prevents new tasks from entering the threadgroup and 664 * member tasks from exiting,a more specifically, setting of 665 * PF_EXITING. fork and exit paths are protected with this rwsem 666 * using threadgroup_change_begin/end(). Users which require 667 * threadgroup to remain stable should use threadgroup_[un]lock() 668 * which also takes care of exec path. Currently, cgroup is the 669 * only user. 670 */ 671 struct rw_semaphore group_rwsem; 672 #endif 673 674 int oom_adj; /* OOM kill score adjustment (bit shift) */ 675 int oom_score_adj; /* OOM kill score adjustment */ 676 int oom_score_adj_min; /* OOM kill score adjustment minimum value. 677 * Only settable by CAP_SYS_RESOURCE. */ 678 679 struct mutex cred_guard_mutex; /* guard against foreign influences on 680 * credential calculations 681 * (notably. ptrace) */ 682 }; 683 684 /* 685 * Bits in flags field of signal_struct. 686 */ 687 #define SIGNAL_STOP_STOPPED 0x00000001 /* job control stop in effect */ 688 #define SIGNAL_STOP_CONTINUED 0x00000002 /* SIGCONT since WCONTINUED reap */ 689 #define SIGNAL_GROUP_EXIT 0x00000004 /* group exit in progress */ 690 /* 691 * Pending notifications to parent. 692 */ 693 #define SIGNAL_CLD_STOPPED 0x00000010 694 #define SIGNAL_CLD_CONTINUED 0x00000020 695 #define SIGNAL_CLD_MASK (SIGNAL_CLD_STOPPED|SIGNAL_CLD_CONTINUED) 696 697 #define SIGNAL_UNKILLABLE 0x00000040 /* for init: ignore fatal signals */ 698 699 /* If true, all threads except ->group_exit_task have pending SIGKILL */ 700 static inline int signal_group_exit(const struct signal_struct *sig) 701 { 702 return (sig->flags & SIGNAL_GROUP_EXIT) || 703 (sig->group_exit_task != NULL); 704 } 705 706 /* 707 * Some day this will be a full-fledged user tracking system.. 708 */ 709 struct user_struct { 710 atomic_t __count; /* reference count */ 711 atomic_t processes; /* How many processes does this user have? */ 712 atomic_t files; /* How many open files does this user have? */ 713 atomic_t sigpending; /* How many pending signals does this user have? */ 714 #ifdef CONFIG_INOTIFY_USER 715 atomic_t inotify_watches; /* How many inotify watches does this user have? */ 716 atomic_t inotify_devs; /* How many inotify devs does this user have opened? */ 717 #endif 718 #ifdef CONFIG_FANOTIFY 719 atomic_t fanotify_listeners; 720 #endif 721 #ifdef CONFIG_EPOLL 722 atomic_long_t epoll_watches; /* The number of file descriptors currently watched */ 723 #endif 724 #ifdef CONFIG_POSIX_MQUEUE 725 /* protected by mq_lock */ 726 unsigned long mq_bytes; /* How many bytes can be allocated to mqueue? */ 727 #endif 728 unsigned long locked_shm; /* How many pages of mlocked shm ? */ 729 730 #ifdef CONFIG_KEYS 731 struct key *uid_keyring; /* UID specific keyring */ 732 struct key *session_keyring; /* UID's default session keyring */ 733 #endif 734 735 /* Hash table maintenance information */ 736 struct hlist_node uidhash_node; 737 kuid_t uid; 738 739 #ifdef CONFIG_PERF_EVENTS 740 atomic_long_t locked_vm; 741 #endif 742 }; 743 744 extern int uids_sysfs_init(void); 745 746 extern struct user_struct *find_user(kuid_t); 747 748 extern struct user_struct root_user; 749 #define INIT_USER (&root_user) 750 751 752 struct backing_dev_info; 753 struct reclaim_state; 754 755 #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) 756 struct sched_info { 757 /* cumulative counters */ 758 unsigned long pcount; /* # of times run on this cpu */ 759 unsigned long long run_delay; /* time spent waiting on a runqueue */ 760 761 /* timestamps */ 762 unsigned long long last_arrival,/* when we last ran on a cpu */ 763 last_queued; /* when we were last queued to run */ 764 }; 765 #endif /* defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) */ 766 767 #ifdef CONFIG_TASK_DELAY_ACCT 768 struct task_delay_info { 769 spinlock_t lock; 770 unsigned int flags; /* Private per-task flags */ 771 772 /* For each stat XXX, add following, aligned appropriately 773 * 774 * struct timespec XXX_start, XXX_end; 775 * u64 XXX_delay; 776 * u32 XXX_count; 777 * 778 * Atomicity of updates to XXX_delay, XXX_count protected by 779 * single lock above (split into XXX_lock if contention is an issue). 780 */ 781 782 /* 783 * XXX_count is incremented on every XXX operation, the delay 784 * associated with the operation is added to XXX_delay. 785 * XXX_delay contains the accumulated delay time in nanoseconds. 786 */ 787 struct timespec blkio_start, blkio_end; /* Shared by blkio, swapin */ 788 u64 blkio_delay; /* wait for sync block io completion */ 789 u64 swapin_delay; /* wait for swapin block io completion */ 790 u32 blkio_count; /* total count of the number of sync block */ 791 /* io operations performed */ 792 u32 swapin_count; /* total count of the number of swapin block */ 793 /* io operations performed */ 794 795 struct timespec freepages_start, freepages_end; 796 u64 freepages_delay; /* wait for memory reclaim */ 797 u32 freepages_count; /* total count of memory reclaim */ 798 }; 799 #endif /* CONFIG_TASK_DELAY_ACCT */ 800 801 static inline int sched_info_on(void) 802 { 803 #ifdef CONFIG_SCHEDSTATS 804 return 1; 805 #elif defined(CONFIG_TASK_DELAY_ACCT) 806 extern int delayacct_on; 807 return delayacct_on; 808 #else 809 return 0; 810 #endif 811 } 812 813 enum cpu_idle_type { 814 CPU_IDLE, 815 CPU_NOT_IDLE, 816 CPU_NEWLY_IDLE, 817 CPU_MAX_IDLE_TYPES 818 }; 819 820 /* 821 * Increase resolution of nice-level calculations for 64-bit architectures. 822 * The extra resolution improves shares distribution and load balancing of 823 * low-weight task groups (eg. nice +19 on an autogroup), deeper taskgroup 824 * hierarchies, especially on larger systems. This is not a user-visible change 825 * and does not change the user-interface for setting shares/weights. 826 * 827 * We increase resolution only if we have enough bits to allow this increased 828 * resolution (i.e. BITS_PER_LONG > 32). The costs for increasing resolution 829 * when BITS_PER_LONG <= 32 are pretty high and the returns do not justify the 830 * increased costs. 831 */ 832 #if 0 /* BITS_PER_LONG > 32 -- currently broken: it increases power usage under light load */ 833 # define SCHED_LOAD_RESOLUTION 10 834 # define scale_load(w) ((w) << SCHED_LOAD_RESOLUTION) 835 # define scale_load_down(w) ((w) >> SCHED_LOAD_RESOLUTION) 836 #else 837 # define SCHED_LOAD_RESOLUTION 0 838 # define scale_load(w) (w) 839 # define scale_load_down(w) (w) 840 #endif 841 842 #define SCHED_LOAD_SHIFT (10 + SCHED_LOAD_RESOLUTION) 843 #define SCHED_LOAD_SCALE (1L << SCHED_LOAD_SHIFT) 844 845 /* 846 * Increase resolution of cpu_power calculations 847 */ 848 #define SCHED_POWER_SHIFT 10 849 #define SCHED_POWER_SCALE (1L << SCHED_POWER_SHIFT) 850 851 /* 852 * sched-domains (multiprocessor balancing) declarations: 853 */ 854 #ifdef CONFIG_SMP 855 #define SD_LOAD_BALANCE 0x0001 /* Do load balancing on this domain. */ 856 #define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */ 857 #define SD_BALANCE_EXEC 0x0004 /* Balance on exec */ 858 #define SD_BALANCE_FORK 0x0008 /* Balance on fork, clone */ 859 #define SD_BALANCE_WAKE 0x0010 /* Balance on wakeup */ 860 #define SD_WAKE_AFFINE 0x0020 /* Wake task to waking CPU */ 861 #define SD_SHARE_CPUPOWER 0x0080 /* Domain members share cpu power */ 862 #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ 863 #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ 864 #define SD_ASYM_PACKING 0x0800 /* Place busy groups earlier in the domain */ 865 #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ 866 #define SD_OVERLAP 0x2000 /* sched_domains of this level overlap */ 867 868 extern int __weak arch_sd_sibiling_asym_packing(void); 869 870 struct sched_group_power { 871 atomic_t ref; 872 /* 873 * CPU power of this group, SCHED_LOAD_SCALE being max power for a 874 * single CPU. 875 */ 876 unsigned int power, power_orig; 877 unsigned long next_update; 878 /* 879 * Number of busy cpus in this group. 880 */ 881 atomic_t nr_busy_cpus; 882 883 unsigned long cpumask[0]; /* iteration mask */ 884 }; 885 886 struct sched_group { 887 struct sched_group *next; /* Must be a circular list */ 888 atomic_t ref; 889 890 unsigned int group_weight; 891 struct sched_group_power *sgp; 892 893 /* 894 * The CPUs this group covers. 895 * 896 * NOTE: this field is variable length. (Allocated dynamically 897 * by attaching extra space to the end of the structure, 898 * depending on how many CPUs the kernel has booted up with) 899 */ 900 unsigned long cpumask[0]; 901 }; 902 903 static inline struct cpumask *sched_group_cpus(struct sched_group *sg) 904 { 905 return to_cpumask(sg->cpumask); 906 } 907 908 /* 909 * cpumask masking which cpus in the group are allowed to iterate up the domain 910 * tree. 911 */ 912 static inline struct cpumask *sched_group_mask(struct sched_group *sg) 913 { 914 return to_cpumask(sg->sgp->cpumask); 915 } 916 917 /** 918 * group_first_cpu - Returns the first cpu in the cpumask of a sched_group. 919 * @group: The group whose first cpu is to be returned. 920 */ 921 static inline unsigned int group_first_cpu(struct sched_group *group) 922 { 923 return cpumask_first(sched_group_cpus(group)); 924 } 925 926 struct sched_domain_attr { 927 int relax_domain_level; 928 }; 929 930 #define SD_ATTR_INIT (struct sched_domain_attr) { \ 931 .relax_domain_level = -1, \ 932 } 933 934 extern int sched_domain_level_max; 935 936 struct sched_domain { 937 /* These fields must be setup */ 938 struct sched_domain *parent; /* top domain must be null terminated */ 939 struct sched_domain *child; /* bottom domain must be null terminated */ 940 struct sched_group *groups; /* the balancing groups of the domain */ 941 unsigned long min_interval; /* Minimum balance interval ms */ 942 unsigned long max_interval; /* Maximum balance interval ms */ 943 unsigned int busy_factor; /* less balancing by factor if busy */ 944 unsigned int imbalance_pct; /* No balance until over watermark */ 945 unsigned int cache_nice_tries; /* Leave cache hot tasks for # tries */ 946 unsigned int busy_idx; 947 unsigned int idle_idx; 948 unsigned int newidle_idx; 949 unsigned int wake_idx; 950 unsigned int forkexec_idx; 951 unsigned int smt_gain; 952 int flags; /* See SD_* */ 953 int level; 954 955 /* Runtime fields. */ 956 unsigned long last_balance; /* init to jiffies. units in jiffies */ 957 unsigned int balance_interval; /* initialise to 1. units in ms. */ 958 unsigned int nr_balance_failed; /* initialise to 0 */ 959 960 u64 last_update; 961 962 #ifdef CONFIG_SCHEDSTATS 963 /* load_balance() stats */ 964 unsigned int lb_count[CPU_MAX_IDLE_TYPES]; 965 unsigned int lb_failed[CPU_MAX_IDLE_TYPES]; 966 unsigned int lb_balanced[CPU_MAX_IDLE_TYPES]; 967 unsigned int lb_imbalance[CPU_MAX_IDLE_TYPES]; 968 unsigned int lb_gained[CPU_MAX_IDLE_TYPES]; 969 unsigned int lb_hot_gained[CPU_MAX_IDLE_TYPES]; 970 unsigned int lb_nobusyg[CPU_MAX_IDLE_TYPES]; 971 unsigned int lb_nobusyq[CPU_MAX_IDLE_TYPES]; 972 973 /* Active load balancing */ 974 unsigned int alb_count; 975 unsigned int alb_failed; 976 unsigned int alb_pushed; 977 978 /* SD_BALANCE_EXEC stats */ 979 unsigned int sbe_count; 980 unsigned int sbe_balanced; 981 unsigned int sbe_pushed; 982 983 /* SD_BALANCE_FORK stats */ 984 unsigned int sbf_count; 985 unsigned int sbf_balanced; 986 unsigned int sbf_pushed; 987 988 /* try_to_wake_up() stats */ 989 unsigned int ttwu_wake_remote; 990 unsigned int ttwu_move_affine; 991 unsigned int ttwu_move_balance; 992 #endif 993 #ifdef CONFIG_SCHED_DEBUG 994 char *name; 995 #endif 996 union { 997 void *private; /* used during construction */ 998 struct rcu_head rcu; /* used during destruction */ 999 }; 1000 1001 unsigned int span_weight; 1002 /* 1003 * Span of all CPUs in this domain. 1004 * 1005 * NOTE: this field is variable length. (Allocated dynamically 1006 * by attaching extra space to the end of the structure, 1007 * depending on how many CPUs the kernel has booted up with) 1008 */ 1009 unsigned long span[0]; 1010 }; 1011 1012 static inline struct cpumask *sched_domain_span(struct sched_domain *sd) 1013 { 1014 return to_cpumask(sd->span); 1015 } 1016 1017 extern void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[], 1018 struct sched_domain_attr *dattr_new); 1019 1020 /* Allocate an array of sched domains, for partition_sched_domains(). */ 1021 cpumask_var_t *alloc_sched_domains(unsigned int ndoms); 1022 void free_sched_domains(cpumask_var_t doms[], unsigned int ndoms); 1023 1024 /* Test a flag in parent sched domain */ 1025 static inline int test_sd_parent(struct sched_domain *sd, int flag) 1026 { 1027 if (sd->parent && (sd->parent->flags & flag)) 1028 return 1; 1029 1030 return 0; 1031 } 1032 1033 unsigned long default_scale_freq_power(struct sched_domain *sd, int cpu); 1034 unsigned long default_scale_smt_power(struct sched_domain *sd, int cpu); 1035 1036 bool cpus_share_cache(int this_cpu, int that_cpu); 1037 1038 #else /* CONFIG_SMP */ 1039 1040 struct sched_domain_attr; 1041 1042 static inline void 1043 partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[], 1044 struct sched_domain_attr *dattr_new) 1045 { 1046 } 1047 1048 static inline bool cpus_share_cache(int this_cpu, int that_cpu) 1049 { 1050 return true; 1051 } 1052 1053 #endif /* !CONFIG_SMP */ 1054 1055 1056 struct io_context; /* See blkdev.h */ 1057 1058 1059 #ifdef ARCH_HAS_PREFETCH_SWITCH_STACK 1060 extern void prefetch_stack(struct task_struct *t); 1061 #else 1062 static inline void prefetch_stack(struct task_struct *t) { } 1063 #endif 1064 1065 struct audit_context; /* See audit.c */ 1066 struct mempolicy; 1067 struct pipe_inode_info; 1068 struct uts_namespace; 1069 1070 struct rq; 1071 struct sched_domain; 1072 1073 /* 1074 * wake flags 1075 */ 1076 #define WF_SYNC 0x01 /* waker goes to sleep after wakup */ 1077 #define WF_FORK 0x02 /* child wakeup after fork */ 1078 #define WF_MIGRATED 0x04 /* internal use, task got migrated */ 1079 1080 #define ENQUEUE_WAKEUP 1 1081 #define ENQUEUE_HEAD 2 1082 #ifdef CONFIG_SMP 1083 #define ENQUEUE_WAKING 4 /* sched_class::task_waking was called */ 1084 #else 1085 #define ENQUEUE_WAKING 0 1086 #endif 1087 1088 #define DEQUEUE_SLEEP 1 1089 1090 struct sched_class { 1091 const struct sched_class *next; 1092 1093 void (*enqueue_task) (struct rq *rq, struct task_struct *p, int flags); 1094 void (*dequeue_task) (struct rq *rq, struct task_struct *p, int flags); 1095 void (*yield_task) (struct rq *rq); 1096 bool (*yield_to_task) (struct rq *rq, struct task_struct *p, bool preempt); 1097 1098 void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int flags); 1099 1100 struct task_struct * (*pick_next_task) (struct rq *rq); 1101 void (*put_prev_task) (struct rq *rq, struct task_struct *p); 1102 1103 #ifdef CONFIG_SMP 1104 int (*select_task_rq)(struct task_struct *p, int sd_flag, int flags); 1105 1106 void (*pre_schedule) (struct rq *this_rq, struct task_struct *task); 1107 void (*post_schedule) (struct rq *this_rq); 1108 void (*task_waking) (struct task_struct *task); 1109 void (*task_woken) (struct rq *this_rq, struct task_struct *task); 1110 1111 void (*set_cpus_allowed)(struct task_struct *p, 1112 const struct cpumask *newmask); 1113 1114 void (*rq_online)(struct rq *rq); 1115 void (*rq_offline)(struct rq *rq); 1116 #endif 1117 1118 void (*set_curr_task) (struct rq *rq); 1119 void (*task_tick) (struct rq *rq, struct task_struct *p, int queued); 1120 void (*task_fork) (struct task_struct *p); 1121 1122 void (*switched_from) (struct rq *this_rq, struct task_struct *task); 1123 void (*switched_to) (struct rq *this_rq, struct task_struct *task); 1124 void (*prio_changed) (struct rq *this_rq, struct task_struct *task, 1125 int oldprio); 1126 1127 unsigned int (*get_rr_interval) (struct rq *rq, 1128 struct task_struct *task); 1129 1130 #ifdef CONFIG_FAIR_GROUP_SCHED 1131 void (*task_move_group) (struct task_struct *p, int on_rq); 1132 #endif 1133 }; 1134 1135 struct load_weight { 1136 unsigned long weight, inv_weight; 1137 }; 1138 1139 #ifdef CONFIG_SCHEDSTATS 1140 struct sched_statistics { 1141 u64 wait_start; 1142 u64 wait_max; 1143 u64 wait_count; 1144 u64 wait_sum; 1145 u64 iowait_count; 1146 u64 iowait_sum; 1147 1148 u64 sleep_start; 1149 u64 sleep_max; 1150 s64 sum_sleep_runtime; 1151 1152 u64 block_start; 1153 u64 block_max; 1154 u64 exec_max; 1155 u64 slice_max; 1156 1157 u64 nr_migrations_cold; 1158 u64 nr_failed_migrations_affine; 1159 u64 nr_failed_migrations_running; 1160 u64 nr_failed_migrations_hot; 1161 u64 nr_forced_migrations; 1162 1163 u64 nr_wakeups; 1164 u64 nr_wakeups_sync; 1165 u64 nr_wakeups_migrate; 1166 u64 nr_wakeups_local; 1167 u64 nr_wakeups_remote; 1168 u64 nr_wakeups_affine; 1169 u64 nr_wakeups_affine_attempts; 1170 u64 nr_wakeups_passive; 1171 u64 nr_wakeups_idle; 1172 }; 1173 #endif 1174 1175 struct sched_entity { 1176 struct load_weight load; /* for load-balancing */ 1177 struct rb_node run_node; 1178 struct list_head group_node; 1179 unsigned int on_rq; 1180 1181 u64 exec_start; 1182 u64 sum_exec_runtime; 1183 u64 vruntime; 1184 u64 prev_sum_exec_runtime; 1185 1186 u64 nr_migrations; 1187 1188 #ifdef CONFIG_SCHEDSTATS 1189 struct sched_statistics statistics; 1190 #endif 1191 1192 #ifdef CONFIG_FAIR_GROUP_SCHED 1193 struct sched_entity *parent; 1194 /* rq on which this entity is (to be) queued: */ 1195 struct cfs_rq *cfs_rq; 1196 /* rq "owned" by this entity/group: */ 1197 struct cfs_rq *my_q; 1198 #endif 1199 }; 1200 1201 struct sched_rt_entity { 1202 struct list_head run_list; 1203 unsigned long timeout; 1204 unsigned int time_slice; 1205 1206 struct sched_rt_entity *back; 1207 #ifdef CONFIG_RT_GROUP_SCHED 1208 struct sched_rt_entity *parent; 1209 /* rq on which this entity is (to be) queued: */ 1210 struct rt_rq *rt_rq; 1211 /* rq "owned" by this entity/group: */ 1212 struct rt_rq *my_q; 1213 #endif 1214 }; 1215 1216 /* 1217 * default timeslice is 100 msecs (used only for SCHED_RR tasks). 1218 * Timeslices get refilled after they expire. 1219 */ 1220 #define RR_TIMESLICE (100 * HZ / 1000) 1221 1222 struct rcu_node; 1223 1224 enum perf_event_task_context { 1225 perf_invalid_context = -1, 1226 perf_hw_context = 0, 1227 perf_sw_context, 1228 perf_nr_task_contexts, 1229 }; 1230 1231 struct task_struct { 1232 volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ 1233 void *stack; 1234 atomic_t usage; 1235 unsigned int flags; /* per process flags, defined below */ 1236 unsigned int ptrace; 1237 1238 #ifdef CONFIG_SMP 1239 struct llist_node wake_entry; 1240 int on_cpu; 1241 #endif 1242 int on_rq; 1243 1244 int prio, static_prio, normal_prio; 1245 unsigned int rt_priority; 1246 const struct sched_class *sched_class; 1247 struct sched_entity se; 1248 struct sched_rt_entity rt; 1249 #ifdef CONFIG_CGROUP_SCHED 1250 struct task_group *sched_task_group; 1251 #endif 1252 1253 #ifdef CONFIG_PREEMPT_NOTIFIERS 1254 /* list of struct preempt_notifier: */ 1255 struct hlist_head preempt_notifiers; 1256 #endif 1257 1258 /* 1259 * fpu_counter contains the number of consecutive context switches 1260 * that the FPU is used. If this is over a threshold, the lazy fpu 1261 * saving becomes unlazy to save the trap. This is an unsigned char 1262 * so that after 256 times the counter wraps and the behavior turns 1263 * lazy again; this to deal with bursty apps that only use FPU for 1264 * a short time 1265 */ 1266 unsigned char fpu_counter; 1267 #ifdef CONFIG_BLK_DEV_IO_TRACE 1268 unsigned int btrace_seq; 1269 #endif 1270 1271 unsigned int policy; 1272 int nr_cpus_allowed; 1273 cpumask_t cpus_allowed; 1274 1275 #ifdef CONFIG_PREEMPT_RCU 1276 int rcu_read_lock_nesting; 1277 char rcu_read_unlock_special; 1278 struct list_head rcu_node_entry; 1279 #endif /* #ifdef CONFIG_PREEMPT_RCU */ 1280 #ifdef CONFIG_TREE_PREEMPT_RCU 1281 struct rcu_node *rcu_blocked_node; 1282 #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */ 1283 #ifdef CONFIG_RCU_BOOST 1284 struct rt_mutex *rcu_boost_mutex; 1285 #endif /* #ifdef CONFIG_RCU_BOOST */ 1286 1287 #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) 1288 struct sched_info sched_info; 1289 #endif 1290 1291 struct list_head tasks; 1292 #ifdef CONFIG_SMP 1293 struct plist_node pushable_tasks; 1294 #endif 1295 1296 struct mm_struct *mm, *active_mm; 1297 #ifdef CONFIG_COMPAT_BRK 1298 unsigned brk_randomized:1; 1299 #endif 1300 #if defined(SPLIT_RSS_COUNTING) 1301 struct task_rss_stat rss_stat; 1302 #endif 1303 /* task state */ 1304 int exit_state; 1305 int exit_code, exit_signal; 1306 int pdeath_signal; /* The signal sent when the parent dies */ 1307 unsigned int jobctl; /* JOBCTL_*, siglock protected */ 1308 /* ??? */ 1309 unsigned int personality; 1310 unsigned did_exec:1; 1311 unsigned in_execve:1; /* Tell the LSMs that the process is doing an 1312 * execve */ 1313 unsigned in_iowait:1; 1314 1315 /* task may not gain privileges */ 1316 unsigned no_new_privs:1; 1317 1318 /* Revert to default priority/policy when forking */ 1319 unsigned sched_reset_on_fork:1; 1320 unsigned sched_contributes_to_load:1; 1321 1322 pid_t pid; 1323 pid_t tgid; 1324 1325 #ifdef CONFIG_CC_STACKPROTECTOR 1326 /* Canary value for the -fstack-protector gcc feature */ 1327 unsigned long stack_canary; 1328 #endif 1329 /* 1330 * pointers to (original) parent process, youngest child, younger sibling, 1331 * older sibling, respectively. (p->father can be replaced with 1332 * p->real_parent->pid) 1333 */ 1334 struct task_struct __rcu *real_parent; /* real parent process */ 1335 struct task_struct __rcu *parent; /* recipient of SIGCHLD, wait4() reports */ 1336 /* 1337 * children/sibling forms the list of my natural children 1338 */ 1339 struct list_head children; /* list of my children */ 1340 struct list_head sibling; /* linkage in my parent's children list */ 1341 struct task_struct *group_leader; /* threadgroup leader */ 1342 1343 /* 1344 * ptraced is the list of tasks this task is using ptrace on. 1345 * This includes both natural children and PTRACE_ATTACH targets. 1346 * p->ptrace_entry is p's link on the p->parent->ptraced list. 1347 */ 1348 struct list_head ptraced; 1349 struct list_head ptrace_entry; 1350 1351 /* PID/PID hash table linkage. */ 1352 struct pid_link pids[PIDTYPE_MAX]; 1353 struct list_head thread_group; 1354 1355 struct completion *vfork_done; /* for vfork() */ 1356 int __user *set_child_tid; /* CLONE_CHILD_SETTID */ 1357 int __user *clear_child_tid; /* CLONE_CHILD_CLEARTID */ 1358 1359 cputime_t utime, stime, utimescaled, stimescaled; 1360 cputime_t gtime; 1361 #ifndef CONFIG_VIRT_CPU_ACCOUNTING 1362 cputime_t prev_utime, prev_stime; 1363 #endif 1364 unsigned long nvcsw, nivcsw; /* context switch counts */ 1365 struct timespec start_time; /* monotonic time */ 1366 struct timespec real_start_time; /* boot based time */ 1367 /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */ 1368 unsigned long min_flt, maj_flt; 1369 1370 struct task_cputime cputime_expires; 1371 struct list_head cpu_timers[3]; 1372 1373 /* process credentials */ 1374 const struct cred __rcu *real_cred; /* objective and real subjective task 1375 * credentials (COW) */ 1376 const struct cred __rcu *cred; /* effective (overridable) subjective task 1377 * credentials (COW) */ 1378 char comm[TASK_COMM_LEN]; /* executable name excluding path 1379 - access with [gs]et_task_comm (which lock 1380 it with task_lock()) 1381 - initialized normally by setup_new_exec */ 1382 /* file system info */ 1383 int link_count, total_link_count; 1384 #ifdef CONFIG_SYSVIPC 1385 /* ipc stuff */ 1386 struct sysv_sem sysvsem; 1387 #endif 1388 #ifdef CONFIG_DETECT_HUNG_TASK 1389 /* hung task detection */ 1390 unsigned long last_switch_count; 1391 #endif 1392 /* CPU-specific state of this task */ 1393 struct thread_struct thread; 1394 /* filesystem information */ 1395 struct fs_struct *fs; 1396 /* open file information */ 1397 struct files_struct *files; 1398 /* namespaces */ 1399 struct nsproxy *nsproxy; 1400 /* signal handlers */ 1401 struct signal_struct *signal; 1402 struct sighand_struct *sighand; 1403 1404 sigset_t blocked, real_blocked; 1405 sigset_t saved_sigmask; /* restored if set_restore_sigmask() was used */ 1406 struct sigpending pending; 1407 1408 unsigned long sas_ss_sp; 1409 size_t sas_ss_size; 1410 int (*notifier)(void *priv); 1411 void *notifier_data; 1412 sigset_t *notifier_mask; 1413 struct callback_head *task_works; 1414 1415 struct audit_context *audit_context; 1416 #ifdef CONFIG_AUDITSYSCALL 1417 uid_t loginuid; 1418 unsigned int sessionid; 1419 #endif 1420 struct seccomp seccomp; 1421 1422 /* Thread group tracking */ 1423 u32 parent_exec_id; 1424 u32 self_exec_id; 1425 /* Protection of (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed, 1426 * mempolicy */ 1427 spinlock_t alloc_lock; 1428 1429 /* Protection of the PI data structures: */ 1430 raw_spinlock_t pi_lock; 1431 1432 #ifdef CONFIG_RT_MUTEXES 1433 /* PI waiters blocked on a rt_mutex held by this task */ 1434 struct plist_head pi_waiters; 1435 /* Deadlock detection and priority inheritance handling */ 1436 struct rt_mutex_waiter *pi_blocked_on; 1437 #endif 1438 1439 #ifdef CONFIG_DEBUG_MUTEXES 1440 /* mutex deadlock detection */ 1441 struct mutex_waiter *blocked_on; 1442 #endif 1443 #ifdef CONFIG_TRACE_IRQFLAGS 1444 unsigned int irq_events; 1445 unsigned long hardirq_enable_ip; 1446 unsigned long hardirq_disable_ip; 1447 unsigned int hardirq_enable_event; 1448 unsigned int hardirq_disable_event; 1449 int hardirqs_enabled; 1450 int hardirq_context; 1451 unsigned long softirq_disable_ip; 1452 unsigned long softirq_enable_ip; 1453 unsigned int softirq_disable_event; 1454 unsigned int softirq_enable_event; 1455 int softirqs_enabled; 1456 int softirq_context; 1457 #endif 1458 #ifdef CONFIG_LOCKDEP 1459 # define MAX_LOCK_DEPTH 48UL 1460 u64 curr_chain_key; 1461 int lockdep_depth; 1462 unsigned int lockdep_recursion; 1463 struct held_lock held_locks[MAX_LOCK_DEPTH]; 1464 gfp_t lockdep_reclaim_gfp; 1465 #endif 1466 1467 /* journalling filesystem info */ 1468 void *journal_info; 1469 1470 /* stacked block device info */ 1471 struct bio_list *bio_list; 1472 1473 #ifdef CONFIG_BLOCK 1474 /* stack plugging */ 1475 struct blk_plug *plug; 1476 #endif 1477 1478 /* VM state */ 1479 struct reclaim_state *reclaim_state; 1480 1481 struct backing_dev_info *backing_dev_info; 1482 1483 struct io_context *io_context; 1484 1485 unsigned long ptrace_message; 1486 siginfo_t *last_siginfo; /* For ptrace use. */ 1487 struct task_io_accounting ioac; 1488 #if defined(CONFIG_TASK_XACCT) 1489 u64 acct_rss_mem1; /* accumulated rss usage */ 1490 u64 acct_vm_mem1; /* accumulated virtual memory usage */ 1491 cputime_t acct_timexpd; /* stime + utime since last update */ 1492 #endif 1493 #ifdef CONFIG_CPUSETS 1494 nodemask_t mems_allowed; /* Protected by alloc_lock */ 1495 seqcount_t mems_allowed_seq; /* Seqence no to catch updates */ 1496 int cpuset_mem_spread_rotor; 1497 int cpuset_slab_spread_rotor; 1498 #endif 1499 #ifdef CONFIG_CGROUPS 1500 /* Control Group info protected by css_set_lock */ 1501 struct css_set __rcu *cgroups; 1502 /* cg_list protected by css_set_lock and tsk->alloc_lock */ 1503 struct list_head cg_list; 1504 #endif 1505 #ifdef CONFIG_FUTEX 1506 struct robust_list_head __user *robust_list; 1507 #ifdef CONFIG_COMPAT 1508 struct compat_robust_list_head __user *compat_robust_list; 1509 #endif 1510 struct list_head pi_state_list; 1511 struct futex_pi_state *pi_state_cache; 1512 #endif 1513 #ifdef CONFIG_PERF_EVENTS 1514 struct perf_event_context *perf_event_ctxp[perf_nr_task_contexts]; 1515 struct mutex perf_event_mutex; 1516 struct list_head perf_event_list; 1517 #endif 1518 #ifdef CONFIG_NUMA 1519 struct mempolicy *mempolicy; /* Protected by alloc_lock */ 1520 short il_next; 1521 short pref_node_fork; 1522 #endif 1523 struct rcu_head rcu; 1524 1525 /* 1526 * cache last used pipe for splice 1527 */ 1528 struct pipe_inode_info *splice_pipe; 1529 #ifdef CONFIG_TASK_DELAY_ACCT 1530 struct task_delay_info *delays; 1531 #endif 1532 #ifdef CONFIG_FAULT_INJECTION 1533 int make_it_fail; 1534 #endif 1535 /* 1536 * when (nr_dirtied >= nr_dirtied_pause), it's time to call 1537 * balance_dirty_pages() for some dirty throttling pause 1538 */ 1539 int nr_dirtied; 1540 int nr_dirtied_pause; 1541 unsigned long dirty_paused_when; /* start of a write-and-pause period */ 1542 1543 #ifdef CONFIG_LATENCYTOP 1544 int latency_record_count; 1545 struct latency_record latency_record[LT_SAVECOUNT]; 1546 #endif 1547 /* 1548 * time slack values; these are used to round up poll() and 1549 * select() etc timeout values. These are in nanoseconds. 1550 */ 1551 unsigned long timer_slack_ns; 1552 unsigned long default_timer_slack_ns; 1553 1554 #ifdef CONFIG_FUNCTION_GRAPH_TRACER 1555 /* Index of current stored address in ret_stack */ 1556 int curr_ret_stack; 1557 /* Stack of return addresses for return function tracing */ 1558 struct ftrace_ret_stack *ret_stack; 1559 /* time stamp for last schedule */ 1560 unsigned long long ftrace_timestamp; 1561 /* 1562 * Number of functions that haven't been traced 1563 * because of depth overrun. 1564 */ 1565 atomic_t trace_overrun; 1566 /* Pause for the tracing */ 1567 atomic_t tracing_graph_pause; 1568 #endif 1569 #ifdef CONFIG_TRACING 1570 /* state flags for use by tracers */ 1571 unsigned long trace; 1572 /* bitmask and counter of trace recursion */ 1573 unsigned long trace_recursion; 1574 #endif /* CONFIG_TRACING */ 1575 #ifdef CONFIG_MEMCG /* memcg uses this to do batch job */ 1576 struct memcg_batch_info { 1577 int do_batch; /* incremented when batch uncharge started */ 1578 struct mem_cgroup *memcg; /* target memcg of uncharge */ 1579 unsigned long nr_pages; /* uncharged usage */ 1580 unsigned long memsw_nr_pages; /* uncharged mem+swap usage */ 1581 } memcg_batch; 1582 #endif 1583 #ifdef CONFIG_HAVE_HW_BREAKPOINT 1584 atomic_t ptrace_bp_refcnt; 1585 #endif 1586 #ifdef CONFIG_UPROBES 1587 struct uprobe_task *utask; 1588 #endif 1589 }; 1590 1591 /* Future-safe accessor for struct task_struct's cpus_allowed. */ 1592 #define tsk_cpus_allowed(tsk) (&(tsk)->cpus_allowed) 1593 1594 /* 1595 * Priority of a process goes from 0..MAX_PRIO-1, valid RT 1596 * priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH 1597 * tasks are in the range MAX_RT_PRIO..MAX_PRIO-1. Priority 1598 * values are inverted: lower p->prio value means higher priority. 1599 * 1600 * The MAX_USER_RT_PRIO value allows the actual maximum 1601 * RT priority to be separate from the value exported to 1602 * user-space. This allows kernel threads to set their 1603 * priority to a value higher than any user task. Note: 1604 * MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO. 1605 */ 1606 1607 #define MAX_USER_RT_PRIO 100 1608 #define MAX_RT_PRIO MAX_USER_RT_PRIO 1609 1610 #define MAX_PRIO (MAX_RT_PRIO + 40) 1611 #define DEFAULT_PRIO (MAX_RT_PRIO + 20) 1612 1613 static inline int rt_prio(int prio) 1614 { 1615 if (unlikely(prio < MAX_RT_PRIO)) 1616 return 1; 1617 return 0; 1618 } 1619 1620 static inline int rt_task(struct task_struct *p) 1621 { 1622 return rt_prio(p->prio); 1623 } 1624 1625 static inline struct pid *task_pid(struct task_struct *task) 1626 { 1627 return task->pids[PIDTYPE_PID].pid; 1628 } 1629 1630 static inline struct pid *task_tgid(struct task_struct *task) 1631 { 1632 return task->group_leader->pids[PIDTYPE_PID].pid; 1633 } 1634 1635 /* 1636 * Without tasklist or rcu lock it is not safe to dereference 1637 * the result of task_pgrp/task_session even if task == current, 1638 * we can race with another thread doing sys_setsid/sys_setpgid. 1639 */ 1640 static inline struct pid *task_pgrp(struct task_struct *task) 1641 { 1642 return task->group_leader->pids[PIDTYPE_PGID].pid; 1643 } 1644 1645 static inline struct pid *task_session(struct task_struct *task) 1646 { 1647 return task->group_leader->pids[PIDTYPE_SID].pid; 1648 } 1649 1650 struct pid_namespace; 1651 1652 /* 1653 * the helpers to get the task's different pids as they are seen 1654 * from various namespaces 1655 * 1656 * task_xid_nr() : global id, i.e. the id seen from the init namespace; 1657 * task_xid_vnr() : virtual id, i.e. the id seen from the pid namespace of 1658 * current. 1659 * task_xid_nr_ns() : id seen from the ns specified; 1660 * 1661 * set_task_vxid() : assigns a virtual id to a task; 1662 * 1663 * see also pid_nr() etc in include/linux/pid.h 1664 */ 1665 pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, 1666 struct pid_namespace *ns); 1667 1668 static inline pid_t task_pid_nr(struct task_struct *tsk) 1669 { 1670 return tsk->pid; 1671 } 1672 1673 static inline pid_t task_pid_nr_ns(struct task_struct *tsk, 1674 struct pid_namespace *ns) 1675 { 1676 return __task_pid_nr_ns(tsk, PIDTYPE_PID, ns); 1677 } 1678 1679 static inline pid_t task_pid_vnr(struct task_struct *tsk) 1680 { 1681 return __task_pid_nr_ns(tsk, PIDTYPE_PID, NULL); 1682 } 1683 1684 1685 static inline pid_t task_tgid_nr(struct task_struct *tsk) 1686 { 1687 return tsk->tgid; 1688 } 1689 1690 pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns); 1691 1692 static inline pid_t task_tgid_vnr(struct task_struct *tsk) 1693 { 1694 return pid_vnr(task_tgid(tsk)); 1695 } 1696 1697 1698 static inline pid_t task_pgrp_nr_ns(struct task_struct *tsk, 1699 struct pid_namespace *ns) 1700 { 1701 return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns); 1702 } 1703 1704 static inline pid_t task_pgrp_vnr(struct task_struct *tsk) 1705 { 1706 return __task_pid_nr_ns(tsk, PIDTYPE_PGID, NULL); 1707 } 1708 1709 1710 static inline pid_t task_session_nr_ns(struct task_struct *tsk, 1711 struct pid_namespace *ns) 1712 { 1713 return __task_pid_nr_ns(tsk, PIDTYPE_SID, ns); 1714 } 1715 1716 static inline pid_t task_session_vnr(struct task_struct *tsk) 1717 { 1718 return __task_pid_nr_ns(tsk, PIDTYPE_SID, NULL); 1719 } 1720 1721 /* obsolete, do not use */ 1722 static inline pid_t task_pgrp_nr(struct task_struct *tsk) 1723 { 1724 return task_pgrp_nr_ns(tsk, &init_pid_ns); 1725 } 1726 1727 /** 1728 * pid_alive - check that a task structure is not stale 1729 * @p: Task structure to be checked. 1730 * 1731 * Test if a process is not yet dead (at most zombie state) 1732 * If pid_alive fails, then pointers within the task structure 1733 * can be stale and must not be dereferenced. 1734 */ 1735 static inline int pid_alive(struct task_struct *p) 1736 { 1737 return p->pids[PIDTYPE_PID].pid != NULL; 1738 } 1739 1740 /** 1741 * is_global_init - check if a task structure is init 1742 * @tsk: Task structure to be checked. 1743 * 1744 * Check if a task structure is the first user space task the kernel created. 1745 */ 1746 static inline int is_global_init(struct task_struct *tsk) 1747 { 1748 return tsk->pid == 1; 1749 } 1750 1751 /* 1752 * is_container_init: 1753 * check whether in the task is init in its own pid namespace. 1754 */ 1755 extern int is_container_init(struct task_struct *tsk); 1756 1757 extern struct pid *cad_pid; 1758 1759 extern void free_task(struct task_struct *tsk); 1760 #define get_task_struct(tsk) do { atomic_inc(&(tsk)->usage); } while(0) 1761 1762 extern void __put_task_struct(struct task_struct *t); 1763 1764 static inline void put_task_struct(struct task_struct *t) 1765 { 1766 if (atomic_dec_and_test(&t->usage)) 1767 __put_task_struct(t); 1768 } 1769 1770 extern void task_times(struct task_struct *p, cputime_t *ut, cputime_t *st); 1771 extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t *st); 1772 1773 /* 1774 * Per process flags 1775 */ 1776 #define PF_EXITING 0x00000004 /* getting shut down */ 1777 #define PF_EXITPIDONE 0x00000008 /* pi exit done on shut down */ 1778 #define PF_VCPU 0x00000010 /* I'm a virtual CPU */ 1779 #define PF_WQ_WORKER 0x00000020 /* I'm a workqueue worker */ 1780 #define PF_FORKNOEXEC 0x00000040 /* forked but didn't exec */ 1781 #define PF_MCE_PROCESS 0x00000080 /* process policy on mce errors */ 1782 #define PF_SUPERPRIV 0x00000100 /* used super-user privileges */ 1783 #define PF_DUMPCORE 0x00000200 /* dumped core */ 1784 #define PF_SIGNALED 0x00000400 /* killed by a signal */ 1785 #define PF_MEMALLOC 0x00000800 /* Allocating memory */ 1786 #define PF_NPROC_EXCEEDED 0x00001000 /* set_user noticed that RLIMIT_NPROC was exceeded */ 1787 #define PF_USED_MATH 0x00002000 /* if unset the fpu must be initialized before use */ 1788 #define PF_NOFREEZE 0x00008000 /* this thread should not be frozen */ 1789 #define PF_FROZEN 0x00010000 /* frozen for system suspend */ 1790 #define PF_FSTRANS 0x00020000 /* inside a filesystem transaction */ 1791 #define PF_KSWAPD 0x00040000 /* I am kswapd */ 1792 #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ 1793 #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ 1794 #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ 1795 #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ 1796 #define PF_SPREAD_PAGE 0x01000000 /* Spread page cache over cpuset */ 1797 #define PF_SPREAD_SLAB 0x02000000 /* Spread some slab caches over cpuset */ 1798 #define PF_THREAD_BOUND 0x04000000 /* Thread bound to specific cpu */ 1799 #define PF_MCE_EARLY 0x08000000 /* Early kill for mce process policy */ 1800 #define PF_MEMPOLICY 0x10000000 /* Non-default NUMA mempolicy */ 1801 #define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */ 1802 #define PF_FREEZER_SKIP 0x40000000 /* Freezer should not count it as freezable */ 1803 1804 /* 1805 * Only the _current_ task can read/write to tsk->flags, but other 1806 * tasks can access tsk->flags in readonly mode for example 1807 * with tsk_used_math (like during threaded core dumping). 1808 * There is however an exception to this rule during ptrace 1809 * or during fork: the ptracer task is allowed to write to the 1810 * child->flags of its traced child (same goes for fork, the parent 1811 * can write to the child->flags), because we're guaranteed the 1812 * child is not running and in turn not changing child->flags 1813 * at the same time the parent does it. 1814 */ 1815 #define clear_stopped_child_used_math(child) do { (child)->flags &= ~PF_USED_MATH; } while (0) 1816 #define set_stopped_child_used_math(child) do { (child)->flags |= PF_USED_MATH; } while (0) 1817 #define clear_used_math() clear_stopped_child_used_math(current) 1818 #define set_used_math() set_stopped_child_used_math(current) 1819 #define conditional_stopped_child_used_math(condition, child) \ 1820 do { (child)->flags &= ~PF_USED_MATH, (child)->flags |= (condition) ? PF_USED_MATH : 0; } while (0) 1821 #define conditional_used_math(condition) \ 1822 conditional_stopped_child_used_math(condition, current) 1823 #define copy_to_stopped_child_used_math(child) \ 1824 do { (child)->flags &= ~PF_USED_MATH, (child)->flags |= current->flags & PF_USED_MATH; } while (0) 1825 /* NOTE: this will return 0 or PF_USED_MATH, it will never return 1 */ 1826 #define tsk_used_math(p) ((p)->flags & PF_USED_MATH) 1827 #define used_math() tsk_used_math(current) 1828 1829 /* 1830 * task->jobctl flags 1831 */ 1832 #define JOBCTL_STOP_SIGMASK 0xffff /* signr of the last group stop */ 1833 1834 #define JOBCTL_STOP_DEQUEUED_BIT 16 /* stop signal dequeued */ 1835 #define JOBCTL_STOP_PENDING_BIT 17 /* task should stop for group stop */ 1836 #define JOBCTL_STOP_CONSUME_BIT 18 /* consume group stop count */ 1837 #define JOBCTL_TRAP_STOP_BIT 19 /* trap for STOP */ 1838 #define JOBCTL_TRAP_NOTIFY_BIT 20 /* trap for NOTIFY */ 1839 #define JOBCTL_TRAPPING_BIT 21 /* switching to TRACED */ 1840 #define JOBCTL_LISTENING_BIT 22 /* ptracer is listening for events */ 1841 1842 #define JOBCTL_STOP_DEQUEUED (1 << JOBCTL_STOP_DEQUEUED_BIT) 1843 #define JOBCTL_STOP_PENDING (1 << JOBCTL_STOP_PENDING_BIT) 1844 #define JOBCTL_STOP_CONSUME (1 << JOBCTL_STOP_CONSUME_BIT) 1845 #define JOBCTL_TRAP_STOP (1 << JOBCTL_TRAP_STOP_BIT) 1846 #define JOBCTL_TRAP_NOTIFY (1 << JOBCTL_TRAP_NOTIFY_BIT) 1847 #define JOBCTL_TRAPPING (1 << JOBCTL_TRAPPING_BIT) 1848 #define JOBCTL_LISTENING (1 << JOBCTL_LISTENING_BIT) 1849 1850 #define JOBCTL_TRAP_MASK (JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY) 1851 #define JOBCTL_PENDING_MASK (JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK) 1852 1853 extern bool task_set_jobctl_pending(struct task_struct *task, 1854 unsigned int mask); 1855 extern void task_clear_jobctl_trapping(struct task_struct *task); 1856 extern void task_clear_jobctl_pending(struct task_struct *task, 1857 unsigned int mask); 1858 1859 #ifdef CONFIG_PREEMPT_RCU 1860 1861 #define RCU_READ_UNLOCK_BLOCKED (1 << 0) /* blocked while in RCU read-side. */ 1862 #define RCU_READ_UNLOCK_NEED_QS (1 << 1) /* RCU core needs CPU response. */ 1863 1864 static inline void rcu_copy_process(struct task_struct *p) 1865 { 1866 p->rcu_read_lock_nesting = 0; 1867 p->rcu_read_unlock_special = 0; 1868 #ifdef CONFIG_TREE_PREEMPT_RCU 1869 p->rcu_blocked_node = NULL; 1870 #endif /* #ifdef CONFIG_TREE_PREEMPT_RCU */ 1871 #ifdef CONFIG_RCU_BOOST 1872 p->rcu_boost_mutex = NULL; 1873 #endif /* #ifdef CONFIG_RCU_BOOST */ 1874 INIT_LIST_HEAD(&p->rcu_node_entry); 1875 } 1876 1877 #else 1878 1879 static inline void rcu_copy_process(struct task_struct *p) 1880 { 1881 } 1882 1883 #endif 1884 1885 static inline void rcu_switch(struct task_struct *prev, 1886 struct task_struct *next) 1887 { 1888 #ifdef CONFIG_RCU_USER_QS 1889 rcu_user_hooks_switch(prev, next); 1890 #endif 1891 } 1892 1893 static inline void tsk_restore_flags(struct task_struct *task, 1894 unsigned long orig_flags, unsigned long flags) 1895 { 1896 task->flags &= ~flags; 1897 task->flags |= orig_flags & flags; 1898 } 1899 1900 #ifdef CONFIG_SMP 1901 extern void do_set_cpus_allowed(struct task_struct *p, 1902 const struct cpumask *new_mask); 1903 1904 extern int set_cpus_allowed_ptr(struct task_struct *p, 1905 const struct cpumask *new_mask); 1906 #else 1907 static inline void do_set_cpus_allowed(struct task_struct *p, 1908 const struct cpumask *new_mask) 1909 { 1910 } 1911 static inline int set_cpus_allowed_ptr(struct task_struct *p, 1912 const struct cpumask *new_mask) 1913 { 1914 if (!cpumask_test_cpu(0, new_mask)) 1915 return -EINVAL; 1916 return 0; 1917 } 1918 #endif 1919 1920 #ifdef CONFIG_NO_HZ 1921 void calc_load_enter_idle(void); 1922 void calc_load_exit_idle(void); 1923 #else 1924 static inline void calc_load_enter_idle(void) { } 1925 static inline void calc_load_exit_idle(void) { } 1926 #endif /* CONFIG_NO_HZ */ 1927 1928 #ifndef CONFIG_CPUMASK_OFFSTACK 1929 static inline int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask) 1930 { 1931 return set_cpus_allowed_ptr(p, &new_mask); 1932 } 1933 #endif 1934 1935 /* 1936 * Do not use outside of architecture code which knows its limitations. 1937 * 1938 * sched_clock() has no promise of monotonicity or bounded drift between 1939 * CPUs, use (which you should not) requires disabling IRQs. 1940 * 1941 * Please use one of the three interfaces below. 1942 */ 1943 extern unsigned long long notrace sched_clock(void); 1944 /* 1945 * See the comment in kernel/sched/clock.c 1946 */ 1947 extern u64 cpu_clock(int cpu); 1948 extern u64 local_clock(void); 1949 extern u64 sched_clock_cpu(int cpu); 1950 1951 1952 extern void sched_clock_init(void); 1953 1954 #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK 1955 static inline void sched_clock_tick(void) 1956 { 1957 } 1958 1959 static inline void sched_clock_idle_sleep_event(void) 1960 { 1961 } 1962 1963 static inline void sched_clock_idle_wakeup_event(u64 delta_ns) 1964 { 1965 } 1966 #else 1967 /* 1968 * Architectures can set this to 1 if they have specified 1969 * CONFIG_HAVE_UNSTABLE_SCHED_CLOCK in their arch Kconfig, 1970 * but then during bootup it turns out that sched_clock() 1971 * is reliable after all: 1972 */ 1973 extern int sched_clock_stable; 1974 1975 extern void sched_clock_tick(void); 1976 extern void sched_clock_idle_sleep_event(void); 1977 extern void sched_clock_idle_wakeup_event(u64 delta_ns); 1978 #endif 1979 1980 #ifdef CONFIG_IRQ_TIME_ACCOUNTING 1981 /* 1982 * An i/f to runtime opt-in for irq time accounting based off of sched_clock. 1983 * The reason for this explicit opt-in is not to have perf penalty with 1984 * slow sched_clocks. 1985 */ 1986 extern void enable_sched_clock_irqtime(void); 1987 extern void disable_sched_clock_irqtime(void); 1988 #else 1989 static inline void enable_sched_clock_irqtime(void) {} 1990 static inline void disable_sched_clock_irqtime(void) {} 1991 #endif 1992 1993 extern unsigned long long 1994 task_sched_runtime(struct task_struct *task); 1995 1996 /* sched_exec is called by processes performing an exec */ 1997 #ifdef CONFIG_SMP 1998 extern void sched_exec(void); 1999 #else 2000 #define sched_exec() {} 2001 #endif 2002 2003 extern void sched_clock_idle_sleep_event(void); 2004 extern void sched_clock_idle_wakeup_event(u64 delta_ns); 2005 2006 #ifdef CONFIG_HOTPLUG_CPU 2007 extern void idle_task_exit(void); 2008 #else 2009 static inline void idle_task_exit(void) {} 2010 #endif 2011 2012 #if defined(CONFIG_NO_HZ) && defined(CONFIG_SMP) 2013 extern void wake_up_idle_cpu(int cpu); 2014 #else 2015 static inline void wake_up_idle_cpu(int cpu) { } 2016 #endif 2017 2018 extern unsigned int sysctl_sched_latency; 2019 extern unsigned int sysctl_sched_min_granularity; 2020 extern unsigned int sysctl_sched_wakeup_granularity; 2021 extern unsigned int sysctl_sched_child_runs_first; 2022 2023 enum sched_tunable_scaling { 2024 SCHED_TUNABLESCALING_NONE, 2025 SCHED_TUNABLESCALING_LOG, 2026 SCHED_TUNABLESCALING_LINEAR, 2027 SCHED_TUNABLESCALING_END, 2028 }; 2029 extern enum sched_tunable_scaling sysctl_sched_tunable_scaling; 2030 2031 #ifdef CONFIG_SCHED_DEBUG 2032 extern unsigned int sysctl_sched_migration_cost; 2033 extern unsigned int sysctl_sched_nr_migrate; 2034 extern unsigned int sysctl_sched_time_avg; 2035 extern unsigned int sysctl_timer_migration; 2036 extern unsigned int sysctl_sched_shares_window; 2037 2038 int sched_proc_update_handler(struct ctl_table *table, int write, 2039 void __user *buffer, size_t *length, 2040 loff_t *ppos); 2041 #endif 2042 #ifdef CONFIG_SCHED_DEBUG 2043 static inline unsigned int get_sysctl_timer_migration(void) 2044 { 2045 return sysctl_timer_migration; 2046 } 2047 #else 2048 static inline unsigned int get_sysctl_timer_migration(void) 2049 { 2050 return 1; 2051 } 2052 #endif 2053 extern unsigned int sysctl_sched_rt_period; 2054 extern int sysctl_sched_rt_runtime; 2055 2056 int sched_rt_handler(struct ctl_table *table, int write, 2057 void __user *buffer, size_t *lenp, 2058 loff_t *ppos); 2059 2060 #ifdef CONFIG_SCHED_AUTOGROUP 2061 extern unsigned int sysctl_sched_autogroup_enabled; 2062 2063 extern void sched_autogroup_create_attach(struct task_struct *p); 2064 extern void sched_autogroup_detach(struct task_struct *p); 2065 extern void sched_autogroup_fork(struct signal_struct *sig); 2066 extern void sched_autogroup_exit(struct signal_struct *sig); 2067 #ifdef CONFIG_PROC_FS 2068 extern void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m); 2069 extern int proc_sched_autogroup_set_nice(struct task_struct *p, int nice); 2070 #endif 2071 #else 2072 static inline void sched_autogroup_create_attach(struct task_struct *p) { } 2073 static inline void sched_autogroup_detach(struct task_struct *p) { } 2074 static inline void sched_autogroup_fork(struct signal_struct *sig) { } 2075 static inline void sched_autogroup_exit(struct signal_struct *sig) { } 2076 #endif 2077 2078 #ifdef CONFIG_CFS_BANDWIDTH 2079 extern unsigned int sysctl_sched_cfs_bandwidth_slice; 2080 #endif 2081 2082 #ifdef CONFIG_RT_MUTEXES 2083 extern int rt_mutex_getprio(struct task_struct *p); 2084 extern void rt_mutex_setprio(struct task_struct *p, int prio); 2085 extern void rt_mutex_adjust_pi(struct task_struct *p); 2086 static inline bool tsk_is_pi_blocked(struct task_struct *tsk) 2087 { 2088 return tsk->pi_blocked_on != NULL; 2089 } 2090 #else 2091 static inline int rt_mutex_getprio(struct task_struct *p) 2092 { 2093 return p->normal_prio; 2094 } 2095 # define rt_mutex_adjust_pi(p) do { } while (0) 2096 static inline bool tsk_is_pi_blocked(struct task_struct *tsk) 2097 { 2098 return false; 2099 } 2100 #endif 2101 2102 extern bool yield_to(struct task_struct *p, bool preempt); 2103 extern void set_user_nice(struct task_struct *p, long nice); 2104 extern int task_prio(const struct task_struct *p); 2105 extern int task_nice(const struct task_struct *p); 2106 extern int can_nice(const struct task_struct *p, const int nice); 2107 extern int task_curr(const struct task_struct *p); 2108 extern int idle_cpu(int cpu); 2109 extern int sched_setscheduler(struct task_struct *, int, 2110 const struct sched_param *); 2111 extern int sched_setscheduler_nocheck(struct task_struct *, int, 2112 const struct sched_param *); 2113 extern struct task_struct *idle_task(int cpu); 2114 /** 2115 * is_idle_task - is the specified task an idle task? 2116 * @p: the task in question. 2117 */ 2118 static inline bool is_idle_task(const struct task_struct *p) 2119 { 2120 return p->pid == 0; 2121 } 2122 extern struct task_struct *curr_task(int cpu); 2123 extern void set_curr_task(int cpu, struct task_struct *p); 2124 2125 void yield(void); 2126 2127 /* 2128 * The default (Linux) execution domain. 2129 */ 2130 extern struct exec_domain default_exec_domain; 2131 2132 union thread_union { 2133 struct thread_info thread_info; 2134 unsigned long stack[THREAD_SIZE/sizeof(long)]; 2135 }; 2136 2137 #ifndef __HAVE_ARCH_KSTACK_END 2138 static inline int kstack_end(void *addr) 2139 { 2140 /* Reliable end of stack detection: 2141 * Some APM bios versions misalign the stack 2142 */ 2143 return !(((unsigned long)addr+sizeof(void*)-1) & (THREAD_SIZE-sizeof(void*))); 2144 } 2145 #endif 2146 2147 extern union thread_union init_thread_union; 2148 extern struct task_struct init_task; 2149 2150 extern struct mm_struct init_mm; 2151 2152 extern struct pid_namespace init_pid_ns; 2153 2154 /* 2155 * find a task by one of its numerical ids 2156 * 2157 * find_task_by_pid_ns(): 2158 * finds a task by its pid in the specified namespace 2159 * find_task_by_vpid(): 2160 * finds a task by its virtual pid 2161 * 2162 * see also find_vpid() etc in include/linux/pid.h 2163 */ 2164 2165 extern struct task_struct *find_task_by_vpid(pid_t nr); 2166 extern struct task_struct *find_task_by_pid_ns(pid_t nr, 2167 struct pid_namespace *ns); 2168 2169 extern void __set_special_pids(struct pid *pid); 2170 2171 /* per-UID process charging. */ 2172 extern struct user_struct * alloc_uid(kuid_t); 2173 static inline struct user_struct *get_uid(struct user_struct *u) 2174 { 2175 atomic_inc(&u->__count); 2176 return u; 2177 } 2178 extern void free_uid(struct user_struct *); 2179 2180 #include <asm/current.h> 2181 2182 extern void xtime_update(unsigned long ticks); 2183 2184 extern int wake_up_state(struct task_struct *tsk, unsigned int state); 2185 extern int wake_up_process(struct task_struct *tsk); 2186 extern void wake_up_new_task(struct task_struct *tsk); 2187 #ifdef CONFIG_SMP 2188 extern void kick_process(struct task_struct *tsk); 2189 #else 2190 static inline void kick_process(struct task_struct *tsk) { } 2191 #endif 2192 extern void sched_fork(struct task_struct *p); 2193 extern void sched_dead(struct task_struct *p); 2194 2195 extern void proc_caches_init(void); 2196 extern void flush_signals(struct task_struct *); 2197 extern void __flush_signals(struct task_struct *); 2198 extern void ignore_signals(struct task_struct *); 2199 extern void flush_signal_handlers(struct task_struct *, int force_default); 2200 extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info); 2201 2202 static inline int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) 2203 { 2204 unsigned long flags; 2205 int ret; 2206 2207 spin_lock_irqsave(&tsk->sighand->siglock, flags); 2208 ret = dequeue_signal(tsk, mask, info); 2209 spin_unlock_irqrestore(&tsk->sighand->siglock, flags); 2210 2211 return ret; 2212 } 2213 2214 extern void block_all_signals(int (*notifier)(void *priv), void *priv, 2215 sigset_t *mask); 2216 extern void unblock_all_signals(void); 2217 extern void release_task(struct task_struct * p); 2218 extern int send_sig_info(int, struct siginfo *, struct task_struct *); 2219 extern int force_sigsegv(int, struct task_struct *); 2220 extern int force_sig_info(int, struct siginfo *, struct task_struct *); 2221 extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp); 2222 extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid); 2223 extern int kill_pid_info_as_cred(int, struct siginfo *, struct pid *, 2224 const struct cred *, u32); 2225 extern int kill_pgrp(struct pid *pid, int sig, int priv); 2226 extern int kill_pid(struct pid *pid, int sig, int priv); 2227 extern int kill_proc_info(int, struct siginfo *, pid_t); 2228 extern __must_check bool do_notify_parent(struct task_struct *, int); 2229 extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent); 2230 extern void force_sig(int, struct task_struct *); 2231 extern int send_sig(int, struct task_struct *, int); 2232 extern int zap_other_threads(struct task_struct *p); 2233 extern struct sigqueue *sigqueue_alloc(void); 2234 extern void sigqueue_free(struct sigqueue *); 2235 extern int send_sigqueue(struct sigqueue *, struct task_struct *, int group); 2236 extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *); 2237 extern int do_sigaltstack(const stack_t __user *, stack_t __user *, unsigned long); 2238 2239 static inline void restore_saved_sigmask(void) 2240 { 2241 if (test_and_clear_restore_sigmask()) 2242 __set_current_blocked(¤t->saved_sigmask); 2243 } 2244 2245 static inline sigset_t *sigmask_to_save(void) 2246 { 2247 sigset_t *res = ¤t->blocked; 2248 if (unlikely(test_restore_sigmask())) 2249 res = ¤t->saved_sigmask; 2250 return res; 2251 } 2252 2253 static inline int kill_cad_pid(int sig, int priv) 2254 { 2255 return kill_pid(cad_pid, sig, priv); 2256 } 2257 2258 /* These can be the second arg to send_sig_info/send_group_sig_info. */ 2259 #define SEND_SIG_NOINFO ((struct siginfo *) 0) 2260 #define SEND_SIG_PRIV ((struct siginfo *) 1) 2261 #define SEND_SIG_FORCED ((struct siginfo *) 2) 2262 2263 /* 2264 * True if we are on the alternate signal stack. 2265 */ 2266 static inline int on_sig_stack(unsigned long sp) 2267 { 2268 #ifdef CONFIG_STACK_GROWSUP 2269 return sp >= current->sas_ss_sp && 2270 sp - current->sas_ss_sp < current->sas_ss_size; 2271 #else 2272 return sp > current->sas_ss_sp && 2273 sp - current->sas_ss_sp <= current->sas_ss_size; 2274 #endif 2275 } 2276 2277 static inline int sas_ss_flags(unsigned long sp) 2278 { 2279 return (current->sas_ss_size == 0 ? SS_DISABLE 2280 : on_sig_stack(sp) ? SS_ONSTACK : 0); 2281 } 2282 2283 /* 2284 * Routines for handling mm_structs 2285 */ 2286 extern struct mm_struct * mm_alloc(void); 2287 2288 /* mmdrop drops the mm and the page tables */ 2289 extern void __mmdrop(struct mm_struct *); 2290 static inline void mmdrop(struct mm_struct * mm) 2291 { 2292 if (unlikely(atomic_dec_and_test(&mm->mm_count))) 2293 __mmdrop(mm); 2294 } 2295 2296 /* mmput gets rid of the mappings and all user-space */ 2297 extern void mmput(struct mm_struct *); 2298 /* Grab a reference to a task's mm, if it is not already going away */ 2299 extern struct mm_struct *get_task_mm(struct task_struct *task); 2300 /* 2301 * Grab a reference to a task's mm, if it is not already going away 2302 * and ptrace_may_access with the mode parameter passed to it 2303 * succeeds. 2304 */ 2305 extern struct mm_struct *mm_access(struct task_struct *task, unsigned int mode); 2306 /* Remove the current tasks stale references to the old mm_struct */ 2307 extern void mm_release(struct task_struct *, struct mm_struct *); 2308 /* Allocate a new mm structure and copy contents from tsk->mm */ 2309 extern struct mm_struct *dup_mm(struct task_struct *tsk); 2310 2311 extern int copy_thread(unsigned long, unsigned long, unsigned long, 2312 struct task_struct *, struct pt_regs *); 2313 extern void flush_thread(void); 2314 extern void exit_thread(void); 2315 2316 extern void exit_files(struct task_struct *); 2317 extern void __cleanup_sighand(struct sighand_struct *); 2318 2319 extern void exit_itimers(struct signal_struct *); 2320 extern void flush_itimer_signals(void); 2321 2322 extern void do_group_exit(int); 2323 2324 extern void daemonize(const char *, ...); 2325 extern int allow_signal(int); 2326 extern int disallow_signal(int); 2327 2328 extern int do_execve(const char *, 2329 const char __user * const __user *, 2330 const char __user * const __user *, struct pt_regs *); 2331 extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int __user *, int __user *); 2332 struct task_struct *fork_idle(int); 2333 2334 extern void set_task_comm(struct task_struct *tsk, char *from); 2335 extern char *get_task_comm(char *to, struct task_struct *tsk); 2336 2337 #ifdef CONFIG_SMP 2338 void scheduler_ipi(void); 2339 extern unsigned long wait_task_inactive(struct task_struct *, long match_state); 2340 #else 2341 static inline void scheduler_ipi(void) { } 2342 static inline unsigned long wait_task_inactive(struct task_struct *p, 2343 long match_state) 2344 { 2345 return 1; 2346 } 2347 #endif 2348 2349 #define next_task(p) \ 2350 list_entry_rcu((p)->tasks.next, struct task_struct, tasks) 2351 2352 #define for_each_process(p) \ 2353 for (p = &init_task ; (p = next_task(p)) != &init_task ; ) 2354 2355 extern bool current_is_single_threaded(void); 2356 2357 /* 2358 * Careful: do_each_thread/while_each_thread is a double loop so 2359 * 'break' will not work as expected - use goto instead. 2360 */ 2361 #define do_each_thread(g, t) \ 2362 for (g = t = &init_task ; (g = t = next_task(g)) != &init_task ; ) do 2363 2364 #define while_each_thread(g, t) \ 2365 while ((t = next_thread(t)) != g) 2366 2367 static inline int get_nr_threads(struct task_struct *tsk) 2368 { 2369 return tsk->signal->nr_threads; 2370 } 2371 2372 static inline bool thread_group_leader(struct task_struct *p) 2373 { 2374 return p->exit_signal >= 0; 2375 } 2376 2377 /* Do to the insanities of de_thread it is possible for a process 2378 * to have the pid of the thread group leader without actually being 2379 * the thread group leader. For iteration through the pids in proc 2380 * all we care about is that we have a task with the appropriate 2381 * pid, we don't actually care if we have the right task. 2382 */ 2383 static inline int has_group_leader_pid(struct task_struct *p) 2384 { 2385 return p->pid == p->tgid; 2386 } 2387 2388 static inline 2389 int same_thread_group(struct task_struct *p1, struct task_struct *p2) 2390 { 2391 return p1->tgid == p2->tgid; 2392 } 2393 2394 static inline struct task_struct *next_thread(const struct task_struct *p) 2395 { 2396 return list_entry_rcu(p->thread_group.next, 2397 struct task_struct, thread_group); 2398 } 2399 2400 static inline int thread_group_empty(struct task_struct *p) 2401 { 2402 return list_empty(&p->thread_group); 2403 } 2404 2405 #define delay_group_leader(p) \ 2406 (thread_group_leader(p) && !thread_group_empty(p)) 2407 2408 /* 2409 * Protects ->fs, ->files, ->mm, ->group_info, ->comm, keyring 2410 * subscriptions and synchronises with wait4(). Also used in procfs. Also 2411 * pins the final release of task.io_context. Also protects ->cpuset and 2412 * ->cgroup.subsys[]. And ->vfork_done. 2413 * 2414 * Nests both inside and outside of read_lock(&tasklist_lock). 2415 * It must not be nested with write_lock_irq(&tasklist_lock), 2416 * neither inside nor outside. 2417 */ 2418 static inline void task_lock(struct task_struct *p) 2419 { 2420 spin_lock(&p->alloc_lock); 2421 } 2422 2423 static inline void task_unlock(struct task_struct *p) 2424 { 2425 spin_unlock(&p->alloc_lock); 2426 } 2427 2428 extern struct sighand_struct *__lock_task_sighand(struct task_struct *tsk, 2429 unsigned long *flags); 2430 2431 static inline struct sighand_struct *lock_task_sighand(struct task_struct *tsk, 2432 unsigned long *flags) 2433 { 2434 struct sighand_struct *ret; 2435 2436 ret = __lock_task_sighand(tsk, flags); 2437 (void)__cond_lock(&tsk->sighand->siglock, ret); 2438 return ret; 2439 } 2440 2441 static inline void unlock_task_sighand(struct task_struct *tsk, 2442 unsigned long *flags) 2443 { 2444 spin_unlock_irqrestore(&tsk->sighand->siglock, *flags); 2445 } 2446 2447 #ifdef CONFIG_CGROUPS 2448 static inline void threadgroup_change_begin(struct task_struct *tsk) 2449 { 2450 down_read(&tsk->signal->group_rwsem); 2451 } 2452 static inline void threadgroup_change_end(struct task_struct *tsk) 2453 { 2454 up_read(&tsk->signal->group_rwsem); 2455 } 2456 2457 /** 2458 * threadgroup_lock - lock threadgroup 2459 * @tsk: member task of the threadgroup to lock 2460 * 2461 * Lock the threadgroup @tsk belongs to. No new task is allowed to enter 2462 * and member tasks aren't allowed to exit (as indicated by PF_EXITING) or 2463 * perform exec. This is useful for cases where the threadgroup needs to 2464 * stay stable across blockable operations. 2465 * 2466 * fork and exit paths explicitly call threadgroup_change_{begin|end}() for 2467 * synchronization. While held, no new task will be added to threadgroup 2468 * and no existing live task will have its PF_EXITING set. 2469 * 2470 * During exec, a task goes and puts its thread group through unusual 2471 * changes. After de-threading, exclusive access is assumed to resources 2472 * which are usually shared by tasks in the same group - e.g. sighand may 2473 * be replaced with a new one. Also, the exec'ing task takes over group 2474 * leader role including its pid. Exclude these changes while locked by 2475 * grabbing cred_guard_mutex which is used to synchronize exec path. 2476 */ 2477 static inline void threadgroup_lock(struct task_struct *tsk) 2478 { 2479 /* 2480 * exec uses exit for de-threading nesting group_rwsem inside 2481 * cred_guard_mutex. Grab cred_guard_mutex first. 2482 */ 2483 mutex_lock(&tsk->signal->cred_guard_mutex); 2484 down_write(&tsk->signal->group_rwsem); 2485 } 2486 2487 /** 2488 * threadgroup_unlock - unlock threadgroup 2489 * @tsk: member task of the threadgroup to unlock 2490 * 2491 * Reverse threadgroup_lock(). 2492 */ 2493 static inline void threadgroup_unlock(struct task_struct *tsk) 2494 { 2495 up_write(&tsk->signal->group_rwsem); 2496 mutex_unlock(&tsk->signal->cred_guard_mutex); 2497 } 2498 #else 2499 static inline void threadgroup_change_begin(struct task_struct *tsk) {} 2500 static inline void threadgroup_change_end(struct task_struct *tsk) {} 2501 static inline void threadgroup_lock(struct task_struct *tsk) {} 2502 static inline void threadgroup_unlock(struct task_struct *tsk) {} 2503 #endif 2504 2505 #ifndef __HAVE_THREAD_FUNCTIONS 2506 2507 #define task_thread_info(task) ((struct thread_info *)(task)->stack) 2508 #define task_stack_page(task) ((task)->stack) 2509 2510 static inline void setup_thread_stack(struct task_struct *p, struct task_struct *org) 2511 { 2512 *task_thread_info(p) = *task_thread_info(org); 2513 task_thread_info(p)->task = p; 2514 } 2515 2516 static inline unsigned long *end_of_stack(struct task_struct *p) 2517 { 2518 return (unsigned long *)(task_thread_info(p) + 1); 2519 } 2520 2521 #endif 2522 2523 static inline int object_is_on_stack(void *obj) 2524 { 2525 void *stack = task_stack_page(current); 2526 2527 return (obj >= stack) && (obj < (stack + THREAD_SIZE)); 2528 } 2529 2530 extern void thread_info_cache_init(void); 2531 2532 #ifdef CONFIG_DEBUG_STACK_USAGE 2533 static inline unsigned long stack_not_used(struct task_struct *p) 2534 { 2535 unsigned long *n = end_of_stack(p); 2536 2537 do { /* Skip over canary */ 2538 n++; 2539 } while (!*n); 2540 2541 return (unsigned long)n - (unsigned long)end_of_stack(p); 2542 } 2543 #endif 2544 2545 /* set thread flags in other task's structures 2546 * - see asm/thread_info.h for TIF_xxxx flags available 2547 */ 2548 static inline void set_tsk_thread_flag(struct task_struct *tsk, int flag) 2549 { 2550 set_ti_thread_flag(task_thread_info(tsk), flag); 2551 } 2552 2553 static inline void clear_tsk_thread_flag(struct task_struct *tsk, int flag) 2554 { 2555 clear_ti_thread_flag(task_thread_info(tsk), flag); 2556 } 2557 2558 static inline int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag) 2559 { 2560 return test_and_set_ti_thread_flag(task_thread_info(tsk), flag); 2561 } 2562 2563 static inline int test_and_clear_tsk_thread_flag(struct task_struct *tsk, int flag) 2564 { 2565 return test_and_clear_ti_thread_flag(task_thread_info(tsk), flag); 2566 } 2567 2568 static inline int test_tsk_thread_flag(struct task_struct *tsk, int flag) 2569 { 2570 return test_ti_thread_flag(task_thread_info(tsk), flag); 2571 } 2572 2573 static inline void set_tsk_need_resched(struct task_struct *tsk) 2574 { 2575 set_tsk_thread_flag(tsk,TIF_NEED_RESCHED); 2576 } 2577 2578 static inline void clear_tsk_need_resched(struct task_struct *tsk) 2579 { 2580 clear_tsk_thread_flag(tsk,TIF_NEED_RESCHED); 2581 } 2582 2583 static inline int test_tsk_need_resched(struct task_struct *tsk) 2584 { 2585 return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); 2586 } 2587 2588 static inline int restart_syscall(void) 2589 { 2590 set_tsk_thread_flag(current, TIF_SIGPENDING); 2591 return -ERESTARTNOINTR; 2592 } 2593 2594 static inline int signal_pending(struct task_struct *p) 2595 { 2596 return unlikely(test_tsk_thread_flag(p,TIF_SIGPENDING)); 2597 } 2598 2599 static inline int __fatal_signal_pending(struct task_struct *p) 2600 { 2601 return unlikely(sigismember(&p->pending.signal, SIGKILL)); 2602 } 2603 2604 static inline int fatal_signal_pending(struct task_struct *p) 2605 { 2606 return signal_pending(p) && __fatal_signal_pending(p); 2607 } 2608 2609 static inline int signal_pending_state(long state, struct task_struct *p) 2610 { 2611 if (!(state & (TASK_INTERRUPTIBLE | TASK_WAKEKILL))) 2612 return 0; 2613 if (!signal_pending(p)) 2614 return 0; 2615 2616 return (state & TASK_INTERRUPTIBLE) || __fatal_signal_pending(p); 2617 } 2618 2619 static inline int need_resched(void) 2620 { 2621 return unlikely(test_thread_flag(TIF_NEED_RESCHED)); 2622 } 2623 2624 /* 2625 * cond_resched() and cond_resched_lock(): latency reduction via 2626 * explicit rescheduling in places that are safe. The return 2627 * value indicates whether a reschedule was done in fact. 2628 * cond_resched_lock() will drop the spinlock before scheduling, 2629 * cond_resched_softirq() will enable bhs before scheduling. 2630 */ 2631 extern int _cond_resched(void); 2632 2633 #define cond_resched() ({ \ 2634 __might_sleep(__FILE__, __LINE__, 0); \ 2635 _cond_resched(); \ 2636 }) 2637 2638 extern int __cond_resched_lock(spinlock_t *lock); 2639 2640 #ifdef CONFIG_PREEMPT_COUNT 2641 #define PREEMPT_LOCK_OFFSET PREEMPT_OFFSET 2642 #else 2643 #define PREEMPT_LOCK_OFFSET 0 2644 #endif 2645 2646 #define cond_resched_lock(lock) ({ \ 2647 __might_sleep(__FILE__, __LINE__, PREEMPT_LOCK_OFFSET); \ 2648 __cond_resched_lock(lock); \ 2649 }) 2650 2651 extern int __cond_resched_softirq(void); 2652 2653 #define cond_resched_softirq() ({ \ 2654 __might_sleep(__FILE__, __LINE__, SOFTIRQ_DISABLE_OFFSET); \ 2655 __cond_resched_softirq(); \ 2656 }) 2657 2658 /* 2659 * Does a critical section need to be broken due to another 2660 * task waiting?: (technically does not depend on CONFIG_PREEMPT, 2661 * but a general need for low latency) 2662 */ 2663 static inline int spin_needbreak(spinlock_t *lock) 2664 { 2665 #ifdef CONFIG_PREEMPT 2666 return spin_is_contended(lock); 2667 #else 2668 return 0; 2669 #endif 2670 } 2671 2672 /* 2673 * Thread group CPU time accounting. 2674 */ 2675 void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times); 2676 void thread_group_cputimer(struct task_struct *tsk, struct task_cputime *times); 2677 2678 static inline void thread_group_cputime_init(struct signal_struct *sig) 2679 { 2680 raw_spin_lock_init(&sig->cputimer.lock); 2681 } 2682 2683 /* 2684 * Reevaluate whether the task has signals pending delivery. 2685 * Wake the task if so. 2686 * This is required every time the blocked sigset_t changes. 2687 * callers must hold sighand->siglock. 2688 */ 2689 extern void recalc_sigpending_and_wake(struct task_struct *t); 2690 extern void recalc_sigpending(void); 2691 2692 extern void signal_wake_up(struct task_struct *t, int resume_stopped); 2693 2694 /* 2695 * Wrappers for p->thread_info->cpu access. No-op on UP. 2696 */ 2697 #ifdef CONFIG_SMP 2698 2699 static inline unsigned int task_cpu(const struct task_struct *p) 2700 { 2701 return task_thread_info(p)->cpu; 2702 } 2703 2704 extern void set_task_cpu(struct task_struct *p, unsigned int cpu); 2705 2706 #else 2707 2708 static inline unsigned int task_cpu(const struct task_struct *p) 2709 { 2710 return 0; 2711 } 2712 2713 static inline void set_task_cpu(struct task_struct *p, unsigned int cpu) 2714 { 2715 } 2716 2717 #endif /* CONFIG_SMP */ 2718 2719 extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask); 2720 extern long sched_getaffinity(pid_t pid, struct cpumask *mask); 2721 2722 extern void normalize_rt_tasks(void); 2723 2724 #ifdef CONFIG_CGROUP_SCHED 2725 2726 extern struct task_group root_task_group; 2727 2728 extern struct task_group *sched_create_group(struct task_group *parent); 2729 extern void sched_destroy_group(struct task_group *tg); 2730 extern void sched_move_task(struct task_struct *tsk); 2731 #ifdef CONFIG_FAIR_GROUP_SCHED 2732 extern int sched_group_set_shares(struct task_group *tg, unsigned long shares); 2733 extern unsigned long sched_group_shares(struct task_group *tg); 2734 #endif 2735 #ifdef CONFIG_RT_GROUP_SCHED 2736 extern int sched_group_set_rt_runtime(struct task_group *tg, 2737 long rt_runtime_us); 2738 extern long sched_group_rt_runtime(struct task_group *tg); 2739 extern int sched_group_set_rt_period(struct task_group *tg, 2740 long rt_period_us); 2741 extern long sched_group_rt_period(struct task_group *tg); 2742 extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk); 2743 #endif 2744 #endif /* CONFIG_CGROUP_SCHED */ 2745 2746 extern int task_can_switch_user(struct user_struct *up, 2747 struct task_struct *tsk); 2748 2749 #ifdef CONFIG_TASK_XACCT 2750 static inline void add_rchar(struct task_struct *tsk, ssize_t amt) 2751 { 2752 tsk->ioac.rchar += amt; 2753 } 2754 2755 static inline void add_wchar(struct task_struct *tsk, ssize_t amt) 2756 { 2757 tsk->ioac.wchar += amt; 2758 } 2759 2760 static inline void inc_syscr(struct task_struct *tsk) 2761 { 2762 tsk->ioac.syscr++; 2763 } 2764 2765 static inline void inc_syscw(struct task_struct *tsk) 2766 { 2767 tsk->ioac.syscw++; 2768 } 2769 #else 2770 static inline void add_rchar(struct task_struct *tsk, ssize_t amt) 2771 { 2772 } 2773 2774 static inline void add_wchar(struct task_struct *tsk, ssize_t amt) 2775 { 2776 } 2777 2778 static inline void inc_syscr(struct task_struct *tsk) 2779 { 2780 } 2781 2782 static inline void inc_syscw(struct task_struct *tsk) 2783 { 2784 } 2785 #endif 2786 2787 #ifndef TASK_SIZE_OF 2788 #define TASK_SIZE_OF(tsk) TASK_SIZE 2789 #endif 2790 2791 #ifdef CONFIG_MM_OWNER 2792 extern void mm_update_next_owner(struct mm_struct *mm); 2793 extern void mm_init_owner(struct mm_struct *mm, struct task_struct *p); 2794 #else 2795 static inline void mm_update_next_owner(struct mm_struct *mm) 2796 { 2797 } 2798 2799 static inline void mm_init_owner(struct mm_struct *mm, struct task_struct *p) 2800 { 2801 } 2802 #endif /* CONFIG_MM_OWNER */ 2803 2804 static inline unsigned long task_rlimit(const struct task_struct *tsk, 2805 unsigned int limit) 2806 { 2807 return ACCESS_ONCE(tsk->signal->rlim[limit].rlim_cur); 2808 } 2809 2810 static inline unsigned long task_rlimit_max(const struct task_struct *tsk, 2811 unsigned int limit) 2812 { 2813 return ACCESS_ONCE(tsk->signal->rlim[limit].rlim_max); 2814 } 2815 2816 static inline unsigned long rlimit(unsigned int limit) 2817 { 2818 return task_rlimit(current, limit); 2819 } 2820 2821 static inline unsigned long rlimit_max(unsigned int limit) 2822 { 2823 return task_rlimit_max(current, limit); 2824 } 2825 2826 #endif /* __KERNEL__ */ 2827 2828 #endif 2829