perf tools: allow user to specify hardware breakpoint bp_len
Currently bp_len is given a default value of 4. Allow user to override it: $ perf stat -e mem:0x1000/8 ^ bp_len If no value is given, it will default to 4 as it did before. Signed-off-by: Jacob Shin <jacob.w.shin@gmail.com> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Reviewed-by: Oleg Nesterov <oleg@redhat.com> Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Cc: Ingo Molnar <mingo@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: xiakaixu <xiakaixu@huawei.com> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
This commit is contained in:
committed by
Frederic Weisbecker
parent
d6d55f0b9d
commit
3741eb9f8c
@@ -526,7 +526,7 @@ do { \
|
||||
}
|
||||
|
||||
int parse_events_add_breakpoint(struct list_head *list, int *idx,
|
||||
void *ptr, char *type)
|
||||
void *ptr, char *type, u64 len)
|
||||
{
|
||||
struct perf_event_attr attr;
|
||||
|
||||
@@ -536,14 +536,15 @@ int parse_events_add_breakpoint(struct list_head *list, int *idx,
|
||||
if (parse_breakpoint_type(type, &attr))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* We should find a nice way to override the access length
|
||||
* Provide some defaults for now
|
||||
*/
|
||||
if (attr.bp_type == HW_BREAKPOINT_X)
|
||||
attr.bp_len = sizeof(long);
|
||||
else
|
||||
attr.bp_len = HW_BREAKPOINT_LEN_4;
|
||||
/* Provide some defaults if len is not specified */
|
||||
if (!len) {
|
||||
if (attr.bp_type == HW_BREAKPOINT_X)
|
||||
len = sizeof(long);
|
||||
else
|
||||
len = HW_BREAKPOINT_LEN_4;
|
||||
}
|
||||
|
||||
attr.bp_len = len;
|
||||
|
||||
attr.type = PERF_TYPE_BREAKPOINT;
|
||||
attr.sample_period = 1;
|
||||
@@ -1364,7 +1365,7 @@ void print_events(const char *event_glob, bool name_only)
|
||||
printf("\n");
|
||||
|
||||
printf(" %-50s [%s]\n",
|
||||
"mem:<addr>[:access]",
|
||||
"mem:<addr>[/len][:access]",
|
||||
event_type_descriptors[PERF_TYPE_BREAKPOINT]);
|
||||
printf("\n");
|
||||
}
|
||||
|
Reference in New Issue
Block a user