diff options
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 73 |
1 files changed, 37 insertions, 36 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 1941d8b5cf11..f59318a0099b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -292,13 +292,13 @@ extern void sched_show_task(struct task_struct *p); | |||
292 | 292 | ||
293 | #ifdef CONFIG_DETECT_SOFTLOCKUP | 293 | #ifdef CONFIG_DETECT_SOFTLOCKUP |
294 | extern void softlockup_tick(void); | 294 | extern void softlockup_tick(void); |
295 | extern void spawn_softlockup_task(void); | ||
296 | extern void touch_softlockup_watchdog(void); | 295 | extern void touch_softlockup_watchdog(void); |
297 | extern void touch_all_softlockup_watchdogs(void); | 296 | extern void touch_all_softlockup_watchdogs(void); |
298 | extern unsigned long softlockup_thresh; | 297 | extern unsigned int softlockup_panic; |
299 | extern unsigned long sysctl_hung_task_check_count; | 298 | extern unsigned long sysctl_hung_task_check_count; |
300 | extern unsigned long sysctl_hung_task_timeout_secs; | 299 | extern unsigned long sysctl_hung_task_timeout_secs; |
301 | extern unsigned long sysctl_hung_task_warnings; | 300 | extern unsigned long sysctl_hung_task_warnings; |
301 | extern int softlockup_thresh; | ||
302 | #else | 302 | #else |
303 | static inline void softlockup_tick(void) | 303 | static inline void softlockup_tick(void) |
304 | { | 304 | { |
@@ -505,6 +505,10 @@ struct signal_struct { | |||
505 | unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; | 505 | unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; |
506 | unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; | 506 | unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt; |
507 | unsigned long inblock, oublock, cinblock, coublock; | 507 | unsigned long inblock, oublock, cinblock, coublock; |
508 | #ifdef CONFIG_TASK_XACCT | ||
509 | u64 rchar, wchar, syscr, syscw; | ||
510 | #endif | ||
511 | struct task_io_accounting ioac; | ||
508 | 512 | ||
509 | /* | 513 | /* |
510 | * Cumulative ns of scheduled CPU time for dead threads in the | 514 | * Cumulative ns of scheduled CPU time for dead threads in the |
@@ -667,6 +671,10 @@ struct task_delay_info { | |||
667 | /* io operations performed */ | 671 | /* io operations performed */ |
668 | u32 swapin_count; /* total count of the number of swapin block */ | 672 | u32 swapin_count; /* total count of the number of swapin block */ |
669 | /* io operations performed */ | 673 | /* io operations performed */ |
674 | |||
675 | struct timespec freepages_start, freepages_end; | ||
676 | u64 freepages_delay; /* wait for memory reclaim */ | ||
677 | u32 freepages_count; /* total count of memory reclaim */ | ||
670 | }; | 678 | }; |
671 | #endif /* CONFIG_TASK_DELAY_ACCT */ | 679 | #endif /* CONFIG_TASK_DELAY_ACCT */ |
672 | 680 | ||
@@ -824,7 +832,16 @@ extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new, | |||
824 | struct sched_domain_attr *dattr_new); | 832 | struct sched_domain_attr *dattr_new); |
825 | extern int arch_reinit_sched_domains(void); | 833 | extern int arch_reinit_sched_domains(void); |
826 | 834 | ||
827 | #endif /* CONFIG_SMP */ | 835 | #else /* CONFIG_SMP */ |
836 | |||
837 | struct sched_domain_attr; | ||
838 | |||
839 | static inline void | ||
840 | partition_sched_domains(int ndoms_new, cpumask_t *doms_new, | ||
841 | struct sched_domain_attr *dattr_new) | ||
842 | { | ||
843 | } | ||
844 | #endif /* !CONFIG_SMP */ | ||
828 | 845 | ||
829 | struct io_context; /* See blkdev.h */ | 846 | struct io_context; /* See blkdev.h */ |
830 | #define NGROUPS_SMALL 32 | 847 | #define NGROUPS_SMALL 32 |
@@ -1247,7 +1264,7 @@ struct task_struct { | |||
1247 | #if defined(CONFIG_TASK_XACCT) | 1264 | #if defined(CONFIG_TASK_XACCT) |
1248 | u64 acct_rss_mem1; /* accumulated rss usage */ | 1265 | u64 acct_rss_mem1; /* accumulated rss usage */ |
1249 | u64 acct_vm_mem1; /* accumulated virtual memory usage */ | 1266 | u64 acct_vm_mem1; /* accumulated virtual memory usage */ |
1250 | cputime_t acct_stimexpd;/* stime since last update */ | 1267 | cputime_t acct_timexpd; /* stime + utime since last update */ |
1251 | #endif | 1268 | #endif |
1252 | #ifdef CONFIG_CPUSETS | 1269 | #ifdef CONFIG_CPUSETS |
1253 | nodemask_t mems_allowed; | 1270 | nodemask_t mems_allowed; |
@@ -1486,7 +1503,7 @@ static inline void put_task_struct(struct task_struct *t) | |||
1486 | #define PF_KSWAPD 0x00040000 /* I am kswapd */ | 1503 | #define PF_KSWAPD 0x00040000 /* I am kswapd */ |
1487 | #define PF_SWAPOFF 0x00080000 /* I am in swapoff */ | 1504 | #define PF_SWAPOFF 0x00080000 /* I am in swapoff */ |
1488 | #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ | 1505 | #define PF_LESS_THROTTLE 0x00100000 /* Throttle me less: I clean memory */ |
1489 | #define PF_BORROWED_MM 0x00200000 /* I am a kthread doing use_mm */ | 1506 | #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ |
1490 | #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ | 1507 | #define PF_RANDOMIZE 0x00400000 /* randomize virtual address space */ |
1491 | #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ | 1508 | #define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ |
1492 | #define PF_SPREAD_PAGE 0x01000000 /* Spread page cache over cpuset */ | 1509 | #define PF_SPREAD_PAGE 0x01000000 /* Spread page cache over cpuset */ |
@@ -1705,19 +1722,13 @@ extern struct pid_namespace init_pid_ns; | |||
1705 | * finds a task by its pid in the specified namespace | 1722 | * finds a task by its pid in the specified namespace |
1706 | * find_task_by_vpid(): | 1723 | * find_task_by_vpid(): |
1707 | * finds a task by its virtual pid | 1724 | * finds a task by its virtual pid |
1708 | * find_task_by_pid(): | ||
1709 | * finds a task by its global pid | ||
1710 | * | 1725 | * |
1711 | * see also find_pid() etc in include/linux/pid.h | 1726 | * see also find_vpid() etc in include/linux/pid.h |
1712 | */ | 1727 | */ |
1713 | 1728 | ||
1714 | extern struct task_struct *find_task_by_pid_type_ns(int type, int pid, | 1729 | extern struct task_struct *find_task_by_pid_type_ns(int type, int pid, |
1715 | struct pid_namespace *ns); | 1730 | struct pid_namespace *ns); |
1716 | 1731 | ||
1717 | static inline struct task_struct *__deprecated find_task_by_pid(pid_t nr) | ||
1718 | { | ||
1719 | return find_task_by_pid_type_ns(PIDTYPE_PID, nr, &init_pid_ns); | ||
1720 | } | ||
1721 | extern struct task_struct *find_task_by_vpid(pid_t nr); | 1732 | extern struct task_struct *find_task_by_vpid(pid_t nr); |
1722 | extern struct task_struct *find_task_by_pid_ns(pid_t nr, | 1733 | extern struct task_struct *find_task_by_pid_ns(pid_t nr, |
1723 | struct pid_namespace *ns); | 1734 | struct pid_namespace *ns); |
@@ -1785,12 +1796,11 @@ extern int kill_pid_info_as_uid(int, struct siginfo *, struct pid *, uid_t, uid_ | |||
1785 | extern int kill_pgrp(struct pid *pid, int sig, int priv); | 1796 | extern int kill_pgrp(struct pid *pid, int sig, int priv); |
1786 | extern int kill_pid(struct pid *pid, int sig, int priv); | 1797 | extern int kill_pid(struct pid *pid, int sig, int priv); |
1787 | extern int kill_proc_info(int, struct siginfo *, pid_t); | 1798 | extern int kill_proc_info(int, struct siginfo *, pid_t); |
1788 | extern void do_notify_parent(struct task_struct *, int); | 1799 | extern int do_notify_parent(struct task_struct *, int); |
1789 | extern void force_sig(int, struct task_struct *); | 1800 | extern void force_sig(int, struct task_struct *); |
1790 | extern void force_sig_specific(int, struct task_struct *); | 1801 | extern void force_sig_specific(int, struct task_struct *); |
1791 | extern int send_sig(int, struct task_struct *, int); | 1802 | extern int send_sig(int, struct task_struct *, int); |
1792 | extern void zap_other_threads(struct task_struct *p); | 1803 | extern void zap_other_threads(struct task_struct *p); |
1793 | extern int kill_proc(pid_t, int, int); | ||
1794 | extern struct sigqueue *sigqueue_alloc(void); | 1804 | extern struct sigqueue *sigqueue_alloc(void); |
1795 | extern void sigqueue_free(struct sigqueue *); | 1805 | extern void sigqueue_free(struct sigqueue *); |
1796 | extern int send_sigqueue(struct sigqueue *, struct task_struct *, int group); | 1806 | extern int send_sigqueue(struct sigqueue *, struct task_struct *, int group); |
@@ -1872,9 +1882,13 @@ extern void set_task_comm(struct task_struct *tsk, char *from); | |||
1872 | extern char *get_task_comm(char *to, struct task_struct *tsk); | 1882 | extern char *get_task_comm(char *to, struct task_struct *tsk); |
1873 | 1883 | ||
1874 | #ifdef CONFIG_SMP | 1884 | #ifdef CONFIG_SMP |
1875 | extern void wait_task_inactive(struct task_struct * p); | 1885 | extern unsigned long wait_task_inactive(struct task_struct *, long match_state); |
1876 | #else | 1886 | #else |
1877 | #define wait_task_inactive(p) do { } while (0) | 1887 | static inline unsigned long wait_task_inactive(struct task_struct *p, |
1888 | long match_state) | ||
1889 | { | ||
1890 | return 1; | ||
1891 | } | ||
1878 | #endif | 1892 | #endif |
1879 | 1893 | ||
1880 | #define next_task(p) list_entry(rcu_dereference((p)->tasks.next), struct task_struct, tasks) | 1894 | #define next_task(p) list_entry(rcu_dereference((p)->tasks.next), struct task_struct, tasks) |
@@ -1973,6 +1987,13 @@ static inline unsigned long *end_of_stack(struct task_struct *p) | |||
1973 | 1987 | ||
1974 | #endif | 1988 | #endif |
1975 | 1989 | ||
1990 | static inline int object_is_on_stack(void *obj) | ||
1991 | { | ||
1992 | void *stack = task_stack_page(current); | ||
1993 | |||
1994 | return (obj >= stack) && (obj < (stack + THREAD_SIZE)); | ||
1995 | } | ||
1996 | |||
1976 | extern void thread_info_cache_init(void); | 1997 | extern void thread_info_cache_init(void); |
1977 | 1998 | ||
1978 | /* set thread flags in other task's structures | 1999 | /* set thread flags in other task's structures |
@@ -2037,9 +2058,6 @@ static inline int signal_pending_state(long state, struct task_struct *p) | |||
2037 | if (!signal_pending(p)) | 2058 | if (!signal_pending(p)) |
2038 | return 0; | 2059 | return 0; |
2039 | 2060 | ||
2040 | if (state & (__TASK_STOPPED | __TASK_TRACED)) | ||
2041 | return 0; | ||
2042 | |||
2043 | return (state & TASK_INTERRUPTIBLE) || __fatal_signal_pending(p); | 2061 | return (state & TASK_INTERRUPTIBLE) || __fatal_signal_pending(p); |
2044 | } | 2062 | } |
2045 | 2063 | ||
@@ -2124,16 +2142,7 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu) | |||
2124 | 2142 | ||
2125 | #endif /* CONFIG_SMP */ | 2143 | #endif /* CONFIG_SMP */ |
2126 | 2144 | ||
2127 | #ifdef HAVE_ARCH_PICK_MMAP_LAYOUT | ||
2128 | extern void arch_pick_mmap_layout(struct mm_struct *mm); | 2145 | extern void arch_pick_mmap_layout(struct mm_struct *mm); |
2129 | #else | ||
2130 | static inline void arch_pick_mmap_layout(struct mm_struct *mm) | ||
2131 | { | ||
2132 | mm->mmap_base = TASK_UNMAPPED_BASE; | ||
2133 | mm->get_unmapped_area = arch_get_unmapped_area; | ||
2134 | mm->unmap_area = arch_unmap_area; | ||
2135 | } | ||
2136 | #endif | ||
2137 | 2146 | ||
2138 | #ifdef CONFIG_TRACING | 2147 | #ifdef CONFIG_TRACING |
2139 | extern void | 2148 | extern void |
@@ -2216,14 +2225,6 @@ static inline void inc_syscw(struct task_struct *tsk) | |||
2216 | } | 2225 | } |
2217 | #endif | 2226 | #endif |
2218 | 2227 | ||
2219 | #ifdef CONFIG_SMP | ||
2220 | void migration_init(void); | ||
2221 | #else | ||
2222 | static inline void migration_init(void) | ||
2223 | { | ||
2224 | } | ||
2225 | #endif | ||
2226 | |||
2227 | #ifndef TASK_SIZE_OF | 2228 | #ifndef TASK_SIZE_OF |
2228 | #define TASK_SIZE_OF(tsk) TASK_SIZE | 2229 | #define TASK_SIZE_OF(tsk) TASK_SIZE |
2229 | #endif | 2230 | #endif |