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