aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKan Liang <kan.liang@intel.com>2014-10-07 11:08:49 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2014-10-15 15:04:33 -0400
commit42f60c2d63b0d3f7230d28ac37c1da4885d4ee65 (patch)
tree1bf548cb6295e696b5279dfdf9f7bf893b849b3d /tools
parentb56d5beff4825f9f216f1fc4a54a5d07d4b68b71 (diff)
Revert "perf tools: Default to cpu// for events v5"
This reverts commit 50e200f07948 ("perf tools: Default to cpu// for events v5") The fixup cannot handle the case that new style format(which without //) mixed with other different formats. For example, group events with new style format: {mem-stores,mem-loads} some hardware event + new style event: cycles,mem-loads Cache event + new style event: LLC-loads,mem-loads Raw event + new style event: cpu/event=0xc8,umask=0x08/,mem-loads old style event and new stytle mixture: mem-stores,cpu/mem-loads/ Signed-off-by: Kan Liang <kan.liang@intel.com> Acked-by: Jiri Olsa <jolsa@redhat.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Link: http://lkml.kernel.org/r/1412694532-23391-2-git-send-email-kan.liang@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/util/include/linux/string.h1
-rw-r--r--tools/perf/util/parse-events.c30
-rw-r--r--tools/perf/util/string.c24
3 files changed, 1 insertions, 54 deletions
diff --git a/tools/perf/util/include/linux/string.h b/tools/perf/util/include/linux/string.h
index 97a800738226..6f19c548ecc0 100644
--- a/tools/perf/util/include/linux/string.h
+++ b/tools/perf/util/include/linux/string.h
@@ -1,4 +1,3 @@
1#include <string.h> 1#include <string.h>
2 2
3void *memdup(const void *src, size_t len); 3void *memdup(const void *src, size_t len);
4int str_append(char **s, int *len, const char *a);
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index d76aa30cb1fb..c5642e6748b2 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -6,7 +6,7 @@
6#include "parse-options.h" 6#include "parse-options.h"
7#include "parse-events.h" 7#include "parse-events.h"
8#include "exec_cmd.h" 8#include "exec_cmd.h"
9#include "linux/string.h" 9#include "string.h"
10#include "symbol.h" 10#include "symbol.h"
11#include "cache.h" 11#include "cache.h"
12#include "header.h" 12#include "header.h"
@@ -863,32 +863,6 @@ int parse_events_name(struct list_head *list, char *name)
863 return 0; 863 return 0;
864} 864}
865 865
866static int parse_events__scanner(const char *str, void *data, int start_token);
867
868static int parse_events_fixup(int ret, const char *str, void *data,
869 int start_token)
870{
871 char *o = strdup(str);
872 char *s = NULL;
873 char *t = o;
874 char *p;
875 int len = 0;
876
877 if (!o)
878 return ret;
879 while ((p = strsep(&t, ",")) != NULL) {
880 if (s)
881 str_append(&s, &len, ",");
882 str_append(&s, &len, "cpu/");
883 str_append(&s, &len, p);
884 str_append(&s, &len, "/");
885 }
886 free(o);
887 if (!s)
888 return -ENOMEM;
889 return parse_events__scanner(s, data, start_token);
890}
891
892static int parse_events__scanner(const char *str, void *data, int start_token) 866static int parse_events__scanner(const char *str, void *data, int start_token)
893{ 867{
894 YY_BUFFER_STATE buffer; 868 YY_BUFFER_STATE buffer;
@@ -909,8 +883,6 @@ static int parse_events__scanner(const char *str, void *data, int start_token)
909 parse_events__flush_buffer(buffer, scanner); 883 parse_events__flush_buffer(buffer, scanner);
910 parse_events__delete_buffer(buffer, scanner); 884 parse_events__delete_buffer(buffer, scanner);
911 parse_events_lex_destroy(scanner); 885 parse_events_lex_destroy(scanner);
912 if (ret && !strchr(str, '/'))
913 ret = parse_events_fixup(ret, str, data, start_token);
914 return ret; 886 return ret;
915} 887}
916 888
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c
index d87767f76903..6afd6106ceb5 100644
--- a/tools/perf/util/string.c
+++ b/tools/perf/util/string.c
@@ -357,27 +357,3 @@ void *memdup(const void *src, size_t len)
357 357
358 return p; 358 return p;
359} 359}
360
361/**
362 * str_append - reallocate string and append another
363 * @s: pointer to string pointer
364 * @len: pointer to len (initialized)
365 * @a: string to append.
366 */
367int str_append(char **s, int *len, const char *a)
368{
369 int olen = *s ? strlen(*s) : 0;
370 int nlen = olen + strlen(a) + 1;
371 if (*len < nlen) {
372 *len = *len * 2;
373 if (*len < nlen)
374 *len = nlen;
375 *s = realloc(*s, *len);
376 if (!*s)
377 return -ENOMEM;
378 if (olen == 0)
379 **s = 0;
380 }
381 strcat(*s, a);
382 return 0;
383}