aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/hw_breakpoint.h
diff options
context:
space:
mode:
authorMichal Marek <mmarek@suse.cz>2010-10-27 18:15:57 -0400
committerMichal Marek <mmarek@suse.cz>2010-10-27 18:15:57 -0400
commitb74b953b998bcc2db91b694446f3a2619ec32de6 (patch)
tree6ce24caabd730f6ae9287ed0676ec32e6ff31e9d /include/linux/hw_breakpoint.h
parentabb438526201c6a79949ad45375c051b6681c253 (diff)
parentf6f94e2ab1b33f0082ac22d71f66385a60d8157f (diff)
Merge commit 'v2.6.36' into kbuild/misc
Update to be able to fix a recent change to scripts/basic/docproc.c (commit eda603f).
Diffstat (limited to 'include/linux/hw_breakpoint.h')
-rw-r--r--include/linux/hw_breakpoint.h37
1 files changed, 29 insertions, 8 deletions
diff --git a/include/linux/hw_breakpoint.h b/include/linux/hw_breakpoint.h
index 41235c93e4e9..a2d6ea49ec56 100644
--- a/include/linux/hw_breakpoint.h
+++ b/include/linux/hw_breakpoint.h
@@ -9,9 +9,22 @@ enum {
9}; 9};
10 10
11enum { 11enum {
12 HW_BREAKPOINT_R = 1, 12 HW_BREAKPOINT_EMPTY = 0,
13 HW_BREAKPOINT_W = 2, 13 HW_BREAKPOINT_R = 1,
14 HW_BREAKPOINT_X = 4, 14 HW_BREAKPOINT_W = 2,
15 HW_BREAKPOINT_RW = HW_BREAKPOINT_R | HW_BREAKPOINT_W,
16 HW_BREAKPOINT_X = 4,
17 HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
18};
19
20enum bp_type_idx {
21 TYPE_INST = 0,
22#ifdef CONFIG_HAVE_MIXED_BREAKPOINTS_REGS
23 TYPE_DATA = 0,
24#else
25 TYPE_DATA = 1,
26#endif
27 TYPE_MAX
15}; 28};
16 29
17#ifdef __KERNEL__ 30#ifdef __KERNEL__
@@ -34,6 +47,12 @@ static inline void hw_breakpoint_init(struct perf_event_attr *attr)
34 attr->sample_period = 1; 47 attr->sample_period = 1;
35} 48}
36 49
50static inline void ptrace_breakpoint_init(struct perf_event_attr *attr)
51{
52 hw_breakpoint_init(attr);
53 attr->exclude_kernel = 1;
54}
55
37static inline unsigned long hw_breakpoint_addr(struct perf_event *bp) 56static inline unsigned long hw_breakpoint_addr(struct perf_event *bp)
38{ 57{
39 return bp->attr.bp_addr; 58 return bp->attr.bp_addr;
@@ -44,7 +63,7 @@ static inline int hw_breakpoint_type(struct perf_event *bp)
44 return bp->attr.bp_type; 63 return bp->attr.bp_type;
45} 64}
46 65
47static inline int hw_breakpoint_len(struct perf_event *bp) 66static inline unsigned long hw_breakpoint_len(struct perf_event *bp)
48{ 67{
49 return bp->attr.bp_len; 68 return bp->attr.bp_len;
50} 69}
@@ -66,15 +85,17 @@ register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr,
66 perf_overflow_handler_t triggered, 85 perf_overflow_handler_t triggered,
67 int cpu); 86 int cpu);
68 87
69extern struct perf_event ** 88extern struct perf_event * __percpu *
70register_wide_hw_breakpoint(struct perf_event_attr *attr, 89register_wide_hw_breakpoint(struct perf_event_attr *attr,
71 perf_overflow_handler_t triggered); 90 perf_overflow_handler_t triggered);
72 91
73extern int register_perf_hw_breakpoint(struct perf_event *bp); 92extern int register_perf_hw_breakpoint(struct perf_event *bp);
74extern int __register_perf_hw_breakpoint(struct perf_event *bp); 93extern int __register_perf_hw_breakpoint(struct perf_event *bp);
75extern void unregister_hw_breakpoint(struct perf_event *bp); 94extern void unregister_hw_breakpoint(struct perf_event *bp);
76extern void unregister_wide_hw_breakpoint(struct perf_event **cpu_events); 95extern void unregister_wide_hw_breakpoint(struct perf_event * __percpu *cpu_events);
77 96
97extern int dbg_reserve_bp_slot(struct perf_event *bp);
98extern int dbg_release_bp_slot(struct perf_event *bp);
78extern int reserve_bp_slot(struct perf_event *bp); 99extern int reserve_bp_slot(struct perf_event *bp);
79extern void release_bp_slot(struct perf_event *bp); 100extern void release_bp_slot(struct perf_event *bp);
80 101
@@ -98,7 +119,7 @@ static inline struct perf_event *
98register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr, 119register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr,
99 perf_overflow_handler_t triggered, 120 perf_overflow_handler_t triggered,
100 int cpu) { return NULL; } 121 int cpu) { return NULL; }
101static inline struct perf_event ** 122static inline struct perf_event * __percpu *
102register_wide_hw_breakpoint(struct perf_event_attr *attr, 123register_wide_hw_breakpoint(struct perf_event_attr *attr,
103 perf_overflow_handler_t triggered) { return NULL; } 124 perf_overflow_handler_t triggered) { return NULL; }
104static inline int 125static inline int
@@ -107,7 +128,7 @@ static inline int
107__register_perf_hw_breakpoint(struct perf_event *bp) { return -ENOSYS; } 128__register_perf_hw_breakpoint(struct perf_event *bp) { return -ENOSYS; }
108static inline void unregister_hw_breakpoint(struct perf_event *bp) { } 129static inline void unregister_hw_breakpoint(struct perf_event *bp) { }
109static inline void 130static inline void
110unregister_wide_hw_breakpoint(struct perf_event **cpu_events) { } 131unregister_wide_hw_breakpoint(struct perf_event * __percpu *cpu_events) { }
111static inline int 132static inline int
112reserve_bp_slot(struct perf_event *bp) {return -ENOSYS; } 133reserve_bp_slot(struct perf_event *bp) {return -ENOSYS; }
113static inline void release_bp_slot(struct perf_event *bp) { } 134static inline void release_bp_slot(struct perf_event *bp) { }