Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
df8106db
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
df8106db
编写于
10月 05, 2008
作者:
A
Alexey Dobriyan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
proc: move /proc/stat to fs/proc/stat.c
Signed-off-by:
N
Alexey Dobriyan
<
adobriyan@gmail.com
>
上级
f500975a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
154 addition
and
134 deletion
+154
-134
fs/proc/Makefile
fs/proc/Makefile
+1
-0
fs/proc/proc_misc.c
fs/proc/proc_misc.c
+0
-134
fs/proc/stat.c
fs/proc/stat.c
+153
-0
未找到文件。
fs/proc/Makefile
浏览文件 @
df8106db
...
...
@@ -14,6 +14,7 @@ proc-y += cpuinfo.o
proc-y
+=
devices.o
proc-y
+=
loadavg.o
proc-y
+=
meminfo.o
proc-y
+=
stat.o
proc-y
+=
uptime.o
proc-y
+=
version.o
proc-$(CONFIG_PROC_SYSCTL)
+=
proc_sysctl.o
...
...
fs/proc/proc_misc.c
浏览文件 @
df8106db
...
...
@@ -198,139 +198,6 @@ static const struct file_operations proc_vmalloc_operations = {
};
#endif
#ifndef arch_irq_stat_cpu
#define arch_irq_stat_cpu(cpu) 0
#endif
#ifndef arch_irq_stat
#define arch_irq_stat() 0
#endif
static
int
show_stat
(
struct
seq_file
*
p
,
void
*
v
)
{
int
i
,
j
;
unsigned
long
jif
;
cputime64_t
user
,
nice
,
system
,
idle
,
iowait
,
irq
,
softirq
,
steal
;
cputime64_t
guest
;
u64
sum
=
0
;
struct
timespec
boottime
;
unsigned
int
per_irq_sum
;
user
=
nice
=
system
=
idle
=
iowait
=
irq
=
softirq
=
steal
=
cputime64_zero
;
guest
=
cputime64_zero
;
getboottime
(
&
boottime
);
jif
=
boottime
.
tv_sec
;
for_each_possible_cpu
(
i
)
{
user
=
cputime64_add
(
user
,
kstat_cpu
(
i
).
cpustat
.
user
);
nice
=
cputime64_add
(
nice
,
kstat_cpu
(
i
).
cpustat
.
nice
);
system
=
cputime64_add
(
system
,
kstat_cpu
(
i
).
cpustat
.
system
);
idle
=
cputime64_add
(
idle
,
kstat_cpu
(
i
).
cpustat
.
idle
);
iowait
=
cputime64_add
(
iowait
,
kstat_cpu
(
i
).
cpustat
.
iowait
);
irq
=
cputime64_add
(
irq
,
kstat_cpu
(
i
).
cpustat
.
irq
);
softirq
=
cputime64_add
(
softirq
,
kstat_cpu
(
i
).
cpustat
.
softirq
);
steal
=
cputime64_add
(
steal
,
kstat_cpu
(
i
).
cpustat
.
steal
);
guest
=
cputime64_add
(
guest
,
kstat_cpu
(
i
).
cpustat
.
guest
);
for_each_irq_nr
(
j
)
sum
+=
kstat_irqs_cpu
(
j
,
i
);
sum
+=
arch_irq_stat_cpu
(
i
);
}
sum
+=
arch_irq_stat
();
seq_printf
(
p
,
"cpu %llu %llu %llu %llu %llu %llu %llu %llu %llu
\n
"
,
(
unsigned
long
long
)
cputime64_to_clock_t
(
user
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
nice
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
system
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
idle
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
iowait
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
irq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
softirq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
steal
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
guest
));
for_each_online_cpu
(
i
)
{
/* Copy values here to work around gcc-2.95.3, gcc-2.96 */
user
=
kstat_cpu
(
i
).
cpustat
.
user
;
nice
=
kstat_cpu
(
i
).
cpustat
.
nice
;
system
=
kstat_cpu
(
i
).
cpustat
.
system
;
idle
=
kstat_cpu
(
i
).
cpustat
.
idle
;
iowait
=
kstat_cpu
(
i
).
cpustat
.
iowait
;
irq
=
kstat_cpu
(
i
).
cpustat
.
irq
;
softirq
=
kstat_cpu
(
i
).
cpustat
.
softirq
;
steal
=
kstat_cpu
(
i
).
cpustat
.
steal
;
guest
=
kstat_cpu
(
i
).
cpustat
.
guest
;
seq_printf
(
p
,
"cpu%d %llu %llu %llu %llu %llu %llu %llu %llu %llu
\n
"
,
i
,
(
unsigned
long
long
)
cputime64_to_clock_t
(
user
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
nice
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
system
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
idle
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
iowait
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
irq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
softirq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
steal
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
guest
));
}
seq_printf
(
p
,
"intr %llu"
,
(
unsigned
long
long
)
sum
);
/* sum again ? it could be updated? */
for_each_irq_nr
(
j
)
{
per_irq_sum
=
0
;
for_each_possible_cpu
(
i
)
per_irq_sum
+=
kstat_irqs_cpu
(
j
,
i
);
seq_printf
(
p
,
" %u"
,
per_irq_sum
);
}
seq_printf
(
p
,
"
\n
ctxt %llu
\n
"
"btime %lu
\n
"
"processes %lu
\n
"
"procs_running %lu
\n
"
"procs_blocked %lu
\n
"
,
nr_context_switches
(),
(
unsigned
long
)
jif
,
total_forks
,
nr_running
(),
nr_iowait
());
return
0
;
}
static
int
stat_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
unsigned
size
=
4096
*
(
1
+
num_possible_cpus
()
/
32
);
char
*
buf
;
struct
seq_file
*
m
;
int
res
;
/* don't ask for more than the kmalloc() max size, currently 128 KB */
if
(
size
>
128
*
1024
)
size
=
128
*
1024
;
buf
=
kmalloc
(
size
,
GFP_KERNEL
);
if
(
!
buf
)
return
-
ENOMEM
;
res
=
single_open
(
file
,
show_stat
,
NULL
);
if
(
!
res
)
{
m
=
file
->
private_data
;
m
->
buf
=
buf
;
m
->
size
=
size
;
}
else
kfree
(
buf
);
return
res
;
}
static
const
struct
file_operations
proc_stat_operations
=
{
.
open
=
stat_open
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
release
=
single_release
,
};
/*
* /proc/interrupts
*/
...
...
@@ -508,7 +375,6 @@ void __init proc_misc_init(void)
proc_symlink
(
"mounts"
,
NULL
,
"self/mounts"
);
/* And now for trickier ones */
proc_create
(
"stat"
,
0
,
NULL
,
&
proc_stat_operations
);
proc_create
(
"interrupts"
,
0
,
NULL
,
&
proc_interrupts_operations
);
#ifdef CONFIG_SLABINFO
proc_create
(
"slabinfo"
,
S_IWUSR
|
S_IRUGO
,
NULL
,
&
proc_slabinfo_operations
);
...
...
fs/proc/stat.c
0 → 100644
浏览文件 @
df8106db
#include <linux/cpumask.h>
#include <linux/fs.h>
#include <linux/gfp.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/kernel_stat.h>
#include <linux/proc_fs.h>
#include <linux/sched.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
#include <linux/time.h>
#include <asm/cputime.h>
#ifndef arch_irq_stat_cpu
#define arch_irq_stat_cpu(cpu) 0
#endif
#ifndef arch_irq_stat
#define arch_irq_stat() 0
#endif
static
int
show_stat
(
struct
seq_file
*
p
,
void
*
v
)
{
int
i
,
j
;
unsigned
long
jif
;
cputime64_t
user
,
nice
,
system
,
idle
,
iowait
,
irq
,
softirq
,
steal
;
cputime64_t
guest
;
u64
sum
=
0
;
struct
timespec
boottime
;
unsigned
int
per_irq_sum
;
user
=
nice
=
system
=
idle
=
iowait
=
irq
=
softirq
=
steal
=
cputime64_zero
;
guest
=
cputime64_zero
;
getboottime
(
&
boottime
);
jif
=
boottime
.
tv_sec
;
for_each_possible_cpu
(
i
)
{
user
=
cputime64_add
(
user
,
kstat_cpu
(
i
).
cpustat
.
user
);
nice
=
cputime64_add
(
nice
,
kstat_cpu
(
i
).
cpustat
.
nice
);
system
=
cputime64_add
(
system
,
kstat_cpu
(
i
).
cpustat
.
system
);
idle
=
cputime64_add
(
idle
,
kstat_cpu
(
i
).
cpustat
.
idle
);
iowait
=
cputime64_add
(
iowait
,
kstat_cpu
(
i
).
cpustat
.
iowait
);
irq
=
cputime64_add
(
irq
,
kstat_cpu
(
i
).
cpustat
.
irq
);
softirq
=
cputime64_add
(
softirq
,
kstat_cpu
(
i
).
cpustat
.
softirq
);
steal
=
cputime64_add
(
steal
,
kstat_cpu
(
i
).
cpustat
.
steal
);
guest
=
cputime64_add
(
guest
,
kstat_cpu
(
i
).
cpustat
.
guest
);
for_each_irq_nr
(
j
)
sum
+=
kstat_irqs_cpu
(
j
,
i
);
sum
+=
arch_irq_stat_cpu
(
i
);
}
sum
+=
arch_irq_stat
();
seq_printf
(
p
,
"cpu %llu %llu %llu %llu %llu %llu %llu %llu %llu
\n
"
,
(
unsigned
long
long
)
cputime64_to_clock_t
(
user
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
nice
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
system
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
idle
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
iowait
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
irq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
softirq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
steal
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
guest
));
for_each_online_cpu
(
i
)
{
/* Copy values here to work around gcc-2.95.3, gcc-2.96 */
user
=
kstat_cpu
(
i
).
cpustat
.
user
;
nice
=
kstat_cpu
(
i
).
cpustat
.
nice
;
system
=
kstat_cpu
(
i
).
cpustat
.
system
;
idle
=
kstat_cpu
(
i
).
cpustat
.
idle
;
iowait
=
kstat_cpu
(
i
).
cpustat
.
iowait
;
irq
=
kstat_cpu
(
i
).
cpustat
.
irq
;
softirq
=
kstat_cpu
(
i
).
cpustat
.
softirq
;
steal
=
kstat_cpu
(
i
).
cpustat
.
steal
;
guest
=
kstat_cpu
(
i
).
cpustat
.
guest
;
seq_printf
(
p
,
"cpu%d %llu %llu %llu %llu %llu %llu %llu %llu %llu
\n
"
,
i
,
(
unsigned
long
long
)
cputime64_to_clock_t
(
user
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
nice
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
system
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
idle
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
iowait
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
irq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
softirq
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
steal
),
(
unsigned
long
long
)
cputime64_to_clock_t
(
guest
));
}
seq_printf
(
p
,
"intr %llu"
,
(
unsigned
long
long
)
sum
);
/* sum again ? it could be updated? */
for_each_irq_nr
(
j
)
{
per_irq_sum
=
0
;
for_each_possible_cpu
(
i
)
per_irq_sum
+=
kstat_irqs_cpu
(
j
,
i
);
seq_printf
(
p
,
" %u"
,
per_irq_sum
);
}
seq_printf
(
p
,
"
\n
ctxt %llu
\n
"
"btime %lu
\n
"
"processes %lu
\n
"
"procs_running %lu
\n
"
"procs_blocked %lu
\n
"
,
nr_context_switches
(),
(
unsigned
long
)
jif
,
total_forks
,
nr_running
(),
nr_iowait
());
return
0
;
}
static
int
stat_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
unsigned
size
=
4096
*
(
1
+
num_possible_cpus
()
/
32
);
char
*
buf
;
struct
seq_file
*
m
;
int
res
;
/* don't ask for more than the kmalloc() max size, currently 128 KB */
if
(
size
>
128
*
1024
)
size
=
128
*
1024
;
buf
=
kmalloc
(
size
,
GFP_KERNEL
);
if
(
!
buf
)
return
-
ENOMEM
;
res
=
single_open
(
file
,
show_stat
,
NULL
);
if
(
!
res
)
{
m
=
file
->
private_data
;
m
->
buf
=
buf
;
m
->
size
=
size
;
}
else
kfree
(
buf
);
return
res
;
}
static
const
struct
file_operations
proc_stat_operations
=
{
.
open
=
stat_open
,
.
read
=
seq_read
,
.
llseek
=
seq_lseek
,
.
release
=
single_release
,
};
static
int
__init
proc_stat_init
(
void
)
{
proc_create
(
"stat"
,
0
,
NULL
,
&
proc_stat_operations
);
return
0
;
}
module_init
(
proc_stat_init
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录