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
x86
include
asm
hw_breakpoint.h
Go to the documentation of this file.
1
#ifndef _I386_HW_BREAKPOINT_H
2
#define _I386_HW_BREAKPOINT_H
3
4
#ifdef __KERNEL__
5
#define __ARCH_HW_BREAKPOINT_H
6
7
/*
8
* The name should probably be something dealt in
9
* a higher level. While dealing with the user
10
* (display/resolving)
11
*/
12
struct
arch_hw_breakpoint
{
13
unsigned
long
address
;
14
u8
len
;
15
u8
type
;
16
};
17
18
#include <
linux/kdebug.h
>
19
#include <
linux/percpu.h
>
20
#include <linux/list.h>
21
22
/* Available HW breakpoint length encodings */
23
#define X86_BREAKPOINT_LEN_X 0x40
24
#define X86_BREAKPOINT_LEN_1 0x40
25
#define X86_BREAKPOINT_LEN_2 0x44
26
#define X86_BREAKPOINT_LEN_4 0x4c
27
28
#ifdef CONFIG_X86_64
29
#define X86_BREAKPOINT_LEN_8 0x48
30
#endif
31
32
/* Available HW breakpoint type encodings */
33
34
/* trigger on instruction execute */
35
#define X86_BREAKPOINT_EXECUTE 0x80
36
/* trigger on memory write */
37
#define X86_BREAKPOINT_WRITE 0x81
38
/* trigger on memory read or write */
39
#define X86_BREAKPOINT_RW 0x83
40
41
/* Total number of available HW breakpoint registers */
42
#define HBP_NUM 4
43
44
static
inline
int
hw_breakpoint_slots
(
int
type
)
45
{
46
return
HBP_NUM
;
47
}
48
49
struct
perf_event
;
50
struct
pmu
;
51
52
extern
int
arch_check_bp_in_kernelspace
(
struct
perf_event
*bp);
53
extern
int
arch_validate_hwbkpt_settings
(
struct
perf_event
*bp);
54
extern
int
hw_breakpoint_exceptions_notify
(
struct
notifier_block
*
unused
,
55
unsigned
long
val
,
void
*
data
);
56
57
58
int
arch_install_hw_breakpoint
(
struct
perf_event
*bp);
59
void
arch_uninstall_hw_breakpoint
(
struct
perf_event
*bp);
60
void
hw_breakpoint_pmu_read
(
struct
perf_event
*bp);
61
void
hw_breakpoint_pmu_unthrottle(
struct
perf_event
*bp);
62
63
extern
void
64
arch_fill_perf_breakpoint
(
struct
perf_event
*bp);
65
66
unsigned
long
encode_dr7
(
int
drnum,
unsigned
int
len,
unsigned
int
type
);
67
int
decode_dr7
(
unsigned
long
dr7,
int
bpnum,
unsigned
*len,
unsigned
*
type
);
68
69
extern
int
arch_bp_generic_fields
(
int
x86_len,
int
x86_type,
70
int
*gen_len,
int
*gen_type);
71
72
extern
struct
pmu
perf_ops_bp
;
73
74
#endif
/* __KERNEL__ */
75
#endif
/* _I386_HW_BREAKPOINT_H */
76
Generated on Thu Jan 10 2013 12:55:09 for Linux Kernel by
1.8.2