Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
oprofile
oprofile_stats.c
Go to the documentation of this file.
1
10
#include <
linux/oprofile.h
>
11
#include <
linux/smp.h
>
12
#include <
linux/cpumask.h
>
13
#include <
linux/threads.h
>
14
15
#include "
oprofile_stats.h
"
16
#include "
cpu_buffer.h
"
17
18
struct
oprofile_stat_struct
oprofile_stats
;
19
20
void
oprofile_reset_stats
(
void
)
21
{
22
struct
oprofile_cpu_buffer
*cpu_buf;
23
int
i
;
24
25
for_each_possible_cpu
(i) {
26
cpu_buf = &
per_cpu
(op_cpu_buffer, i);
27
cpu_buf->
sample_received
= 0;
28
cpu_buf->
sample_lost_overflow
= 0;
29
cpu_buf->
backtrace_aborted
= 0;
30
cpu_buf->
sample_invalid_eip
= 0;
31
}
32
33
atomic_set
(&
oprofile_stats
.sample_lost_no_mm, 0);
34
atomic_set
(&
oprofile_stats
.sample_lost_no_mapping, 0);
35
atomic_set
(&
oprofile_stats
.event_lost_overflow, 0);
36
atomic_set
(&
oprofile_stats
.bt_lost_no_mapping, 0);
37
atomic_set
(&
oprofile_stats
.multiplex_counter, 0);
38
}
39
40
41
void
oprofile_create_stats_files
(
struct
super_block
*
sb
,
struct
dentry
*root)
42
{
43
struct
oprofile_cpu_buffer
*cpu_buf;
44
struct
dentry
*cpudir;
45
struct
dentry
*
dir
;
46
char
buf
[10];
47
int
i
;
48
49
dir =
oprofilefs_mkdir
(sb, root,
"stats"
);
50
if
(!dir)
51
return
;
52
53
for_each_possible_cpu
(i) {
54
cpu_buf = &
per_cpu
(op_cpu_buffer, i);
55
snprintf
(buf, 10,
"cpu%d"
, i);
56
cpudir =
oprofilefs_mkdir
(sb, dir, buf);
57
58
/* Strictly speaking access to these ulongs is racy,
59
* but we can't simply lock them, and they are
60
* informational only.
61
*/
62
oprofilefs_create_ro_ulong
(sb, cpudir,
"sample_received"
,
63
&cpu_buf->
sample_received
);
64
oprofilefs_create_ro_ulong
(sb, cpudir,
"sample_lost_overflow"
,
65
&cpu_buf->
sample_lost_overflow
);
66
oprofilefs_create_ro_ulong
(sb, cpudir,
"backtrace_aborted"
,
67
&cpu_buf->
backtrace_aborted
);
68
oprofilefs_create_ro_ulong
(sb, cpudir,
"sample_invalid_eip"
,
69
&cpu_buf->
sample_invalid_eip
);
70
}
71
72
oprofilefs_create_ro_atomic
(sb, dir,
"sample_lost_no_mm"
,
73
&
oprofile_stats
.sample_lost_no_mm);
74
oprofilefs_create_ro_atomic
(sb, dir,
"sample_lost_no_mapping"
,
75
&
oprofile_stats
.sample_lost_no_mapping);
76
oprofilefs_create_ro_atomic
(sb, dir,
"event_lost_overflow"
,
77
&
oprofile_stats
.event_lost_overflow);
78
oprofilefs_create_ro_atomic
(sb, dir,
"bt_lost_no_mapping"
,
79
&
oprofile_stats
.bt_lost_no_mapping);
80
#ifdef CONFIG_OPROFILE_EVENT_MULTIPLEX
81
oprofilefs_create_ro_atomic
(sb, dir,
"multiplex_counter"
,
82
&
oprofile_stats
.multiplex_counter);
83
#endif
84
}
Generated on Thu Jan 10 2013 14:13:39 for Linux Kernel by
1.8.2