)]}'
{
  "commit": "f3f096cfedf8113380c56fc855275cc75cd8cf55",
  "tree": "b8d0553afc8cebf6dd320d094206e93df5d95794",
  "parents": [
    "8ab83f56475ec9151645a888dfe1941f4a92091d"
  ],
  "author": {
    "name": "Srikar Dronamraju",
    "email": "srikar@linux.vnet.ibm.com",
    "time": "Wed Apr 11 16:00:43 2012 +0530"
  },
  "committer": {
    "name": "Ingo Molnar",
    "email": "mingo@kernel.org",
    "time": "Mon May 07 14:30:17 2012 +0200"
  },
  "message": "tracing: Provide trace events interface for uprobes\n\nImplements trace_event support for uprobes. In its current form\nit can be used to put probes at a specified offset in a file and\ndump the required registers when the code flow reaches the\nprobed address.\n\nThe following example shows how to dump the instruction pointer\nand %ax a register at the probed text address.  Here we are\ntrying to probe zfree in /bin/zsh:\n\n # cd /sys/kernel/debug/tracing/\n # cat /proc/`pgrep  zsh`/maps | grep /bin/zsh | grep r-xp\n 00400000-0048a000 r-xp 00000000 08:03 130904 /bin/zsh\n # objdump -T /bin/zsh | grep -w zfree\n 0000000000446420 g    DF .text  0000000000000012  Base\n zfree # echo \u0027p /bin/zsh:0x46420 %ip %ax\u0027 \u003e uprobe_events\n # cat uprobe_events\n p:uprobes/p_zsh_0x46420 /bin/zsh:0x0000000000046420\n # echo 1 \u003e events/uprobes/enable\n # sleep 20\n # echo 0 \u003e events/uprobes/enable\n # cat trace\n # tracer: nop\n #\n #           TASK-PID    CPU#    TIMESTAMP  FUNCTION\n #              | |       |          |         |\n              zsh-24842 [006] 258544.995456: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n              zsh-24842 [007] 258545.000270: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n              zsh-24842 [002] 258545.043929: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n              zsh-24842 [004] 258547.046129: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n\nSigned-off-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Jim Keniston \u003cjkenisto@linux.vnet.ibm.com\u003e\nCc: Linux-mm \u003clinux-mm@kvack.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@infradead.org\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120411103043.GB29437@linux.vnet.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eae40a003eec51edd1b1c76344f633f5655dc24e",
      "new_mode": 33188,
      "new_path": "Documentation/trace/uprobetracer.txt"
    },
    {
      "type": "modify",
      "old_id": "e5d3778d555430654f482dba1d5b613ef70336b4",
      "old_mode": 33188,
      "old_path": "arch/Kconfig",
      "new_id": "0f8f968015e272f11b040769357bb9f99d6bccb6",
      "new_mode": 33188,
      "new_path": "arch/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "ce5a5c54ac8fd6d3373ad6f685630cbf2dc65520",
      "old_mode": 33188,
      "old_path": "kernel/trace/Kconfig",
      "new_id": "ea4bff6295fcf0c37713dadd1304be3e47ac9995",
      "new_mode": 33188,
      "new_path": "kernel/trace/Kconfig"
    },
    {
      "type": "modify",
      "old_id": "fa10d5ca5ab13f68903be03453084d3a5956d24a",
      "old_mode": 33188,
      "old_path": "kernel/trace/Makefile",
      "new_id": "1734c03e048bf44afad040053464364cb57f374f",
      "new_mode": 33188,
      "new_path": "kernel/trace/Makefile"
    },
    {
      "type": "modify",
      "old_id": "95059f091a242abcfd60bbe9169131e7870e4a2c",
      "old_mode": 33188,
      "old_path": "kernel/trace/trace.h",
      "new_id": "1bcdbec95a11ecea36d756d88c8dfa7c6e2380d4",
      "new_mode": 33188,
      "new_path": "kernel/trace/trace.h"
    },
    {
      "type": "modify",
      "old_id": "f8b777367d8e57b892167e20cc186f4d92a89eea",
      "old_mode": 33188,
      "old_path": "kernel/trace/trace_kprobe.c",
      "new_id": "b31d3d5699fea09c235ace4c47e16fc8fb8785e0",
      "new_mode": 33188,
      "new_path": "kernel/trace/trace_kprobe.c"
    },
    {
      "type": "modify",
      "old_id": "8e526b9286e9ed7b55f20a34c7aea78bf463840e",
      "old_mode": 33188,
      "old_path": "kernel/trace/trace_probe.c",
      "new_id": "daa9980153af8d0626b1124f729d67ef2f0da9f9",
      "new_mode": 33188,
      "new_path": "kernel/trace/trace_probe.c"
    },
    {
      "type": "modify",
      "old_id": "2df9a18e02520f7de9ee16406f0e1a7c9ff75e2f",
      "old_mode": 33188,
      "old_path": "kernel/trace/trace_probe.h",
      "new_id": "933708677814573c5c133b96574a919e842963ec",
      "new_mode": 33188,
      "new_path": "kernel/trace/trace_probe.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2b36ac68549e2e23d148c81b7905407d344fdc80",
      "new_mode": 33188,
      "new_path": "kernel/trace/trace_uprobe.c"
    }
  ]
}
