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.h53
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
272extern cpumask_var_t nohz_cpu_mask; 272extern cpumask_var_t nohz_cpu_mask;
273#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) 273#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ)
274extern int select_nohz_load_balancer(int cpu); 274extern void select_nohz_load_balancer(int stop_tick);
275extern int get_nohz_load_balancer(void); 275extern int get_nohz_timer_target(void);
276extern int nohz_ratelimit(int cpu); 276extern int nohz_ratelimit(int cpu);
277#else 277#else
278static inline int select_nohz_load_balancer(int cpu) 278static inline void select_nohz_load_balancer(int stop_tick) { }
279{
280 return 0;
281}
282 279
283static inline int nohz_ratelimit(int cpu) 280static 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
810enum powersavings_balance_level { 807enum 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
839extern 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
1799extern int sched_clock_stable;
1800#endif
1801
1802/* ftrace calls sched_clock() directly */
1803extern unsigned long long notrace sched_clock(void); 1800extern unsigned long long notrace sched_clock(void);
1801/*
1802 * See the comment in kernel/sched_clock.c
1803 */
1804extern u64 cpu_clock(int cpu);
1805extern u64 local_clock(void);
1806extern u64 sched_clock_cpu(int cpu);
1807
1804 1808
1805extern void sched_clock_init(void); 1809extern void sched_clock_init(void);
1806extern u64 sched_clock_cpu(int cpu);
1807 1810
1808#ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK 1811#ifndef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK
1809static inline void sched_clock_tick(void) 1812static 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 */
1830extern int sched_clock_stable;
1831
1821extern void sched_clock_tick(void); 1832extern void sched_clock_tick(void);
1822extern void sched_clock_idle_sleep_event(void); 1833extern void sched_clock_idle_sleep_event(void);
1823extern void sched_clock_idle_wakeup_event(u64 delta_ns); 1834extern 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 */
1830extern unsigned long long cpu_clock(int cpu);
1831
1832extern unsigned long long 1837extern unsigned long long
1833task_sched_runtime(struct task_struct *task); 1838task_sched_runtime(struct task_struct *task);
1834extern unsigned long long thread_group_sched_runtime(struct task_struct *task); 1839extern unsigned long long thread_group_sched_runtime(struct task_struct *task);