mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
Merge branch 'sched/fast-headers' into sched/core
Merge the scheduler build speedup of the fast-headers tree. Cumulative scheduler (kernel/sched/) build time speedup on a Linux distribution's config, which enables all scheduler features, compared to the vanilla kernel: _____________________________________________________________________________ | | Vanilla kernel (v5.13-rc7): |_____________________________________________________________________________ | | Performance counter stats for 'make -j96 kernel/sched/' (3 runs): | | 126,975,564,374 instructions # 1.45 insn per cycle ( +- 0.00% ) | 87,637,847,671 cycles # 3.959 GHz ( +- 0.30% ) | 22,136.96 msec cpu-clock # 7.499 CPUs utilized ( +- 0.29% ) | | 2.9520 +- 0.0169 seconds time elapsed ( +- 0.57% ) |_____________________________________________________________________________ | | Patched kernel: |_____________________________________________________________________________ | | Performance counter stats for 'make -j96 kernel/sched/' (3 runs): | | 50,420,496,914 instructions # 1.47 insn per cycle ( +- 0.00% ) | 34,234,322,038 cycles # 3.946 GHz ( +- 0.31% ) | 8,675.81 msec cpu-clock # 3.053 CPUs utilized ( +- 0.45% ) | | 2.8420 +- 0.0181 seconds time elapsed ( +- 0.64% ) |_____________________________________________________________________________ Summary: - CPU time used to build the scheduler dropped by -60.9%, a reduction from 22.1 clock-seconds to 8.7 clock-seconds. - Wall-clock time to build the scheduler dropped by -3.9%, a reduction from 2.95 seconds to 2.84 seconds. Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
ccacfe56d7
1
arch/arm64/include/asm/paravirt_api_clock.h
Normal file
1
arch/arm64/include/asm/paravirt_api_clock.h
Normal file
@ -0,0 +1 @@
|
||||
#include <asm/paravirt.h>
|
1
arch/x86/include/asm/paravirt_api_clock.h
Normal file
1
arch/x86/include/asm/paravirt_api_clock.h
Normal file
@ -0,0 +1 @@
|
||||
#include <asm/paravirt.h>
|
1
include/linux/cgroup_api.h
Normal file
1
include/linux/cgroup_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/cgroup.h>
|
1
include/linux/cpumask_api.h
Normal file
1
include/linux/cpumask_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/cpumask.h>
|
1
include/linux/fs_api.h
Normal file
1
include/linux/fs_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/fs.h>
|
1
include/linux/gfp_api.h
Normal file
1
include/linux/gfp_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/gfp.h>
|
1
include/linux/hashtable_api.h
Normal file
1
include/linux/hashtable_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/hashtable.h>
|
1
include/linux/hrtimer_api.h
Normal file
1
include/linux/hrtimer_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/hrtimer.h>
|
1
include/linux/kobject_api.h
Normal file
1
include/linux/kobject_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/kobject.h>
|
1
include/linux/kref_api.h
Normal file
1
include/linux/kref_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/kref.h>
|
1
include/linux/ktime_api.h
Normal file
1
include/linux/ktime_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/ktime.h>
|
1
include/linux/llist_api.h
Normal file
1
include/linux/llist_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/llist.h>
|
1
include/linux/lockdep_api.h
Normal file
1
include/linux/lockdep_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/lockdep.h>
|
1
include/linux/mm_api.h
Normal file
1
include/linux/mm_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/mm.h>
|
1
include/linux/mutex_api.h
Normal file
1
include/linux/mutex_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/mutex.h>
|
1
include/linux/perf_event_api.h
Normal file
1
include/linux/perf_event_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/perf_event.h>
|
1
include/linux/pgtable_api.h
Normal file
1
include/linux/pgtable_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/pgtable.h>
|
1
include/linux/ptrace_api.h
Normal file
1
include/linux/ptrace_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/ptrace.h>
|
1
include/linux/rcuwait_api.h
Normal file
1
include/linux/rcuwait_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/rcuwait.h>
|
1
include/linux/refcount_api.h
Normal file
1
include/linux/refcount_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/refcount.h>
|
1
include/linux/sched/affinity.h
Normal file
1
include/linux/sched/affinity.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/sched.h>
|
1
include/linux/sched/cond_resched.h
Normal file
1
include/linux/sched/cond_resched.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/sched.h>
|
@ -6,6 +6,8 @@
|
||||
* NORMAL/BATCH tasks.
|
||||
*/
|
||||
|
||||
#include <linux/sched.h>
|
||||
|
||||
#define MAX_DL_PRIO 0
|
||||
|
||||
static inline int dl_prio(int prio)
|
||||
|
1
include/linux/sched/posix-timers.h
Normal file
1
include/linux/sched/posix-timers.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/posix-timers.h>
|
1
include/linux/sched/rseq_api.h
Normal file
1
include/linux/sched/rseq_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/rseq.h>
|
1
include/linux/sched/task_flags.h
Normal file
1
include/linux/sched/task_flags.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/sched.h>
|
1
include/linux/sched/thread_info_api.h
Normal file
1
include/linux/sched/thread_info_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/thread_info.h>
|
@ -5,6 +5,8 @@
|
||||
#ifndef LINUX_SCHED_CLOCK
|
||||
#define LINUX_SCHED_CLOCK
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#ifdef CONFIG_GENERIC_SCHED_CLOCK
|
||||
/**
|
||||
* struct clock_read_data - data required to read from sched_clock()
|
||||
|
1
include/linux/seqlock_api.h
Normal file
1
include/linux/seqlock_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/seqlock.h>
|
1
include/linux/softirq.h
Normal file
1
include/linux/softirq.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/interrupt.h>
|
1
include/linux/spinlock_api.h
Normal file
1
include/linux/spinlock_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/spinlock.h>
|
1
include/linux/swait_api.h
Normal file
1
include/linux/swait_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/swait.h>
|
1
include/linux/syscalls_api.h
Normal file
1
include/linux/syscalls_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/syscalls.h>
|
1
include/linux/u64_stats_sync_api.h
Normal file
1
include/linux/u64_stats_sync_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/u64_stats_sync.h>
|
1
include/linux/wait_api.h
Normal file
1
include/linux/wait_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/wait.h>
|
1
include/linux/workqueue_api.h
Normal file
1
include/linux/workqueue_api.h
Normal file
@ -0,0 +1 @@
|
||||
#include <linux/workqueue.h>
|
@ -1,7 +1,4 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
ifdef CONFIG_FUNCTION_TRACER
|
||||
CFLAGS_REMOVE_clock.o = $(CC_FLAGS_FTRACE)
|
||||
endif
|
||||
|
||||
# The compilers are complaining about unused variables inside an if(0) scope
|
||||
# block. This is daft, shut them up.
|
||||
@ -25,18 +22,13 @@ ifneq ($(CONFIG_SCHED_OMIT_FRAME_POINTER),y)
|
||||
CFLAGS_core.o := $(PROFILING) -fno-omit-frame-pointer
|
||||
endif
|
||||
|
||||
obj-y += core.o loadavg.o clock.o cputime.o
|
||||
obj-y += idle.o fair.o rt.o deadline.o
|
||||
obj-y += wait.o wait_bit.o swait.o completion.o
|
||||
|
||||
obj-$(CONFIG_SMP) += cpupri.o cpudeadline.o topology.o stop_task.o pelt.o
|
||||
obj-$(CONFIG_SCHED_AUTOGROUP) += autogroup.o
|
||||
obj-$(CONFIG_SCHEDSTATS) += stats.o
|
||||
obj-$(CONFIG_SCHED_DEBUG) += debug.o
|
||||
obj-$(CONFIG_CGROUP_CPUACCT) += cpuacct.o
|
||||
obj-$(CONFIG_CPU_FREQ) += cpufreq.o
|
||||
obj-$(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) += cpufreq_schedutil.o
|
||||
obj-$(CONFIG_MEMBARRIER) += membarrier.o
|
||||
obj-$(CONFIG_CPU_ISOLATION) += isolation.o
|
||||
obj-$(CONFIG_PSI) += psi.o
|
||||
obj-$(CONFIG_SCHED_CORE) += core_sched.o
|
||||
#
|
||||
# Build efficiency:
|
||||
#
|
||||
# These compilation units have roughly the same size and complexity - so their
|
||||
# build parallelizes well and finishes roughly at once:
|
||||
#
|
||||
obj-y += core.o
|
||||
obj-y += fair.o
|
||||
obj-y += build_policy.o
|
||||
obj-y += build_utility.o
|
||||
|
@ -1,9 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
/*
|
||||
* Auto-group scheduling implementation:
|
||||
*/
|
||||
#include <linux/nospec.h>
|
||||
#include "sched.h"
|
||||
|
||||
unsigned int __read_mostly sysctl_sched_autogroup_enabled = 1;
|
||||
static struct autogroup autogroup_default;
|
||||
|
@ -1,4 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _KERNEL_SCHED_AUTOGROUP_H
|
||||
#define _KERNEL_SCHED_AUTOGROUP_H
|
||||
|
||||
#ifdef CONFIG_SCHED_AUTOGROUP
|
||||
|
||||
struct autogroup {
|
||||
@ -59,3 +62,5 @@ static inline int autogroup_path(struct task_group *tg, char *buf, int buflen)
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SCHED_AUTOGROUP */
|
||||
|
||||
#endif /* _KERNEL_SCHED_AUTOGROUP_H */
|
||||
|
52
kernel/sched/build_policy.c
Normal file
52
kernel/sched/build_policy.c
Normal file
@ -0,0 +1,52 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* These are the scheduling policy related scheduler files, built
|
||||
* in a single compilation unit for build efficiency reasons.
|
||||
*
|
||||
* ( Incidentally, the size of the compilation unit is roughly
|
||||
* comparable to core.c and fair.c, the other two big
|
||||
* compilation units. This helps balance build time, while
|
||||
* coalescing source files to amortize header inclusion
|
||||
* cost. )
|
||||
*
|
||||
* core.c and fair.c are built separately.
|
||||
*/
|
||||
|
||||
/* Headers: */
|
||||
#include <linux/sched/clock.h>
|
||||
#include <linux/sched/cputime.h>
|
||||
#include <linux/sched/posix-timers.h>
|
||||
#include <linux/sched/rt.h>
|
||||
|
||||
#include <linux/cpuidle.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/livepatch.h>
|
||||
#include <linux/psi.h>
|
||||
#include <linux/seqlock_api.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/tsacct_kern.h>
|
||||
#include <linux/vtime.h>
|
||||
|
||||
#include <uapi/linux/sched/types.h>
|
||||
|
||||
#include "sched.h"
|
||||
|
||||
#include "autogroup.h"
|
||||
#include "stats.h"
|
||||
#include "pelt.h"
|
||||
|
||||
/* Source code modules: */
|
||||
|
||||
#include "idle.c"
|
||||
|
||||
#include "rt.c"
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
# include "cpudeadline.c"
|
||||
# include "pelt.c"
|
||||
#endif
|
||||
|
||||
#include "cputime.c"
|
||||
#include "deadline.c"
|
||||
|
109
kernel/sched/build_utility.c
Normal file
109
kernel/sched/build_utility.c
Normal file
@ -0,0 +1,109 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* These are various utility functions of the scheduler,
|
||||
* built in a single compilation unit for build efficiency reasons.
|
||||
*
|
||||
* ( Incidentally, the size of the compilation unit is roughly
|
||||
* comparable to core.c, fair.c, smp.c and policy.c, the other
|
||||
* big compilation units. This helps balance build time, while
|
||||
* coalescing source files to amortize header inclusion
|
||||
* cost. )
|
||||
*/
|
||||
#include <linux/sched/clock.h>
|
||||
#include <linux/sched/cputime.h>
|
||||
#include <linux/sched/debug.h>
|
||||
#include <linux/sched/isolation.h>
|
||||
#include <linux/sched/loadavg.h>
|
||||
#include <linux/sched/mm.h>
|
||||
#include <linux/sched/rseq_api.h>
|
||||
#include <linux/sched/task_stack.h>
|
||||
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/cpumask_api.h>
|
||||
#include <linux/cpuset.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/energy_model.h>
|
||||
#include <linux/hashtable_api.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kobject_api.h>
|
||||
#include <linux/membarrier.h>
|
||||
#include <linux/mempolicy.h>
|
||||
#include <linux/nmi.h>
|
||||
#include <linux/nospec.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/psi.h>
|
||||
#include <linux/psi.h>
|
||||
#include <linux/ptrace_api.h>
|
||||
#include <linux/sched_clock.h>
|
||||
#include <linux/security.h>
|
||||
#include <linux/spinlock_api.h>
|
||||
#include <linux/swait_api.h>
|
||||
#include <linux/timex.h>
|
||||
#include <linux/utsname.h>
|
||||
#include <linux/wait_api.h>
|
||||
#include <linux/workqueue_api.h>
|
||||
|
||||
#include <uapi/linux/prctl.h>
|
||||
#include <uapi/linux/sched/types.h>
|
||||
|
||||
#include <asm/switch_to.h>
|
||||
|
||||
#include "sched.h"
|
||||
#include "sched-pelt.h"
|
||||
#include "stats.h"
|
||||
#include "autogroup.h"
|
||||
|
||||
#include "clock.c"
|
||||
|
||||
#ifdef CONFIG_CGROUP_CPUACCT
|
||||
# include "cpuacct.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_FREQ
|
||||
# include "cpufreq.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_FREQ_GOV_SCHEDUTIL
|
||||
# include "cpufreq_schedutil.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCHED_DEBUG
|
||||
# include "debug.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCHEDSTATS
|
||||
# include "stats.c"
|
||||
#endif
|
||||
|
||||
#include "loadavg.c"
|
||||
#include "completion.c"
|
||||
#include "swait.c"
|
||||
#include "wait_bit.c"
|
||||
#include "wait.c"
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
# include "cpupri.c"
|
||||
# include "stop_task.c"
|
||||
# include "topology.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCHED_CORE
|
||||
# include "core_sched.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PSI
|
||||
# include "psi.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MEMBARRIER
|
||||
# include "membarrier.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_ISOLATION
|
||||
# include "isolation.c"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCHED_AUTOGROUP
|
||||
# include "autogroup.c"
|
||||
#endif
|
@ -53,15 +53,13 @@
|
||||
* that is otherwise invisible (TSC gets stopped).
|
||||
*
|
||||
*/
|
||||
#include "sched.h"
|
||||
#include <linux/sched_clock.h>
|
||||
|
||||
/*
|
||||
* Scheduler clock - returns current time in nanosec units.
|
||||
* This is default implementation.
|
||||
* Architectures and sub-architectures can override this.
|
||||
*/
|
||||
unsigned long long __weak sched_clock(void)
|
||||
notrace unsigned long long __weak sched_clock(void)
|
||||
{
|
||||
return (unsigned long long)(jiffies - INITIAL_JIFFIES)
|
||||
* (NSEC_PER_SEC / HZ);
|
||||
@ -95,28 +93,28 @@ struct sched_clock_data {
|
||||
|
||||
static DEFINE_PER_CPU_SHARED_ALIGNED(struct sched_clock_data, sched_clock_data);
|
||||
|
||||
static inline struct sched_clock_data *this_scd(void)
|
||||
notrace static inline struct sched_clock_data *this_scd(void)
|
||||
{
|
||||
return this_cpu_ptr(&sched_clock_data);
|
||||
}
|
||||
|
||||
static inline struct sched_clock_data *cpu_sdc(int cpu)
|
||||
notrace static inline struct sched_clock_data *cpu_sdc(int cpu)
|
||||
{
|
||||
return &per_cpu(sched_clock_data, cpu);
|
||||
}
|
||||
|
||||
int sched_clock_stable(void)
|
||||
notrace int sched_clock_stable(void)
|
||||
{
|
||||
return static_branch_likely(&__sched_clock_stable);
|
||||
}
|
||||
|
||||
static void __scd_stamp(struct sched_clock_data *scd)
|
||||
notrace static void __scd_stamp(struct sched_clock_data *scd)
|
||||
{
|
||||
scd->tick_gtod = ktime_get_ns();
|
||||
scd->tick_raw = sched_clock();
|
||||
}
|
||||
|
||||
static void __set_sched_clock_stable(void)
|
||||
notrace static void __set_sched_clock_stable(void)
|
||||
{
|
||||
struct sched_clock_data *scd;
|
||||
|
||||
@ -151,7 +149,7 @@ static void __set_sched_clock_stable(void)
|
||||
* The only way to fully avoid random clock jumps is to boot with:
|
||||
* "tsc=unstable".
|
||||
*/
|
||||
static void __sched_clock_work(struct work_struct *work)
|
||||
notrace static void __sched_clock_work(struct work_struct *work)
|
||||
{
|
||||
struct sched_clock_data *scd;
|
||||
int cpu;
|
||||
@ -177,7 +175,7 @@ static void __sched_clock_work(struct work_struct *work)
|
||||
|
||||
static DECLARE_WORK(sched_clock_work, __sched_clock_work);
|
||||
|
||||
static void __clear_sched_clock_stable(void)
|
||||
notrace static void __clear_sched_clock_stable(void)
|
||||
{
|
||||
if (!sched_clock_stable())
|
||||
return;
|
||||
@ -186,7 +184,7 @@ static void __clear_sched_clock_stable(void)
|
||||
schedule_work(&sched_clock_work);
|
||||
}
|
||||
|
||||
void clear_sched_clock_stable(void)
|
||||
notrace void clear_sched_clock_stable(void)
|
||||
{
|
||||
__sched_clock_stable_early = 0;
|
||||
|
||||
@ -196,7 +194,7 @@ void clear_sched_clock_stable(void)
|
||||
__clear_sched_clock_stable();
|
||||
}
|
||||
|
||||
static void __sched_clock_gtod_offset(void)
|
||||
notrace static void __sched_clock_gtod_offset(void)
|
||||
{
|
||||
struct sched_clock_data *scd = this_scd();
|
||||
|
||||
@ -246,12 +244,12 @@ late_initcall(sched_clock_init_late);
|
||||
* min, max except they take wrapping into account
|
||||
*/
|
||||
|
||||
static inline u64 wrap_min(u64 x, u64 y)
|
||||
notrace static inline u64 wrap_min(u64 x, u64 y)
|
||||
{
|
||||
return (s64)(x - y) < 0 ? x : y;
|
||||
}
|
||||
|
||||
static inline u64 wrap_max(u64 x, u64 y)
|
||||
notrace static inline u64 wrap_max(u64 x, u64 y)
|
||||
{
|
||||
return (s64)(x - y) > 0 ? x : y;
|
||||
}
|
||||
@ -262,7 +260,7 @@ static inline u64 wrap_max(u64 x, u64 y)
|
||||
* - filter out backward motion
|
||||
* - use the GTOD tick value to create a window to filter crazy TSC values
|
||||
*/
|
||||
static u64 sched_clock_local(struct sched_clock_data *scd)
|
||||
notrace static u64 sched_clock_local(struct sched_clock_data *scd)
|
||||
{
|
||||
u64 now, clock, old_clock, min_clock, max_clock, gtod;
|
||||
s64 delta;
|
||||
@ -295,7 +293,7 @@ static u64 sched_clock_local(struct sched_clock_data *scd)
|
||||
return clock;
|
||||
}
|
||||
|
||||
static u64 sched_clock_remote(struct sched_clock_data *scd)
|
||||
notrace static u64 sched_clock_remote(struct sched_clock_data *scd)
|
||||
{
|
||||
struct sched_clock_data *my_scd = this_scd();
|
||||
u64 this_clock, remote_clock;
|
||||
@ -362,7 +360,7 @@ static u64 sched_clock_remote(struct sched_clock_data *scd)
|
||||
*
|
||||
* See cpu_clock().
|
||||
*/
|
||||
u64 sched_clock_cpu(int cpu)
|
||||
notrace u64 sched_clock_cpu(int cpu)
|
||||
{
|
||||
struct sched_clock_data *scd;
|
||||
u64 clock;
|
||||
@ -386,7 +384,7 @@ u64 sched_clock_cpu(int cpu)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sched_clock_cpu);
|
||||
|
||||
void sched_clock_tick(void)
|
||||
notrace void sched_clock_tick(void)
|
||||
{
|
||||
struct sched_clock_data *scd;
|
||||
|
||||
@ -403,7 +401,7 @@ void sched_clock_tick(void)
|
||||
sched_clock_local(scd);
|
||||
}
|
||||
|
||||
void sched_clock_tick_stable(void)
|
||||
notrace void sched_clock_tick_stable(void)
|
||||
{
|
||||
if (!sched_clock_stable())
|
||||
return;
|
||||
@ -423,7 +421,7 @@ void sched_clock_tick_stable(void)
|
||||
/*
|
||||
* We are going deep-idle (irqs are disabled):
|
||||
*/
|
||||
void sched_clock_idle_sleep_event(void)
|
||||
notrace void sched_clock_idle_sleep_event(void)
|
||||
{
|
||||
sched_clock_cpu(smp_processor_id());
|
||||
}
|
||||
@ -432,7 +430,7 @@ EXPORT_SYMBOL_GPL(sched_clock_idle_sleep_event);
|
||||
/*
|
||||
* We just idled; resync with ktime.
|
||||
*/
|
||||
void sched_clock_idle_wakeup_event(void)
|
||||
notrace void sched_clock_idle_wakeup_event(void)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
@ -458,7 +456,7 @@ void __init sched_clock_init(void)
|
||||
local_irq_enable();
|
||||
}
|
||||
|
||||
u64 sched_clock_cpu(int cpu)
|
||||
notrace u64 sched_clock_cpu(int cpu)
|
||||
{
|
||||
if (!static_branch_likely(&sched_clock_running))
|
||||
return 0;
|
||||
@ -476,7 +474,7 @@ u64 sched_clock_cpu(int cpu)
|
||||
* On bare metal this function should return the same as local_clock.
|
||||
* Architectures and sub-architectures can override this.
|
||||
*/
|
||||
u64 __weak running_clock(void)
|
||||
notrace u64 __weak running_clock(void)
|
||||
{
|
||||
return local_clock();
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
/*
|
||||
* Generic wait-for-completion handler;
|
||||
*
|
||||
@ -11,7 +12,6 @@
|
||||
* typically be used for exclusion which gives rise to priority inversion.
|
||||
* Waiting for completion is a typically sync point, but not an exclusion point.
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
/**
|
||||
* complete: - signals a single thread waiting on this completion
|
||||
|
@ -6,28 +6,89 @@
|
||||
*
|
||||
* Copyright (C) 1991-2002 Linus Torvalds
|
||||
*/
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/sched.h>
|
||||
#undef CREATE_TRACE_POINTS
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/hrtimer_api.h>
|
||||
#include <linux/ktime_api.h>
|
||||
#include <linux/sched/signal.h>
|
||||
#include <linux/syscalls_api.h>
|
||||
#include <linux/debug_locks.h>
|
||||
#include <linux/prefetch.h>
|
||||
#include <linux/capability.h>
|
||||
#include <linux/pgtable_api.h>
|
||||
#include <linux/wait_bit.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/spinlock_api.h>
|
||||
#include <linux/cpumask_api.h>
|
||||
#include <linux/lockdep_api.h>
|
||||
#include <linux/hardirq.h>
|
||||
#include <linux/softirq.h>
|
||||
#include <linux/refcount_api.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/sched/clock.h>
|
||||
#include <linux/sched/cond_resched.h>
|
||||
#include <linux/sched/debug.h>
|
||||
#include <linux/sched/isolation.h>
|
||||
#include <linux/sched/loadavg.h>
|
||||
#include <linux/sched/mm.h>
|
||||
#include <linux/sched/nohz.h>
|
||||
#include <linux/sched/rseq_api.h>
|
||||
#include <linux/sched/rt.h>
|
||||
|
||||
#include "sched.h"
|
||||
|
||||
#include <linux/nospec.h>
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/jump_label.h>
|
||||
#include <linux/context_tracking.h>
|
||||
#include <linux/cpuset.h>
|
||||
#include <linux/delayacct.h>
|
||||
#include <linux/init_task.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/ioprio.h>
|
||||
#include <linux/kallsyms.h>
|
||||
#include <linux/kcov.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <linux/llist_api.h>
|
||||
#include <linux/mmu_context.h>
|
||||
#include <linux/mmzone.h>
|
||||
#include <linux/mutex_api.h>
|
||||
#include <linux/nmi.h>
|
||||
#include <linux/nospec.h>
|
||||
#include <linux/perf_event_api.h>
|
||||
#include <linux/profile.h>
|
||||
#include <linux/psi.h>
|
||||
#include <linux/rcuwait_api.h>
|
||||
#include <linux/sched/wake_q.h>
|
||||
#include <linux/scs.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <linux/vtime.h>
|
||||
#include <linux/wait_api.h>
|
||||
#include <linux/workqueue_api.h>
|
||||
|
||||
#ifdef CONFIG_PREEMPT_DYNAMIC
|
||||
# include <linux/entry-common.h>
|
||||
#endif
|
||||
|
||||
#include <uapi/linux/sched/types.h>
|
||||
|
||||
#include <asm/switch_to.h>
|
||||
#include <asm/tlb.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <linux/sched/rseq_api.h>
|
||||
#include <trace/events/sched.h>
|
||||
#undef CREATE_TRACE_POINTS
|
||||
|
||||
#include "sched.h"
|
||||
#include "stats.h"
|
||||
#include "autogroup.h"
|
||||
|
||||
#include "autogroup.h"
|
||||
#include "pelt.h"
|
||||
#include "smp.h"
|
||||
#include "stats.h"
|
||||
|
||||
#include "../workqueue_internal.h"
|
||||
#include "../../fs/io-wq.h"
|
||||
#include "../smpboot.h"
|
||||
|
||||
#include "pelt.h"
|
||||
#include "smp.h"
|
||||
|
||||
/*
|
||||
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
||||
* associated with them) to allow external modules to probe them.
|
||||
|
@ -1,8 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
#include <linux/prctl.h>
|
||||
#include "sched.h"
|
||||
|
||||
/*
|
||||
* A simple wrapper around refcount. An allocated sched_core_cookie's
|
||||
* address is used to compute the cookie of the task.
|
||||
|
@ -1,12 +1,11 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
/*
|
||||
* CPU accounting code for task groups.
|
||||
*
|
||||
* Based on the work by Paul Menage (menage@google.com) and Balbir Singh
|
||||
* (balbir@in.ibm.com).
|
||||
*/
|
||||
#include <asm/irq_regs.h>
|
||||
#include "sched.h"
|
||||
|
||||
/* Time spent by the tasks of the CPU accounting group executing in ... */
|
||||
enum cpuacct_stat_index {
|
||||
|
@ -1,12 +1,11 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* kernel/sched/cpudl.c
|
||||
* kernel/sched/cpudeadline.c
|
||||
*
|
||||
* Global CPU deadline management
|
||||
*
|
||||
* Author: Juri Lelli <j.lelli@sssup.it>
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
static inline int parent(int i)
|
||||
{
|
||||
|
@ -5,9 +5,6 @@
|
||||
* Copyright (C) 2016, Intel Corporation
|
||||
* Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
*/
|
||||
#include <linux/cpufreq.h>
|
||||
|
||||
#include "sched.h"
|
||||
|
||||
DEFINE_PER_CPU(struct update_util_data __rcu *, cpufreq_update_util_data);
|
||||
|
||||
|
@ -6,13 +6,6 @@
|
||||
* Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "sched.h"
|
||||
|
||||
#include <linux/sched/cpufreq.h>
|
||||
#include <trace/events/power.h>
|
||||
|
||||
#define IOWAIT_BOOST_MIN (SCHED_CAPACITY_SCALE / 8)
|
||||
|
||||
struct sugov_tunables {
|
||||
|
@ -22,7 +22,6 @@
|
||||
* worst case complexity of O(min(101, nr_domcpus)), though the scenario that
|
||||
* yields the worst case search is fairly contrived.
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
/*
|
||||
* p->rt_priority p->prio newpri cpupri
|
||||
|
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Simple CPU accounting cgroup controller
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
#ifdef CONFIG_IRQ_TIME_ACCOUNTING
|
||||
|
||||
|
@ -15,8 +15,6 @@
|
||||
* Michael Trimarchi <michael@amarulasolutions.com>,
|
||||
* Fabio Checconi <fchecconi@gmail.com>
|
||||
*/
|
||||
#include "sched.h"
|
||||
#include "pelt.h"
|
||||
|
||||
static inline struct task_struct *dl_task_of(struct sched_dl_entity *dl_se)
|
||||
{
|
||||
|
@ -6,7 +6,6 @@
|
||||
*
|
||||
* Copyright(C) 2007, Red Hat, Inc., Ingo Molnar
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
/*
|
||||
* This allows printing both to /proc/sched_debug and
|
||||
|
@ -20,7 +20,38 @@
|
||||
* Adaptive scheduling granularity, math enhancements by Peter Zijlstra
|
||||
* Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
|
||||
*/
|
||||
#include <linux/energy_model.h>
|
||||
#include <linux/mmap_lock.h>
|
||||
#include <linux/hugetlb_inline.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/mm_api.h>
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/spinlock_api.h>
|
||||
#include <linux/cpumask_api.h>
|
||||
#include <linux/lockdep_api.h>
|
||||
#include <linux/softirq.h>
|
||||
#include <linux/refcount_api.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/sched/clock.h>
|
||||
#include <linux/sched/cond_resched.h>
|
||||
#include <linux/sched/cputime.h>
|
||||
#include <linux/sched/isolation.h>
|
||||
|
||||
#include <linux/cpuidle.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mempolicy.h>
|
||||
#include <linux/mutex_api.h>
|
||||
#include <linux/profile.h>
|
||||
#include <linux/psi.h>
|
||||
#include <linux/ratelimit.h>
|
||||
|
||||
#include <asm/switch_to.h>
|
||||
|
||||
#include <linux/sched/cond_resched.h>
|
||||
|
||||
#include "sched.h"
|
||||
#include "stats.h"
|
||||
#include "autogroup.h"
|
||||
|
||||
/*
|
||||
* Targeted preemption latency for CPU-bound tasks:
|
||||
|
@ -6,9 +6,6 @@
|
||||
* (NOTE: these are not related to SCHED_IDLE batch scheduled
|
||||
* tasks which are handled in sched/fair.c )
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
#include <trace/events/power.h>
|
||||
|
||||
/* Linker adds these: start and end of __cpuidle functions */
|
||||
extern char __cpuidle_text_start[], __cpuidle_text_end[];
|
||||
|
@ -7,7 +7,6 @@
|
||||
* Copyright (C) 2017-2018 SUSE, Frederic Weisbecker
|
||||
*
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
enum hk_flags {
|
||||
HK_FLAG_TIMER = BIT(HK_TYPE_TIMER),
|
||||
|
@ -6,7 +6,6 @@
|
||||
* figure. Its a silly number but people think its important. We go through
|
||||
* great pains to make it work on big machines and tickless kernels.
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
/*
|
||||
* Global load-average calculations
|
||||
|
@ -4,7 +4,6 @@
|
||||
*
|
||||
* membarrier system call
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
/*
|
||||
* For documentation purposes, here are some membarrier ordering
|
||||
|
@ -24,10 +24,6 @@
|
||||
* Author: Vincent Guittot <vincent.guittot@linaro.org>
|
||||
*/
|
||||
|
||||
#include <linux/sched.h>
|
||||
#include "sched.h"
|
||||
#include "pelt.h"
|
||||
|
||||
/*
|
||||
* Approximate:
|
||||
* val * y^n, where y^32 ~= 0.5 (~1 scheduling period)
|
||||
|
@ -137,21 +137,6 @@
|
||||
* sampling of the aggregate task states would be.
|
||||
*/
|
||||
|
||||
#include "../workqueue_internal.h"
|
||||
#include <linux/sched/loadavg.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/seqlock.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/file.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/psi.h>
|
||||
#include "sched.h"
|
||||
|
||||
static int psi_bug __read_mostly;
|
||||
|
||||
DEFINE_STATIC_KEY_FALSE(psi_disabled);
|
||||
|
@ -3,9 +3,6 @@
|
||||
* Real-Time Scheduling Class (mapped to the SCHED_FIFO and SCHED_RR
|
||||
* policies)
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
#include "pelt.h"
|
||||
|
||||
int sched_rr_timeslice = RR_TIMESLICE;
|
||||
int sysctl_sched_rr_timeslice = (MSEC_PER_SEC / HZ) * RR_TIMESLICE;
|
||||
|
@ -2,86 +2,98 @@
|
||||
/*
|
||||
* Scheduler internal types and methods:
|
||||
*/
|
||||
#include <linux/sched.h>
|
||||
#ifndef _KERNEL_SCHED_SCHED_H
|
||||
#define _KERNEL_SCHED_SCHED_H
|
||||
|
||||
#include <linux/sched/affinity.h>
|
||||
#include <linux/sched/autogroup.h>
|
||||
#include <linux/sched/clock.h>
|
||||
#include <linux/sched/coredump.h>
|
||||
#include <linux/sched/cpufreq.h>
|
||||
#include <linux/sched/cputime.h>
|
||||
#include <linux/sched/deadline.h>
|
||||
#include <linux/sched/debug.h>
|
||||
#include <linux/sched/hotplug.h>
|
||||
#include <linux/sched/idle.h>
|
||||
#include <linux/sched/init.h>
|
||||
#include <linux/sched/isolation.h>
|
||||
#include <linux/sched/jobctl.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sched/loadavg.h>
|
||||
#include <linux/sched/mm.h>
|
||||
#include <linux/sched/nohz.h>
|
||||
#include <linux/sched/numa_balancing.h>
|
||||
#include <linux/sched/prio.h>
|
||||
#include <linux/sched/rt.h>
|
||||
#include <linux/sched/rseq_api.h>
|
||||
#include <linux/sched/signal.h>
|
||||
#include <linux/sched/smt.h>
|
||||
#include <linux/sched/stat.h>
|
||||
#include <linux/sched/sysctl.h>
|
||||
#include <linux/sched/task_flags.h>
|
||||
#include <linux/sched/task.h>
|
||||
#include <linux/sched/task_stack.h>
|
||||
#include <linux/sched/topology.h>
|
||||
#include <linux/sched/user.h>
|
||||
#include <linux/sched/wake_q.h>
|
||||
#include <linux/sched/xacct.h>
|
||||
|
||||
#include <uapi/linux/sched/types.h>
|
||||
|
||||
#include <linux/binfmts.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/context_tracking.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/bug.h>
|
||||
#include <linux/capability.h>
|
||||
#include <linux/cgroup_api.h>
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/cpufreq.h>
|
||||
#include <linux/cpuidle.h>
|
||||
#include <linux/cpuset.h>
|
||||
#include <linux/cpumask_api.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/delayacct.h>
|
||||
#include <linux/energy_model.h>
|
||||
#include <linux/init_task.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <linux/file.h>
|
||||
#include <linux/fs_api.h>
|
||||
#include <linux/hrtimer_api.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq_work.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/kref_api.h>
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/membarrier.h>
|
||||
#include <linux/migrate.h>
|
||||
#include <linux/mmu_context.h>
|
||||
#include <linux/nmi.h>
|
||||
#include <linux/ktime_api.h>
|
||||
#include <linux/lockdep_api.h>
|
||||
#include <linux/lockdep.h>
|
||||
#include <linux/minmax.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mutex_api.h>
|
||||
#include <linux/plist.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/prefetch.h>
|
||||
#include <linux/profile.h>
|
||||
#include <linux/psi.h>
|
||||
#include <linux/ratelimit.h>
|
||||
#include <linux/rcupdate_wait.h>
|
||||
#include <linux/security.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/seqlock.h>
|
||||
#include <linux/softirq.h>
|
||||
#include <linux/spinlock_api.h>
|
||||
#include <linux/static_key.h>
|
||||
#include <linux/stop_machine.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/swait.h>
|
||||
#include <linux/syscalls_api.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <linux/task_work.h>
|
||||
#include <linux/tsacct_kern.h>
|
||||
#include <linux/tick.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/u64_stats_sync_api.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/wait_api.h>
|
||||
#include <linux/wait_bit.h>
|
||||
#include <linux/workqueue_api.h>
|
||||
|
||||
#include <asm/tlb.h>
|
||||
#include <trace/events/power.h>
|
||||
#include <trace/events/sched.h>
|
||||
|
||||
#include "../workqueue_internal.h"
|
||||
|
||||
#ifdef CONFIG_CGROUP_SCHED
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/psi.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SCHED_DEBUG
|
||||
# include <linux/static_key.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PARAVIRT
|
||||
# include <asm/paravirt.h>
|
||||
# include <asm/paravirt_api_clock.h>
|
||||
#endif
|
||||
|
||||
#include "cpupri.h"
|
||||
#include "cpudeadline.h"
|
||||
|
||||
#include <trace/events/sched.h>
|
||||
|
||||
#ifdef CONFIG_SCHED_DEBUG
|
||||
# define SCHED_WARN_ON(x) WARN_ONCE(x, #x)
|
||||
# define SCHED_WARN_ON(x) WARN_ONCE(x, #x)
|
||||
#else
|
||||
# define SCHED_WARN_ON(x) ({ (void)(x), 0; })
|
||||
# define SCHED_WARN_ON(x) ({ (void)(x), 0; })
|
||||
#endif
|
||||
|
||||
struct rq;
|
||||
@ -329,9 +341,6 @@ extern int dl_cpu_busy(int cpu, struct task_struct *p);
|
||||
|
||||
#ifdef CONFIG_CGROUP_SCHED
|
||||
|
||||
#include <linux/cgroup.h>
|
||||
#include <linux/psi.h>
|
||||
|
||||
struct cfs_rq;
|
||||
struct rt_rq;
|
||||
|
||||
@ -1832,7 +1841,6 @@ static inline void flush_smp_call_function_from_idle(void) { }
|
||||
#endif
|
||||
|
||||
#include "stats.h"
|
||||
#include "autogroup.h"
|
||||
|
||||
#if defined(CONFIG_SCHED_CORE) && defined(CONFIG_SCHEDSTATS)
|
||||
|
||||
@ -1928,7 +1936,6 @@ static inline void __set_task_cpu(struct task_struct *p, unsigned int cpu)
|
||||
* Tunables that become constants when CONFIG_SCHED_DEBUG is off:
|
||||
*/
|
||||
#ifdef CONFIG_SCHED_DEBUG
|
||||
# include <linux/static_key.h>
|
||||
# define const_debug __read_mostly
|
||||
#else
|
||||
# define const_debug const
|
||||
@ -3086,3 +3093,4 @@ extern int sched_dynamic_mode(const char *str);
|
||||
extern void sched_dynamic_update(int mode);
|
||||
#endif
|
||||
|
||||
#endif /* _KERNEL_SCHED_SCHED_H */
|
||||
|
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* /proc/schedstat implementation
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
void __update_stats_wait_start(struct rq *rq, struct task_struct *p,
|
||||
struct sched_statistics *stats)
|
||||
|
@ -1,4 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _KERNEL_STATS_H
|
||||
#define _KERNEL_STATS_H
|
||||
|
||||
#ifdef CONFIG_SCHEDSTATS
|
||||
|
||||
@ -298,3 +300,5 @@ sched_info_switch(struct rq *rq, struct task_struct *prev, struct task_struct *n
|
||||
# define sched_info_dequeue(rq, t) do { } while (0)
|
||||
# define sched_info_switch(rq, t, next) do { } while (0)
|
||||
#endif /* CONFIG_SCHED_INFO */
|
||||
|
||||
#endif /* _KERNEL_STATS_H */
|
||||
|
@ -7,7 +7,6 @@
|
||||
*
|
||||
* See kernel/stop_machine.c
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static int
|
||||
|
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* <linux/swait.h> (simple wait queues ) implementation:
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
void __init_swait_queue_head(struct swait_queue_head *q, const char *name,
|
||||
struct lock_class_key *key)
|
||||
|
@ -2,7 +2,6 @@
|
||||
/*
|
||||
* Scheduler topology setup/handling methods
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
DEFINE_MUTEX(sched_domains_mutex);
|
||||
|
||||
|
@ -4,7 +4,6 @@
|
||||
*
|
||||
* (C) 2004 Nadia Yvette Chambers, Oracle
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
void __init_waitqueue_head(struct wait_queue_head *wq_head, const char *name, struct lock_class_key *key)
|
||||
{
|
||||
|
@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
/*
|
||||
* The implementation of the wait_bit*() and related waiting APIs:
|
||||
*/
|
||||
#include "sched.h"
|
||||
|
||||
#define WAIT_TABLE_BITS 8
|
||||
#define WAIT_TABLE_SIZE (1 << WAIT_TABLE_BITS)
|
||||
|
Loading…
Reference in New Issue
Block a user