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
arch
s390
oprofile
hwsampler.h
Go to the documentation of this file.
1
/*
2
* CPUMF HW sampler functions and internal structures
3
*
4
* Copyright IBM Corp. 2010
5
* Author(s): Heinz Graalfs <
[email protected]
>
6
*/
7
8
#ifndef HWSAMPLER_H_
9
#define HWSAMPLER_H_
10
11
#include <
linux/workqueue.h
>
12
13
struct
hws_qsi_info_block
/* QUERY SAMPLING information block */
14
{
/* Bit(s) */
15
unsigned
int
b0_13
:14;
/* 0-13: zeros */
16
unsigned
int
as
:1;
/* 14: sampling authorisation control*/
17
unsigned
int
b15_21
:7;
/* 15-21: zeros */
18
unsigned
int
es
:1;
/* 22: sampling enable control */
19
unsigned
int
b23_29
:7;
/* 23-29: zeros */
20
unsigned
int
cs
:1;
/* 30: sampling activation control */
21
unsigned
int
:1;
/* 31: reserved */
22
unsigned
int
bsdes
:16;
/* 4-5: size of sampling entry */
23
unsigned
int
:16;
/* 6-7: reserved */
24
unsigned
long
min_sampl_rate
;
/* 8-15: minimum sampling interval */
25
unsigned
long
max_sampl_rate
;
/* 16-23: maximum sampling interval*/
26
unsigned
long
tear
;
/* 24-31: TEAR contents */
27
unsigned
long
dear
;
/* 32-39: DEAR contents */
28
unsigned
int
rsvrd0
;
/* 40-43: reserved */
29
unsigned
int
cpu_speed
;
/* 44-47: CPU speed */
30
unsigned
long
long
rsvrd1
;
/* 48-55: reserved */
31
unsigned
long
long
rsvrd2
;
/* 56-63: reserved */
32
};
33
34
struct
hws_ssctl_request_block
/* SET SAMPLING CONTROLS req block */
35
{
/* bytes 0 - 7 Bit(s) */
36
unsigned
int
s
:1;
/* 0: maximum buffer indicator */
37
unsigned
int
h
:1;
/* 1: part. level reserved for VM use*/
38
unsigned
long
b2_53
:52;
/* 2-53: zeros */
39
unsigned
int
es
:1;
/* 54: sampling enable control */
40
unsigned
int
b55_61
:7;
/* 55-61: - zeros */
41
unsigned
int
cs
:1;
/* 62: sampling activation control */
42
unsigned
int
b63
:1;
/* 63: zero */
43
unsigned
long
interval
;
/* 8-15: sampling interval */
44
unsigned
long
tear
;
/* 16-23: TEAR contents */
45
unsigned
long
dear
;
/* 24-31: DEAR contents */
46
/* 32-63: */
47
unsigned
long
rsvrd1
;
/* reserved */
48
unsigned
long
rsvrd2
;
/* reserved */
49
unsigned
long
rsvrd3
;
/* reserved */
50
unsigned
long
rsvrd4
;
/* reserved */
51
};
52
53
struct
hws_cpu_buffer
{
54
unsigned
long
first_sdbt
;
/* @ of 1st SDB-Table for this CP*/
55
unsigned
long
worker_entry
;
56
unsigned
long
sample_overflow
;
/* taken from SDB ... */
57
struct
hws_qsi_info_block
qsi
;
58
struct
hws_ssctl_request_block
ssctl
;
59
struct
work_struct
worker
;
60
atomic_t
ext_params
;
61
unsigned
long
req_alert
;
62
unsigned
long
loss_of_sample_data
;
63
unsigned
long
invalid_entry_address
;
64
unsigned
long
incorrect_sdbt_entry
;
65
unsigned
long
sample_auth_change_alert
;
66
unsigned
int
finish
:1;
67
unsigned
int
oom
:1;
68
unsigned
int
stop_mode
:1;
69
};
70
71
struct
hws_data_entry
{
72
unsigned
int
def
:16;
/* 0-15 Data Entry Format */
73
unsigned
int
R
:4;
/* 16-19 reserved */
74
unsigned
int
U
:4;
/* 20-23 Number of unique instruct. */
75
unsigned
int
z
:2;
/* zeros */
76
unsigned
int
T
:1;
/* 26 PSW DAT mode */
77
unsigned
int
W
:1;
/* 27 PSW wait state */
78
unsigned
int
P
:1;
/* 28 PSW Problem state */
79
unsigned
int
AS
:2;
/* 29-30 PSW address-space control */
80
unsigned
int
I
:1;
/* 31 entry valid or invalid */
81
unsigned
int
:16;
82
unsigned
int
prim_asn
:16;
/* primary ASN */
83
unsigned
long
long
ia
;
/* Instruction Address */
84
unsigned
long
long
lpp
;
/* Logical-Partition Program Param. */
85
unsigned
long
long
vpp
;
/* Virtual-Machine Program Param. */
86
};
87
88
struct
hws_trailer_entry
{
89
unsigned
int
f
:1;
/* 0 - Block Full Indicator */
90
unsigned
int
a
:1;
/* 1 - Alert request control */
91
unsigned
long
:62;
/* 2 - 63: Reserved */
92
unsigned
long
overflow
;
/* 64 - sample Overflow count */
93
unsigned
long
timestamp
;
/* 16 - time-stamp */
94
unsigned
long
timestamp1
;
/* */
95
unsigned
long
reserved1
;
/* 32 -Reserved */
96
unsigned
long
reserved2
;
/* */
97
unsigned
long
progusage1
;
/* 48 - reserved for programming use */
98
unsigned
long
progusage2
;
/* */
99
};
100
101
int
hwsampler_setup
(
void
);
102
int
hwsampler_shutdown
(
void
);
103
int
hwsampler_allocate
(
unsigned
long
sdbt,
unsigned
long
sdb);
104
int
hwsampler_deallocate
(
void
);
105
unsigned
long
hwsampler_query_min_interval
(
void
);
106
unsigned
long
hwsampler_query_max_interval
(
void
);
107
int
hwsampler_start_all
(
unsigned
long
interval
);
108
int
hwsampler_stop_all
(
void
);
109
int
hwsampler_deactivate
(
unsigned
int
cpu
);
110
int
hwsampler_activate
(
unsigned
int
cpu
);
111
unsigned
long
hwsampler_get_sample_overflow_count
(
unsigned
int
cpu
);
112
113
#endif
/*HWSAMPLER_H_*/
Generated on Thu Jan 10 2013 13:17:03 for Linux Kernel by
1.8.2