)]}'
{
  "commit": "61c45981ddbd718136d49464f00d2f11938aaa6e",
  "tree": "e8a89bd386ce1bbe5160d554c778894d76015f20",
  "parents": [
    "0a456fc58fb8ef3c53d18297ab5cd5d2a70d146b"
  ],
  "author": {
    "name": "Paul Mackerras",
    "email": "paulus@samba.org",
    "time": "Wed Jul 01 13:04:34 2009 +1000"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@elte.hu",
    "time": "Wed Jul 01 10:23:17 2009 +0200"
  },
  "message": "perf_counter tools: Rework event string parsing/syntax\n\nThis reworks the parser for event descriptors to make it more\nconsistent in what it accepts.  It is now structured as a\nrecursive descent parser for the following grammar:\n\nevents\t\t::\u003d event ( (\",\" | space) space* event )*\nevent\t\t::\u003d ( raw_event | numeric_event | symbolic_event |\n\t\t      generic_hw_event ) [ event_modifier ]\nraw_event\t::\u003d \"r\" hex_number\nnumeric_event\t::\u003d number \":\" number\nnumber\t\t::\u003d decimal_number | \"0x\" hex_number | \"0\" octal_number\nsymbolic_event\t::\u003d string_from_event_symbols_array\ngeneric_hw_event::\u003d cache_type ( \"-\" ( cache_op | cache_result ) )*\nevent_modifier\t::\u003d \":\" ( \"u\" | \"k\" | \"h\" )+\n\nwith the extra restriction that you can have at most one\ncache_op and at most one cache_result.\n\nWe pass the current string pointer by reference (i.e. as a\nconst char **) to the various parsing functions so that they\ncan advance the pointer to indicate how much they consumed.\nThey return 0 if they didn\u0027t recognize the thing at the pointer\nor 1 if they did (and advance the pointer past it).\n\nThis also fixes parse_aliases to take the longest matching\nalias from the table, not the first one.  Otherwise \"l1-data\"\nwould match the \"l1-d\" alias and the \"ata\" would not be\nconsumed.\n\nThis allows event modifiers indicating what processor modes to\ncount in to be applied to any event, not just numeric events,\nand adds a \":h\" modifier to indicate counting in hypervisor\nmode.  Specifying \":u\" now sets both exclude_kernel and\nexclude_hv, and so on.  Multiple modes can be specified, e.g.\n\":uk\" will count in user or hypervisor mode (i.e. only\nexclude_kernel will be set).\n\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c19018.53826.843815.189847@cargo.ozlabs.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4d042f104cdcf44539478f66f43e1cf5ea54520a",
      "old_mode": 33188,
      "old_path": "tools/perf/util/parse-events.c",
      "new_id": "e6b83a3311a5698b62cd66a137223b91c1599b4d",
      "new_mode": 33188,
      "new_path": "tools/perf/util/parse-events.c"
    }
  ]
}
