|
@@ -379,6 +379,7 @@ static int parse_tracepoint_event(const char **strp,
|
|
struct perf_counter_attr *attr)
|
|
struct perf_counter_attr *attr)
|
|
{
|
|
{
|
|
const char *evt_name;
|
|
const char *evt_name;
|
|
|
|
+ char *flags;
|
|
char sys_name[MAX_EVENT_LENGTH];
|
|
char sys_name[MAX_EVENT_LENGTH];
|
|
char id_buf[4];
|
|
char id_buf[4];
|
|
int fd;
|
|
int fd;
|
|
@@ -400,6 +401,15 @@ static int parse_tracepoint_event(const char **strp,
|
|
strncpy(sys_name, *strp, sys_length);
|
|
strncpy(sys_name, *strp, sys_length);
|
|
sys_name[sys_length] = '\0';
|
|
sys_name[sys_length] = '\0';
|
|
evt_name = evt_name + 1;
|
|
evt_name = evt_name + 1;
|
|
|
|
+
|
|
|
|
+ flags = strchr(evt_name, ':');
|
|
|
|
+ if (flags) {
|
|
|
|
+ *flags = '\0';
|
|
|
|
+ flags++;
|
|
|
|
+ if (!strncmp(flags, "record", strlen(flags)))
|
|
|
|
+ attr->sample_type |= PERF_SAMPLE_RAW;
|
|
|
|
+ }
|
|
|
|
+
|
|
evt_length = strlen(evt_name);
|
|
evt_length = strlen(evt_name);
|
|
if (evt_length >= MAX_EVENT_LENGTH)
|
|
if (evt_length >= MAX_EVENT_LENGTH)
|
|
return 0;
|
|
return 0;
|