aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sched.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r--include/linux/sched.h301
1 files changed, 79 insertions, 222 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h
index d35d2b6ddbfb..178a8d909f14 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -127,18 +127,6 @@ extern void proc_sched_show_task(struct task_struct *p, struct seq_file *m);
127extern void proc_sched_set_task(struct task_struct *p); 127extern void proc_sched_set_task(struct task_struct *p);
128extern void 128extern void
129print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq); 129print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq);
130#else
131static inline void
132proc_sched_show_task(struct task_struct *p, struct seq_file *m)
133{
134}
135static inline void proc_sched_set_task(struct task_struct *p)
136{
137}
138static inline void
139print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
140{
141}
142#endif 130#endif
143 131
144/* 132/*
@@ -163,9 +151,10 @@ print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq)
163#define TASK_DEAD 64 151#define TASK_DEAD 64
164#define TASK_WAKEKILL 128 152#define TASK_WAKEKILL 128
165#define TASK_WAKING 256 153#define TASK_WAKING 256
166#define TASK_STATE_MAX 512 154#define TASK_PARKED 512
155#define TASK_STATE_MAX 1024
167 156
168#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKW" 157#define TASK_STATE_TO_CHAR_STR "RSDTtZXxKWP"
169 158
170extern char ___assert_task_state[1 - 2*!!( 159extern char ___assert_task_state[1 - 2*!!(
171 sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)]; 160 sizeof(TASK_STATE_TO_CHAR_STR)-1 != ilog2(TASK_STATE_MAX)+1)];
@@ -242,7 +231,7 @@ extern void init_idle_bootup_task(struct task_struct *idle);
242 231
243extern int runqueue_is_locked(int cpu); 232extern int runqueue_is_locked(int cpu);
244 233
245#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) 234#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON)
246extern void nohz_balance_enter_idle(int cpu); 235extern void nohz_balance_enter_idle(int cpu);
247extern void set_cpu_sd_state_idle(void); 236extern void set_cpu_sd_state_idle(void);
248extern int get_nohz_timer_target(void); 237extern int get_nohz_timer_target(void);
@@ -320,13 +309,10 @@ extern signed long schedule_timeout_killable(signed long timeout);
320extern signed long schedule_timeout_uninterruptible(signed long timeout); 309extern signed long schedule_timeout_uninterruptible(signed long timeout);
321asmlinkage void schedule(void); 310asmlinkage void schedule(void);
322extern void schedule_preempt_disabled(void); 311extern void schedule_preempt_disabled(void);
323extern int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner);
324 312
325struct nsproxy; 313struct nsproxy;
326struct user_namespace; 314struct user_namespace;
327 315
328#include <linux/aio.h>
329
330#ifdef CONFIG_MMU 316#ifdef CONFIG_MMU
331extern void arch_pick_mmap_layout(struct mm_struct *mm); 317extern void arch_pick_mmap_layout(struct mm_struct *mm);
332extern unsigned long 318extern unsigned long
@@ -526,7 +512,8 @@ struct signal_struct {
526 unsigned int has_child_subreaper:1; 512 unsigned int has_child_subreaper:1;
527 513
528 /* POSIX.1b Interval Timers */ 514 /* POSIX.1b Interval Timers */
529 struct list_head posix_timers; 515 int posix_timer_id;
516 struct list_head posix_timers;
530 517
531 /* ITIMER_REAL timer for the process */ 518 /* ITIMER_REAL timer for the process */
532 struct hrtimer real_timer; 519 struct hrtimer real_timer;
@@ -570,7 +557,7 @@ struct signal_struct {
570 cputime_t utime, stime, cutime, cstime; 557 cputime_t utime, stime, cutime, cstime;
571 cputime_t gtime; 558 cputime_t gtime;
572 cputime_t cgtime; 559 cputime_t cgtime;
573#ifndef CONFIG_VIRT_CPU_ACCOUNTING 560#ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
574 struct cputime prev_cputime; 561 struct cputime prev_cputime;
575#endif 562#endif
576 unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw; 563 unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
@@ -606,6 +593,7 @@ struct signal_struct {
606#endif 593#endif
607#ifdef CONFIG_AUDIT 594#ifdef CONFIG_AUDIT
608 unsigned audit_tty; 595 unsigned audit_tty;
596 unsigned audit_tty_log_passwd;
609 struct tty_audit_buf *tty_audit_buf; 597 struct tty_audit_buf *tty_audit_buf;
610#endif 598#endif
611#ifdef CONFIG_CGROUPS 599#ifdef CONFIG_CGROUPS
@@ -637,6 +625,7 @@ struct signal_struct {
637#define SIGNAL_STOP_STOPPED 0x00000001 /* job control stop in effect */ 625#define SIGNAL_STOP_STOPPED 0x00000001 /* job control stop in effect */
638#define SIGNAL_STOP_CONTINUED 0x00000002 /* SIGCONT since WCONTINUED reap */ 626#define SIGNAL_STOP_CONTINUED 0x00000002 /* SIGCONT since WCONTINUED reap */
639#define SIGNAL_GROUP_EXIT 0x00000004 /* group exit in progress */ 627#define SIGNAL_GROUP_EXIT 0x00000004 /* group exit in progress */
628#define SIGNAL_GROUP_COREDUMP 0x00000008 /* coredump in progress */
640/* 629/*
641 * Pending notifications to parent. 630 * Pending notifications to parent.
642 */ 631 */
@@ -768,31 +757,6 @@ enum cpu_idle_type {
768}; 757};
769 758
770/* 759/*
771 * Increase resolution of nice-level calculations for 64-bit architectures.
772 * The extra resolution improves shares distribution and load balancing of
773 * low-weight task groups (eg. nice +19 on an autogroup), deeper taskgroup
774 * hierarchies, especially on larger systems. This is not a user-visible change
775 * and does not change the user-interface for setting shares/weights.
776 *
777 * We increase resolution only if we have enough bits to allow this increased
778 * resolution (i.e. BITS_PER_LONG > 32). The costs for increasing resolution
779 * when BITS_PER_LONG <= 32 are pretty high and the returns do not justify the
780 * increased costs.
781 */
782#if 0 /* BITS_PER_LONG > 32 -- currently broken: it increases power usage under light load */
783# define SCHED_LOAD_RESOLUTION 10
784# define scale_load(w) ((w) << SCHED_LOAD_RESOLUTION)
785# define scale_load_down(w) ((w) >> SCHED_LOAD_RESOLUTION)
786#else
787# define SCHED_LOAD_RESOLUTION 0
788# define scale_load(w) (w)
789# define scale_load_down(w) (w)
790#endif
791
792#define SCHED_LOAD_SHIFT (10 + SCHED_LOAD_RESOLUTION)
793#define SCHED_LOAD_SCALE (1L << SCHED_LOAD_SHIFT)
794
795/*
796 * Increase resolution of cpu_power calculations 760 * Increase resolution of cpu_power calculations
797 */ 761 */
798#define SCHED_POWER_SHIFT 10 762#define SCHED_POWER_SHIFT 10
@@ -817,62 +781,6 @@ enum cpu_idle_type {
817 781
818extern int __weak arch_sd_sibiling_asym_packing(void); 782extern int __weak arch_sd_sibiling_asym_packing(void);
819 783
820struct sched_group_power {
821 atomic_t ref;
822 /*
823 * CPU power of this group, SCHED_LOAD_SCALE being max power for a
824 * single CPU.
825 */
826 unsigned int power, power_orig;
827 unsigned long next_update;
828 /*
829 * Number of busy cpus in this group.
830 */
831 atomic_t nr_busy_cpus;
832
833 unsigned long cpumask[0]; /* iteration mask */
834};
835
836struct sched_group {
837 struct sched_group *next; /* Must be a circular list */
838 atomic_t ref;
839
840 unsigned int group_weight;
841 struct sched_group_power *sgp;
842
843 /*
844 * The CPUs this group covers.
845 *
846 * NOTE: this field is variable length. (Allocated dynamically
847 * by attaching extra space to the end of the structure,
848 * depending on how many CPUs the kernel has booted up with)
849 */
850 unsigned long cpumask[0];
851};
852
853static inline struct cpumask *sched_group_cpus(struct sched_group *sg)
854{
855 return to_cpumask(sg->cpumask);
856}
857
858/*
859 * cpumask masking which cpus in the group are allowed to iterate up the domain
860 * tree.
861 */
862static inline struct cpumask *sched_group_mask(struct sched_group *sg)
863{
864 return to_cpumask(sg->sgp->cpumask);
865}
866
867/**
868 * group_first_cpu - Returns the first cpu in the cpumask of a sched_group.
869 * @group: The group whose first cpu is to be returned.
870 */
871static inline unsigned int group_first_cpu(struct sched_group *group)
872{
873 return cpumask_first(sched_group_cpus(group));
874}
875
876struct sched_domain_attr { 784struct sched_domain_attr {
877 int relax_domain_level; 785 int relax_domain_level;
878}; 786};
@@ -883,6 +791,8 @@ struct sched_domain_attr {
883 791
884extern int sched_domain_level_max; 792extern int sched_domain_level_max;
885 793
794struct sched_group;
795
886struct sched_domain { 796struct sched_domain {
887 /* These fields must be setup */ 797 /* These fields must be setup */
888 struct sched_domain *parent; /* top domain must be null terminated */ 798 struct sched_domain *parent; /* top domain must be null terminated */
@@ -899,6 +809,8 @@ struct sched_domain {
899 unsigned int wake_idx; 809 unsigned int wake_idx;
900 unsigned int forkexec_idx; 810 unsigned int forkexec_idx;
901 unsigned int smt_gain; 811 unsigned int smt_gain;
812
813 int nohz_idle; /* NOHZ IDLE status */
902 int flags; /* See SD_* */ 814 int flags; /* See SD_* */
903 int level; 815 int level;
904 816
@@ -971,18 +883,6 @@ extern void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[],
971cpumask_var_t *alloc_sched_domains(unsigned int ndoms); 883cpumask_var_t *alloc_sched_domains(unsigned int ndoms);
972void free_sched_domains(cpumask_var_t doms[], unsigned int ndoms); 884void free_sched_domains(cpumask_var_t doms[], unsigned int ndoms);
973 885
974/* Test a flag in parent sched domain */
975static inline int test_sd_parent(struct sched_domain *sd, int flag)
976{
977 if (sd->parent && (sd->parent->flags & flag))
978 return 1;
979
980 return 0;
981}
982
983unsigned long default_scale_freq_power(struct sched_domain *sd, int cpu);
984unsigned long default_scale_smt_power(struct sched_domain *sd, int cpu);
985
986bool cpus_share_cache(int this_cpu, int that_cpu); 886bool cpus_share_cache(int this_cpu, int that_cpu);
987 887
988#else /* CONFIG_SMP */ 888#else /* CONFIG_SMP */
@@ -1017,72 +917,6 @@ struct mempolicy;
1017struct pipe_inode_info; 917struct pipe_inode_info;
1018struct uts_namespace; 918struct uts_namespace;
1019 919
1020struct rq;
1021struct sched_domain;
1022
1023/*
1024 * wake flags
1025 */
1026#define WF_SYNC 0x01 /* waker goes to sleep after wakup */
1027#define WF_FORK 0x02 /* child wakeup after fork */
1028#define WF_MIGRATED 0x04 /* internal use, task got migrated */
1029
1030#define ENQUEUE_WAKEUP 1
1031#define ENQUEUE_HEAD 2
1032#ifdef CONFIG_SMP
1033#define ENQUEUE_WAKING 4 /* sched_class::task_waking was called */
1034#else
1035#define ENQUEUE_WAKING 0
1036#endif
1037
1038#define DEQUEUE_SLEEP 1
1039
1040struct sched_class {
1041 const struct sched_class *next;
1042
1043 void (*enqueue_task) (struct rq *rq, struct task_struct *p, int flags);
1044 void (*dequeue_task) (struct rq *rq, struct task_struct *p, int flags);
1045 void (*yield_task) (struct rq *rq);
1046 bool (*yield_to_task) (struct rq *rq, struct task_struct *p, bool preempt);
1047
1048 void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int flags);
1049
1050 struct task_struct * (*pick_next_task) (struct rq *rq);
1051 void (*put_prev_task) (struct rq *rq, struct task_struct *p);
1052
1053#ifdef CONFIG_SMP
1054 int (*select_task_rq)(struct task_struct *p, int sd_flag, int flags);
1055 void (*migrate_task_rq)(struct task_struct *p, int next_cpu);
1056
1057 void (*pre_schedule) (struct rq *this_rq, struct task_struct *task);
1058 void (*post_schedule) (struct rq *this_rq);
1059 void (*task_waking) (struct task_struct *task);
1060 void (*task_woken) (struct rq *this_rq, struct task_struct *task);
1061
1062 void (*set_cpus_allowed)(struct task_struct *p,
1063 const struct cpumask *newmask);
1064
1065 void (*rq_online)(struct rq *rq);
1066 void (*rq_offline)(struct rq *rq);
1067#endif
1068
1069 void (*set_curr_task) (struct rq *rq);
1070 void (*task_tick) (struct rq *rq, struct task_struct *p, int queued);
1071 void (*task_fork) (struct task_struct *p);
1072
1073 void (*switched_from) (struct rq *this_rq, struct task_struct *task);
1074 void (*switched_to) (struct rq *this_rq, struct task_struct *task);
1075 void (*prio_changed) (struct rq *this_rq, struct task_struct *task,
1076 int oldprio);
1077
1078 unsigned int (*get_rr_interval) (struct rq *rq,
1079 struct task_struct *task);
1080
1081#ifdef CONFIG_FAIR_GROUP_SCHED
1082 void (*task_move_group) (struct task_struct *p, int on_rq);
1083#endif
1084};
1085
1086struct load_weight { 920struct load_weight {
1087 unsigned long weight, inv_weight; 921 unsigned long weight, inv_weight;
1088}; 922};
@@ -1274,8 +1108,10 @@ struct task_struct {
1274 int exit_code, exit_signal; 1108 int exit_code, exit_signal;
1275 int pdeath_signal; /* The signal sent when the parent dies */ 1109 int pdeath_signal; /* The signal sent when the parent dies */
1276 unsigned int jobctl; /* JOBCTL_*, siglock protected */ 1110 unsigned int jobctl; /* JOBCTL_*, siglock protected */
1277 /* ??? */ 1111
1112 /* Used for emulating ABI behavior of previous Linux versions */
1278 unsigned int personality; 1113 unsigned int personality;
1114
1279 unsigned did_exec:1; 1115 unsigned did_exec:1;
1280 unsigned in_execve:1; /* Tell the LSMs that the process is doing an 1116 unsigned in_execve:1; /* Tell the LSMs that the process is doing an
1281 * execve */ 1117 * execve */
@@ -1327,7 +1163,7 @@ struct task_struct {
1327 1163
1328 cputime_t utime, stime, utimescaled, stimescaled; 1164 cputime_t utime, stime, utimescaled, stimescaled;
1329 cputime_t gtime; 1165 cputime_t gtime;
1330#ifndef CONFIG_VIRT_CPU_ACCOUNTING 1166#ifndef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
1331 struct cputime prev_cputime; 1167 struct cputime prev_cputime;
1332#endif 1168#endif
1333#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN 1169#ifdef CONFIG_VIRT_CPU_ACCOUNTING_GEN
@@ -1576,6 +1412,10 @@ struct task_struct {
1576#ifdef CONFIG_UPROBES 1412#ifdef CONFIG_UPROBES
1577 struct uprobe_task *utask; 1413 struct uprobe_task *utask;
1578#endif 1414#endif
1415#if defined(CONFIG_BCACHE) || defined(CONFIG_BCACHE_MODULE)
1416 unsigned int sequential_io;
1417 unsigned int sequential_io_avg;
1418#endif
1579}; 1419};
1580 1420
1581/* Future-safe accessor for struct task_struct's cpus_allowed. */ 1421/* Future-safe accessor for struct task_struct's cpus_allowed. */
@@ -1793,7 +1633,7 @@ extern void thread_group_cputime_adjusted(struct task_struct *p, cputime_t *ut,
1793#define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */ 1633#define PF_SWAPWRITE 0x00800000 /* Allowed to write to swap */
1794#define PF_SPREAD_PAGE 0x01000000 /* Spread page cache over cpuset */ 1634#define PF_SPREAD_PAGE 0x01000000 /* Spread page cache over cpuset */
1795#define PF_SPREAD_SLAB 0x02000000 /* Spread some slab caches over cpuset */ 1635#define PF_SPREAD_SLAB 0x02000000 /* Spread some slab caches over cpuset */
1796#define PF_THREAD_BOUND 0x04000000 /* Thread bound to specific cpu */ 1636#define PF_NO_SETAFFINITY 0x04000000 /* Userland is not allowed to meddle with cpus_allowed */
1797#define PF_MCE_EARLY 0x08000000 /* Early kill for mce process policy */ 1637#define PF_MCE_EARLY 0x08000000 /* Early kill for mce process policy */
1798#define PF_MEMPOLICY 0x10000000 /* Non-default NUMA mempolicy */ 1638#define PF_MEMPOLICY 0x10000000 /* Non-default NUMA mempolicy */
1799#define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */ 1639#define PF_MUTEX_TESTER 0x20000000 /* Thread belongs to the rt mutex tester */
@@ -1927,13 +1767,13 @@ static inline int set_cpus_allowed_ptr(struct task_struct *p,
1927} 1767}
1928#endif 1768#endif
1929 1769
1930#ifdef CONFIG_NO_HZ 1770#ifdef CONFIG_NO_HZ_COMMON
1931void calc_load_enter_idle(void); 1771void calc_load_enter_idle(void);
1932void calc_load_exit_idle(void); 1772void calc_load_exit_idle(void);
1933#else 1773#else
1934static inline void calc_load_enter_idle(void) { } 1774static inline void calc_load_enter_idle(void) { }
1935static inline void calc_load_exit_idle(void) { } 1775static inline void calc_load_exit_idle(void) { }
1936#endif /* CONFIG_NO_HZ */ 1776#endif /* CONFIG_NO_HZ_COMMON */
1937 1777
1938#ifndef CONFIG_CPUMASK_OFFSTACK 1778#ifndef CONFIG_CPUMASK_OFFSTACK
1939static inline int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask) 1779static inline int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)
@@ -2019,10 +1859,17 @@ extern void idle_task_exit(void);
2019static inline void idle_task_exit(void) {} 1859static inline void idle_task_exit(void) {}
2020#endif 1860#endif
2021 1861
2022#if defined(CONFIG_NO_HZ) && defined(CONFIG_SMP) 1862#if defined(CONFIG_NO_HZ_COMMON) && defined(CONFIG_SMP)
2023extern void wake_up_idle_cpu(int cpu); 1863extern void wake_up_nohz_cpu(int cpu);
2024#else 1864#else
2025static inline void wake_up_idle_cpu(int cpu) { } 1865static inline void wake_up_nohz_cpu(int cpu) { }
1866#endif
1867
1868#ifdef CONFIG_NO_HZ_FULL
1869extern bool sched_can_stop_tick(void);
1870extern u64 scheduler_tick_max_deferment(void);
1871#else
1872static inline bool sched_can_stop_tick(void) { return false; }
2026#endif 1873#endif
2027 1874
2028#ifdef CONFIG_SCHED_AUTOGROUP 1875#ifdef CONFIG_SCHED_AUTOGROUP
@@ -2412,27 +2259,18 @@ static inline void threadgroup_change_end(struct task_struct *tsk)
2412 * 2259 *
2413 * Lock the threadgroup @tsk belongs to. No new task is allowed to enter 2260 * Lock the threadgroup @tsk belongs to. No new task is allowed to enter
2414 * and member tasks aren't allowed to exit (as indicated by PF_EXITING) or 2261 * and member tasks aren't allowed to exit (as indicated by PF_EXITING) or
2415 * perform exec. This is useful for cases where the threadgroup needs to 2262 * change ->group_leader/pid. This is useful for cases where the threadgroup
2416 * stay stable across blockable operations. 2263 * needs to stay stable across blockable operations.
2417 * 2264 *
2418 * fork and exit paths explicitly call threadgroup_change_{begin|end}() for 2265 * fork and exit paths explicitly call threadgroup_change_{begin|end}() for
2419 * synchronization. While held, no new task will be added to threadgroup 2266 * synchronization. While held, no new task will be added to threadgroup
2420 * and no existing live task will have its PF_EXITING set. 2267 * and no existing live task will have its PF_EXITING set.
2421 * 2268 *
2422 * During exec, a task goes and puts its thread group through unusual 2269 * de_thread() does threadgroup_change_{begin|end}() when a non-leader
2423 * changes. After de-threading, exclusive access is assumed to resources 2270 * sub-thread becomes a new leader.
2424 * which are usually shared by tasks in the same group - e.g. sighand may
2425 * be replaced with a new one. Also, the exec'ing task takes over group
2426 * leader role including its pid. Exclude these changes while locked by
2427 * grabbing cred_guard_mutex which is used to synchronize exec path.
2428 */ 2271 */
2429static inline void threadgroup_lock(struct task_struct *tsk) 2272static inline void threadgroup_lock(struct task_struct *tsk)
2430{ 2273{
2431 /*
2432 * exec uses exit for de-threading nesting group_rwsem inside
2433 * cred_guard_mutex. Grab cred_guard_mutex first.
2434 */
2435 mutex_lock(&tsk->signal->cred_guard_mutex);
2436 down_write(&tsk->signal->group_rwsem); 2274 down_write(&tsk->signal->group_rwsem);
2437} 2275}
2438 2276
@@ -2445,7 +2283,6 @@ static inline void threadgroup_lock(struct task_struct *tsk)
2445static inline void threadgroup_unlock(struct task_struct *tsk) 2283static inline void threadgroup_unlock(struct task_struct *tsk)
2446{ 2284{
2447 up_write(&tsk->signal->group_rwsem); 2285 up_write(&tsk->signal->group_rwsem);
2448 mutex_unlock(&tsk->signal->cred_guard_mutex);
2449} 2286}
2450#else 2287#else
2451static inline void threadgroup_change_begin(struct task_struct *tsk) {} 2288static inline void threadgroup_change_begin(struct task_struct *tsk) {}
@@ -2622,6 +2459,47 @@ static inline int spin_needbreak(spinlock_t *lock)
2622} 2459}
2623 2460
2624/* 2461/*
2462 * Idle thread specific functions to determine the need_resched
2463 * polling state. We have two versions, one based on TS_POLLING in
2464 * thread_info.status and one based on TIF_POLLING_NRFLAG in
2465 * thread_info.flags
2466 */
2467#ifdef TS_POLLING
2468static inline int tsk_is_polling(struct task_struct *p)
2469{
2470 return task_thread_info(p)->status & TS_POLLING;
2471}
2472static inline void current_set_polling(void)
2473{
2474 current_thread_info()->status |= TS_POLLING;
2475}
2476
2477static inline void current_clr_polling(void)
2478{
2479 current_thread_info()->status &= ~TS_POLLING;
2480 smp_mb__after_clear_bit();
2481}
2482#elif defined(TIF_POLLING_NRFLAG)
2483static inline int tsk_is_polling(struct task_struct *p)
2484{
2485 return test_tsk_thread_flag(p, TIF_POLLING_NRFLAG);
2486}
2487static inline void current_set_polling(void)
2488{
2489 set_thread_flag(TIF_POLLING_NRFLAG);
2490}
2491
2492static inline void current_clr_polling(void)
2493{
2494 clear_thread_flag(TIF_POLLING_NRFLAG);
2495}
2496#else
2497static inline int tsk_is_polling(struct task_struct *p) { return 0; }
2498static inline void current_set_polling(void) { }
2499static inline void current_clr_polling(void) { }
2500#endif
2501
2502/*
2625 * Thread group CPU time accounting. 2503 * Thread group CPU time accounting.
2626 */ 2504 */
2627void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times); 2505void thread_group_cputime(struct task_struct *tsk, struct task_cputime *times);
@@ -2681,28 +2559,7 @@ extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask);
2681extern long sched_getaffinity(pid_t pid, struct cpumask *mask); 2559extern long sched_getaffinity(pid_t pid, struct cpumask *mask);
2682 2560
2683#ifdef CONFIG_CGROUP_SCHED 2561#ifdef CONFIG_CGROUP_SCHED
2684
2685extern struct task_group root_task_group; 2562extern struct task_group root_task_group;
2686
2687extern struct task_group *sched_create_group(struct task_group *parent);
2688extern void sched_online_group(struct task_group *tg,
2689 struct task_group *parent);
2690extern void sched_destroy_group(struct task_group *tg);
2691extern void sched_offline_group(struct task_group *tg);
2692extern void sched_move_task(struct task_struct *tsk);
2693#ifdef CONFIG_FAIR_GROUP_SCHED
2694extern int sched_group_set_shares(struct task_group *tg, unsigned long shares);
2695extern unsigned long sched_group_shares(struct task_group *tg);
2696#endif
2697#ifdef CONFIG_RT_GROUP_SCHED
2698extern int sched_group_set_rt_runtime(struct task_group *tg,
2699 long rt_runtime_us);
2700extern long sched_group_rt_runtime(struct task_group *tg);
2701extern int sched_group_set_rt_period(struct task_group *tg,
2702 long rt_period_us);
2703extern long sched_group_rt_period(struct task_group *tg);
2704extern int sched_rt_can_attach(struct task_group *tg, struct task_struct *tsk);
2705#endif
2706#endif /* CONFIG_CGROUP_SCHED */ 2563#endif /* CONFIG_CGROUP_SCHED */
2707 2564
2708extern int task_can_switch_user(struct user_struct *up, 2565extern int task_can_switch_user(struct user_struct *up,