1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_SCHED_STAT_H
3#define _LINUX_SCHED_STAT_H
4
5#include <linux/percpu.h>
6
7/*
8 * Various counters maintained by the scheduler and fork(),
9 * exposed via /proc, sys.c or used by drivers via these APIs.
10 *
11 * ( Note that all these values are acquired without locking,
12 * so they can only be relied on in narrow circumstances. )
13 */
14
15extern unsigned long total_forks;
16extern int nr_threads;
17DECLARE_PER_CPU(unsigned long, process_counts);
18extern int nr_processes(void);
19extern unsigned long nr_running(void);
20extern bool single_task_running(void);
21extern unsigned long nr_iowait(void);
22extern unsigned long nr_iowait_cpu(int cpu);
23
24static inline int sched_info_on(void)
25{
26#ifdef CONFIG_SCHEDSTATS
27 return 1;
28#elif defined(CONFIG_TASK_DELAY_ACCT)
29 extern int delayacct_on;
30 return delayacct_on;
31#else
32 return 0;
33#endif
34}
35
36#ifdef CONFIG_SCHEDSTATS
37void force_schedstat_enabled(void);
38#endif
39
40#endif /* _LINUX_SCHED_STAT_H */
41