Release 4.12 include/linux/hw_breakpoint.h
#ifndef _LINUX_HW_BREAKPOINT_H
#define _LINUX_HW_BREAKPOINT_H
#include <linux/perf_event.h>
#include <uapi/linux/hw_breakpoint.h>
#ifdef CONFIG_HAVE_HW_BREAKPOINT
extern int __init init_hw_breakpoint(void);
static inline void hw_breakpoint_init(struct perf_event_attr *attr)
{
memset(attr, 0, sizeof(*attr));
attr->type = PERF_TYPE_BREAKPOINT;
attr->size = sizeof(*attr);
/*
* As it's for in-kernel or ptrace use, we want it to be pinned
* and to call its callback every hits.
*/
attr->pinned = 1;
attr->sample_period = 1;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 54 | 100.00% | 3 | 100.00% |
Total | 54 | 100.00% | 3 | 100.00% |
static inline void ptrace_breakpoint_init(struct perf_event_attr *attr)
{
hw_breakpoint_init(attr);
attr->exclude_kernel = 1;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 23 | 100.00% | 1 | 100.00% |
Total | 23 | 100.00% | 1 | 100.00% |
static inline unsigned long hw_breakpoint_addr(struct perf_event *bp)
{
return bp->attr.bp_addr;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 19 | 95.00% | 1 | 50.00% |
K.Prasad | 1 | 5.00% | 1 | 50.00% |
Total | 20 | 100.00% | 2 | 100.00% |
static inline int hw_breakpoint_type(struct perf_event *bp)
{
return bp->attr.bp_type;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 18 | 94.74% | 1 | 50.00% |
K.Prasad | 1 | 5.26% | 1 | 50.00% |
Total | 19 | 100.00% | 2 | 100.00% |
static inline unsigned long hw_breakpoint_len(struct perf_event *bp)
{
return bp->attr.bp_len;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 16 | 80.00% | 1 | 33.33% |
Mahesh Salgaonkar | 2 | 10.00% | 1 | 33.33% |
K.Prasad | 2 | 10.00% | 1 | 33.33% |
Total | 20 | 100.00% | 3 | 100.00% |
extern struct perf_event *
register_user_hw_breakpoint(struct perf_event_attr *attr,
perf_overflow_handler_t triggered,
void *context,
struct task_struct *tsk);
/* FIXME: only change from the attr, and don't unregister */
extern int
modify_user_hw_breakpoint(struct perf_event *bp, struct perf_event_attr *attr);
/*
* Kernel breakpoints are not associated with any particular thread.
*/
extern struct perf_event *
register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr,
perf_overflow_handler_t triggered,
void *context,
int cpu);
extern struct perf_event * __percpu *
register_wide_hw_breakpoint(struct perf_event_attr *attr,
perf_overflow_handler_t triggered,
void *context);
extern int register_perf_hw_breakpoint(struct perf_event *bp);
extern int __register_perf_hw_breakpoint(struct perf_event *bp);
extern void unregister_hw_breakpoint(struct perf_event *bp);
extern void unregister_wide_hw_breakpoint(struct perf_event * __percpu *cpu_events);
extern int dbg_reserve_bp_slot(struct perf_event *bp);
extern int dbg_release_bp_slot(struct perf_event *bp);
extern int reserve_bp_slot(struct perf_event *bp);
extern void release_bp_slot(struct perf_event *bp);
extern void flush_ptrace_hw_breakpoint(struct task_struct *tsk);
static inline struct arch_hw_breakpoint *counter_arch_bp(struct perf_event *bp)
{
return &bp->hw.info;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 22 | 100.00% | 1 | 100.00% |
Total | 22 | 100.00% | 1 | 100.00% |
#else /* !CONFIG_HAVE_HW_BREAKPOINT */
static inline int __init init_hw_breakpoint(void) { return 0; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Jason Wessel | 13 | 100.00% | 1 | 100.00% |
Total | 13 | 100.00% | 1 | 100.00% |
static inline struct perf_event *
register_user_hw_breakpoint(struct perf_event_attr *attr,
perf_overflow_handler_t triggered,
void *context,
struct task_struct *tsk) { return NULL; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 25 | 86.21% | 3 | 75.00% |
Avi Kivity | 4 | 13.79% | 1 | 25.00% |
Total | 29 | 100.00% | 4 | 100.00% |
static inline int
modify_user_hw_breakpoint(struct perf_event *bp,
struct perf_event_attr *attr) { return -ENOSYS; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 21 | 100.00% | 4 | 100.00% |
Total | 21 | 100.00% | 4 | 100.00% |
static inline struct perf_event *
register_wide_hw_breakpoint_cpu(struct perf_event_attr *attr,
perf_overflow_handler_t triggered,
void *context,
int cpu) { return NULL; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 23 | 85.19% | 3 | 75.00% |
Avi Kivity | 4 | 14.81% | 1 | 25.00% |
Total | 27 | 100.00% | 4 | 100.00% |
static inline struct perf_event * __percpu *
register_wide_hw_breakpoint(struct perf_event_attr *attr,
perf_overflow_handler_t triggered,
void *context) { return NULL; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 21 | 80.77% | 3 | 60.00% |
Avi Kivity | 4 | 15.38% | 1 | 20.00% |
Tejun Heo | 1 | 3.85% | 1 | 20.00% |
Total | 26 | 100.00% | 5 | 100.00% |
static inline int
register_perf_hw_breakpoint(struct perf_event *bp) { return -ENOSYS; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 16 | 100.00% | 1 | 100.00% |
Total | 16 | 100.00% | 1 | 100.00% |
static inline int
__register_perf_hw_breakpoint(struct perf_event *bp) { return -ENOSYS; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 15 | 93.75% | 1 | 50.00% |
K.Prasad | 1 | 6.25% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
static inline void unregister_hw_breakpoint(struct perf_event *bp) { }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
static inline void
unregister_wide_hw_breakpoint(struct perf_event * __percpu *cpu_events) { }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 12 | 92.31% | 1 | 50.00% |
Tejun Heo | 1 | 7.69% | 1 | 50.00% |
Total | 13 | 100.00% | 2 | 100.00% |
static inline int
reserve_bp_slot(struct perf_event *bp) {return -ENOSYS; }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 16 | 100.00% | 1 | 100.00% |
Total | 16 | 100.00% | 1 | 100.00% |
static inline void release_bp_slot(struct perf_event *bp) { }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
static inline void flush_ptrace_hw_breakpoint(struct task_struct *tsk) { }
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
static inline struct arch_hw_breakpoint *counter_arch_bp(struct perf_event *bp)
{
return NULL;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 17 | 100.00% | 1 | 100.00% |
Total | 17 | 100.00% | 1 | 100.00% |
#endif /* CONFIG_HAVE_HW_BREAKPOINT */
#endif /* _LINUX_HW_BREAKPOINT_H */
Overall Contributors
Person | Tokens | Prop | Commits | CommitProp |
Frédéric Weisbecker | 459 | 77.40% | 12 | 63.16% |
K.Prasad | 60 | 10.12% | 1 | 5.26% |
Jason Wessel | 41 | 6.91% | 2 | 10.53% |
Avi Kivity | 24 | 4.05% | 1 | 5.26% |
Tejun Heo | 4 | 0.67% | 1 | 5.26% |
David Howells | 3 | 0.51% | 1 | 5.26% |
Mahesh Salgaonkar | 2 | 0.34% | 1 | 5.26% |
Total | 593 | 100.00% | 19 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.