)]}'
{
  "log": [
    {
      "commit": "7e2ed097538c57ff5268e9a6bced7c0b885809c8",
      "tree": "44f9998cc6054d5bef07d6c2979afb0e81ddf13c",
      "parents": [
        "f8a9530939ed87b9a1b1a038b90e355098b679a2"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sun Jan 30 11:59:43 2011 -0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Mon Jan 31 12:40:52 2011 -0200"
      },
      "message": "perf evlist: Store pointer to the cpu and thread maps\n\nSo that we don\u0027t have to pass it around to the several methods that\nneeds it, simplifying usage.\n\nThere is one case where we don\u0027t have the thread/cpu map in advance,\nwhich is in the parsing routines used by top, stat, record, that we have\nto wait till all options are parsed to know if a cpu or thread list was\npassed to then create those maps.\n\nFor that case consolidate the cpu and thread map creation via\nperf_evlist__create_maps() out of the code in top and record, while also\nproviding a perf_evlist__set_maps() for cases where multiple evlists\nshare maps or for when maps that represent CPU sockets, for instance,\nget crafted out of topology information or subsets of threads in a\nparticular application are to be monitored, providing more granularity\nin specifying which cpus and threads to monitor.\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "877108e42b1b9ba64857c4030cf356ecc120fd18",
      "tree": "ca41fa741081faa0f936b7296d721c84d1b89176",
      "parents": [
        "8115d60c323dd9931b95221c0a392aeddc1d6ef3"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sat Jan 29 15:44:29 2011 -0200"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Sun Jan 30 11:37:38 2011 -0200"
      },
      "message": "perf tools: Initial python binding\n\nFirst clarifying that this kind of binding is not a replacement or an\nequivalent to the \u0027perf script\u0027 way of using python with perf.\n\nThe \u0027perf script\u0027 way is to process events and look at a given script\nfor some python function that matches the events to pass each event for\nprocessing.\n\nThis is a python module, i.e. everything is driven from the python\nscript, that merely uses \"import perf\" or \"from perf import\".\n\nperf script is focused on tracepoints, this binding is focused on profiling as\nan initial target. More work is needed to make available tracepoint specific\nvariables as event variables accessible via this binding.\n\nThere is one example of such usage model, in\ntools/perf/python/twatch.py, a tool to watch \"cycles\" events together\nwith task (fork, exit) and comm perf events.\n\nFor now, due to me not being able to grok how python distutils cope with\nbuilding C extensions outside the sources dir the install target just\nbuilds it, I\u0027m using it as:\n\n[root@emilia linux]# export PYTHONPATH\u003d~acme/git/build/perf/lib.linux-x86_64-2.6/\n[root@emilia linux]# tools/perf/python/twatch.py\ncpu:  4, pid: 30126, tid: 30126 { type: mmap, pid: 30126, tid: 30126, start: 0x4, length: 0x82e9ca03, offset: 0, filename:  }\ncpu:  6, pid:   47, tid:   47 { type: mmap, pid: 47, tid: 47, start: 0x6, length: 0xbef87c36, offset: 0, filename:  }\ncpu:  1, pid:    0, tid:    0 { type: mmap, pid: 0, tid: 0, start: 0x1, length: 0x775d1904, offset: 0, filename:  }\ncpu:  7, pid:    0, tid:    0 { type: mmap, pid: 0, tid: 0, start: 0x7, length: 0xc750aeb6, offset: 0, filename:  }\ncpu:  5, pid: 2255, tid: 2255 { type: mmap, pid: 2255, tid: 2255, start: 0x5, length: 0x76669635, offset: 0, filename:  }\ncpu:  0, pid:    0, tid:    0 { type: mmap, pid: 0, tid: 0, start: 0, length: 0x6422ef6b, offset: 0, filename:  }\ncpu:  2, pid: 2255, tid: 2255 { type: mmap, pid: 2255, tid: 2255, start: 0x2, length: 0xe078757a, offset: 0, filename:  }\ncpu:  1, pid: 5769, tid: 5769 { type: fork, pid: 30127, ppid: 5769, tid: 30127, ptid: 5769, time: 103893991270534}\ncpu:  6, pid: 30127, tid: 30127 { type: comm, pid: 30127, tid: 30127, comm: ls }\ncpu:  6, pid: 30127, tid: 30127 { type: exit, pid: 30127, ppid: 30127, tid: 30127, ptid: 30127, time: 103893993273024}\n\nThe first 8 mmap events in this 8 way machine are a mistery that is still being\ninvestigated.\n\nMore of the tools/perf/util/ APIs will be exposed via this python binding as\nthe need arises. For now the focus is on creating events and processing them,\nsymbol resolution is an obvious next step, with tracepoint variables as a close\nsecond step.\n\nCc: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    }
  ]
}
