diff options
Diffstat (limited to 'include/linux/sched.h')
-rw-r--r-- | include/linux/sched.h | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 747fcaedddb7..9a7bc5ba7e7e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -271,14 +271,11 @@ extern int runqueue_is_locked(int cpu); | |||
271 | 271 | ||
272 | extern cpumask_var_t nohz_cpu_mask; | 272 | extern cpumask_var_t nohz_cpu_mask; |
273 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) | 273 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) |
274 | extern int select_nohz_load_balancer(int cpu); | 274 | extern void select_nohz_load_balancer(int stop_tick); |
275 | extern int get_nohz_load_balancer(void); | 275 | extern int get_nohz_timer_target(void); |
276 | extern int nohz_ratelimit(int cpu); | 276 | extern int nohz_ratelimit(int cpu); |
277 | #else | 277 | #else |
278 | static inline int select_nohz_load_balancer(int cpu) | 278 | static inline void select_nohz_load_balancer(int stop_tick) { } |
279 | { | ||
280 | return 0; | ||
281 | } | ||
282 | 279 | ||
283 | static inline int nohz_ratelimit(int cpu) | 280 | static inline int nohz_ratelimit(int cpu) |
284 | { | 281 | { |
@@ -804,7 +801,7 @@ enum cpu_idle_type { | |||
804 | #define SD_POWERSAVINGS_BALANCE 0x0100 /* Balance for power savings */ | 801 | #define SD_POWERSAVINGS_BALANCE 0x0100 /* Balance for power savings */ |
805 | #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ | 802 | #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ |
806 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ | 803 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ |
807 | 804 | #define SD_ASYM_PACKING 0x0800 /* Place busy groups earlier in the domain */ | |
808 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ | 805 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ |
809 | 806 | ||
810 | enum powersavings_balance_level { | 807 | enum powersavings_balance_level { |
@@ -839,6 +836,8 @@ static inline int sd_balance_for_package_power(void) | |||
839 | return SD_PREFER_SIBLING; | 836 | return SD_PREFER_SIBLING; |
840 | } | 837 | } |
841 | 838 | ||
839 | extern int __weak arch_sd_sibiling_asym_packing(void); | ||
840 | |||
842 | /* | 841 | /* |
843 | * Optimise SD flags for power savings: | 842 | * Optimise SD flags for power savings: |
844 | * SD_BALANCE_NEWIDLE helps agressive task consolidation and power savings. | 843 | * SD_BALANCE_NEWIDLE helps agressive task consolidation and power savings. |
@@ -860,7 +859,7 @@ struct sched_group { | |||
860 | * CPU power of this group, SCHED_LOAD_SCALE being max power for a | 859 | * CPU power of this group, SCHED_LOAD_SCALE being max power for a |
861 | * single CPU. | 860 | * single CPU. |
862 | */ | 861 | */ |
863 | unsigned int cpu_power; | 862 | unsigned int cpu_power, cpu_power_orig; |
864 | 863 | ||
865 | /* | 864 | /* |
866 | * The CPUs this group covers. | 865 | * The CPUs this group covers. |
@@ -1696,6 +1695,7 @@ extern void thread_group_times(struct task_struct *p, cputime_t *ut, cputime_t * | |||
1696 | #define PF_EXITING 0x00000004 /* getting shut down */ | 1695 | #define PF_EXITING 0x00000004 /* getting shut down */ |
1697 | #define PF_EXITPIDONE 0x00000008 /* pi exit done on shut down */ | 1696 | #define PF_EXITPIDONE 0x00000008 /* pi exit done on shut down */ |
1698 | #define PF_VCPU 0x00000010 /* I'm a virtual CPU */ | 1697 | #define PF_VCPU 0x00000010 /* I'm a virtual CPU */ |
1698 | #define PF_WQ_WORKER 0x00000020 /* I'm a workqueue worker */ | ||
1699 | #define PF_FORKNOEXEC 0x00000040 /* forked but didn't exec */ | 1699 | #define PF_FORKNOEXEC 0x00000040 /* forked but didn't exec */ |
1700 | #define PF_MCE_PROCESS 0x00000080 /* process policy on mce errors */ | 1700 | #define PF_MCE_PROCESS 0x00000080 /* process policy on mce errors */ |
1701 | #define PF_SUPERPRIV 0x00000100 /* used super-user privileges */ | 1701 | #define PF_SUPERPRIV 0x00000100 /* used super-user privileges */ |
@@ -1790,20 +1790,23 @@ static inline int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask) | |||
1790 | #endif | 1790 | #endif |
1791 | 1791 | ||
1792 | /* | 1792 | /* |
1793 | * Architectures can set this to 1 if they have specified | 1793 | * Do not use outside of architecture code which knows its limitations. |
1794 | * CONFIG_HAVE_UNSTABLE_SCHED_CLOCK in their arch Kconfig, | 1794 | * |
1795 | * but then during bootup it turns out that sched_clock() | 1795 | * sched_clock() has no promise of monotonicity or bounded drift between |
1796 | * is reliable after all: | 1796 | * CPUs, use (which you should not) requires disabling IRQs. |
1797 | * | ||
1798 | * Please use one of the three interfaces below. | ||
1797 | */ | 1799 | */ |
1798 | #ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK | ||
1799 | extern int sched_clock_stable; | ||
1800 | #endif | ||
1801 | |||
1802 | /* ftrace calls sched_clock() directly */ | ||
1803 | extern unsigned long long notrace sched_clock(void); | 1800 | extern unsigned long long notrace sched_clock(void); |
1801 | /* | ||
1802 | * See the comment in kernel/sched_clock.c | ||
1803 | */ | ||
1804 | extern u64 cpu_clock(int cpu); | ||
1805 | extern u64 local_clock(void); | ||
1806 | extern u64 sched_clock_cpu(int cpu); | ||
1807 | |||
1804 | 1808 | ||
1805 | extern void sched_clock_init(void); | 1809 | extern void sched_clock_init(void); |
1806 | extern u64 sched_clock_cpu(int cpu); | ||
1807 | 1810 | ||
1808 | #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK | 1811 | #ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK |
1809 | static inline void sched_clock_tick(void) | 1812 | static inline void sched_clock_tick(void) |
@@ -1818,17 +1821,19 @@ static inline void sched_clock_idle_wakeup_event(u64 delta_ns) | |||
1818 | { | 1821 | { |
1819 | } | 1822 | } |
1820 | #else | 1823 | #else |
1824 | /* | ||
1825 | * Architectures can set this to 1 if they have specified | ||
1826 | * CONFIG_HAVE_UNSTABLE_SCHED_CLOCK in their arch Kconfig, | ||
1827 | * but then during bootup it turns out that sched_clock() | ||
1828 | * is reliable after all: | ||
1829 | */ | ||
1830 | extern int sched_clock_stable; | ||
1831 | |||
1821 | extern void sched_clock_tick(void); | 1832 | extern void sched_clock_tick(void); |
1822 | extern void sched_clock_idle_sleep_event(void); | 1833 | extern void sched_clock_idle_sleep_event(void); |
1823 | extern void sched_clock_idle_wakeup_event(u64 delta_ns); | 1834 | extern void sched_clock_idle_wakeup_event(u64 delta_ns); |
1824 | #endif | 1835 | #endif |
1825 | 1836 | ||
1826 | /* | ||
1827 | * For kernel-internal use: high-speed (but slightly incorrect) per-cpu | ||
1828 | * clock constructed from sched_clock(): | ||
1829 | */ | ||
1830 | extern unsigned long long cpu_clock(int cpu); | ||
1831 | |||
1832 | extern unsigned long long | 1837 | extern unsigned long long |
1833 | task_sched_runtime(struct task_struct *task); | 1838 | task_sched_runtime(struct task_struct *task); |
1834 | extern unsigned long long thread_group_sched_runtime(struct task_struct *task); | 1839 | extern unsigned long long thread_group_sched_runtime(struct task_struct *task); |