)]}'
{
  "log": [
    {
      "commit": "ac199db0189c091f2863312061c0575937f68810",
      "tree": "0068aaa77ca00102ca60754eb32329f06821bba0",
      "parents": [
        "28bea271e58e429eccfad3d7ee2ad12d6ee015bf"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Mar 19 20:26:15 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 20 10:17:07 2009 +0100"
      },
      "message": "ftrace: event profile hooks\n\nImpact: new tracing infrastructure feature\n\nProvide infrastructure to generate software perf counter events\nfrom tracepoints.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c20090319194233.557364871@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9cc26a261d43e5898287a1f5808132f8f05ceb1c",
      "tree": "cf00e838e7f026d20500d8f90191230ed3f41078",
      "parents": [
        "2939b0469d04ba9ac791aca9a81625d7eb50662b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 09 16:00:22 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 10 00:35:05 2009 -0400"
      },
      "message": "tracing: use generic __stringify\n\nImpact: clean up\n\nThis removes the custom made STR(x) macros in the tracer and uses\nthe generic __stringify macro instead.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "c32e827b25054cb17b79cf97fb5e63ae4ce2223c",
      "tree": "9a79a8662d88557303a671d147f80038b5fd87dc",
      "parents": [
        "ef5580d0fffce6e0a01043bac0625128b5d409a7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Feb 27 19:12:30 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 28 03:09:32 2009 -0500"
      },
      "message": "tracing: add raw trace point recording infrastructure\n\nImpact: lower overhead tracing\n\nThe current event tracer can automatically pick up trace points\nthat are registered with the TRACE_FORMAT macro. But it required\na printf format string and parsing. Although, this adds the ability\nto get guaranteed information like task names and such, it took\na hit in overhead processing. This processing can add about 500-1000\nnanoseconds overhead, but in some cases that too is considered\ntoo much and we want to shave off as much from this overhead as\npossible.\n\nTom Zanussi recently posted tracing patches to lkml that are based\non a nice idea about capturing the data via C structs using\nSTRUCT_ENTER, STRUCT_EXIT type of macros.\n\nI liked that method very much, but did not like the implementation\nthat required a developer to add data/code in several disjoint\nlocations.\n\nThis patch extends the event_tracer macros to do a similar \"raw C\"\napproach that Tom Zanussi did. But instead of having the developers\nneeding to tweak a bunch of code all over the place, they can do it\nall in one macro - preferably placed near the code that it is\ntracing. That makes it much more likely that tracepoints will be\nmaintained on an ongoing basis by the code they modify.\n\nThe new macro TRACE_EVENT_FORMAT is created for this approach. (Note,\na developer may still utilize the more low level DECLARE_TRACE macros\nif they don\u0027t care about getting their traces automatically in the event\ntracer.)\n\nThey can also use the existing TRACE_FORMAT if they don\u0027t need to code\nthe tracepoint in C, but just want to use the convenience of printf.\n\nSo if the developer wants to \"hardwire\" a tracepoint in the fastest\npossible way, and wants to acquire their data via a user space utility\nin a raw binary format, or wants to see it in the trace output but not\nsacrifice any performance, then they can implement the faster but\nmore complex TRACE_EVENT_FORMAT macro.\n\nHere\u0027s what usage looks like:\n\n  TRACE_EVENT_FORMAT(name,\n\tTPPROTO(proto),\n\tTPARGS(args),\n\tTPFMT(fmt, fmt_args),\n\tTRACE_STUCT(\n\t\tTRACE_FIELD(type1, item1, assign1)\n\t\tTRACE_FIELD(type2, item2, assign2)\n\t\t\t[...]\n\t),\n\tTPRAWFMT(raw_fmt)\n\t);\n\nNote name, proto, args, and fmt, are all identical to what TRACE_FORMAT\nuses.\n\n name: is the unique identifier of the trace point\n proto: The proto type that the trace point uses\n args: the args in the proto type\n fmt: printf format to use with the event printf tracer\n fmt_args: the printf argments to match fmt\n\n TRACE_STRUCT starts the ability to create a structure.\n Each item in the structure is defined with a TRACE_FIELD\n\n  TRACE_FIELD(type, item, assign)\n\n type: the C type of item.\n item: the name of the item in the stucture\n assign: what to assign the item in the trace point callback\n\n raw_fmt is a way to pretty print the struct. It must match\n  the order of the items are added in TRACE_STUCT\n\n An example of this would be:\n\n TRACE_EVENT_FORMAT(sched_wakeup,\n\tTPPROTO(struct rq *rq, struct task_struct *p, int success),\n\tTPARGS(rq, p, success),\n\tTPFMT(\"task %s:%d %s\",\n\t      p-\u003ecomm, p-\u003epid, success?\"succeeded\":\"failed\"),\n\tTRACE_STRUCT(\n\t\tTRACE_FIELD(pid_t, pid, p-\u003epid)\n\t\tTRACE_FIELD(int, success, success)\n\t),\n\tTPRAWFMT(\"task %d success\u003d%d\")\n\t);\n\n This creates us a unique struct of:\n\n struct {\n\tpid_t\t\tpid;\n\tint\t\tsuccess;\n };\n\n And the way the call back would assign these values would be:\n\n\tentry-\u003epid \u003d p-\u003epid;\n\tentry-\u003esuccess \u003d success;\n\nThe nice part about this is that the creation of the assignent is done\nvia macro magic in the event tracer.  Once the TRACE_EVENT_FORMAT is\ncreated, the developer will then have a faster method to record\ninto the ring buffer. They do not need to worry about the tracer itself.\n\nThe developer would only need to touch the files in include/trace/*.h\n\nAgain, I would like to give special thanks to Tom Zanussi for this\nnice idea.\n\nIdea-from: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "6ecc2d1ca39177edb6fbdb7412948b0e9f409d02",
      "tree": "336a12a2f3db016f967717e1cb06e9171a239ce5",
      "parents": [
        "eb594e45f6979cd10b18d87f7b3f02119e00a108"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Feb 27 21:33:02 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 28 02:59:43 2009 -0500"
      },
      "message": "tracing: add subsystem level to trace events\n\nIf a trace point header defines TRACE_SYSTEM, then it will add the\nfollowing trace points into that event system.\n\nIf include/trace/irq_event_types.h has:\n\n #define TRACE_SYSTEM irq\n\nat the top and\n\n #undef TRACE_SYSTEM\n\nat the bottom, then a directory \"irq\" will be created in the\n/debug/tracing/events directory. Inside that directory will contain the\ntwo trace points that are defined in include/trace/irq_event_types.h.\n\nOnly adding the above to irq and not to sched, we get:\n\n # ls /debug/tracing/events/\nirq                     sched_process_exit  sched_signal_send  sched_wakeup_new\nsched_kthread_stop      sched_process_fork  sched_switch\nsched_kthread_stop_ret  sched_process_free  sched_wait_task\nsched_migrate_task      sched_process_wait  sched_wakeup\n\n # ls /debug/tracing/events/irq\nirq_handler_entry  irq_handler_exit\n\nIf we add #define TRACE_SYSTEM sched to the trace/sched_event_types.h\nthen the rest of the trace events will be put in a sched directory\nwithin the events directory.\n\nI\u0027ve been playing with this idea of the subsystem for a while, but\nrecently Tom Zanussi posted some patches to lkml that included this\nmethod. Tom\u0027s approach was clean and got me to finally put some effort\nto clean up the event trace points.\n\nThanks to Tom Zanussi for demonstrating how nice the subsystem\nmethod is.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "eb594e45f6979cd10b18d87f7b3f02119e00a108",
      "tree": "eb27cea51205ad527a0b1582c9b02d434f7129bc",
      "parents": [
        "0cfe82451dfa3ebf4e69158f2eb450f2fbb6b715"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Feb 27 17:36:06 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 28 02:58:50 2009 -0500"
      },
      "message": "tracing: move trace point formats to files in include/trace directory\n\nImpact: clean up\n\nTo further facilitate the ease of adding trace points for developers, this\npatch creates include/trace/trace_events.h and\ninclude/trace/trace_event_types.h.\n\nThe former file will hold the trace/\u003ctype\u003e.h files and the latter will hold\nthe trace/\u003ctype\u003e_event_types.h files.\n\nTo create new tracepoints and to have them automatically\nappear in the event tracer, a developer makes the trace/\u003ctype\u003e.h file\nwhich includes \u003clinux/tracepoint.h\u003e and the trace/\u003ctype\u003e_event_types.h file.\n\nThe trace/\u003ctype\u003e_event_types.h file will hold the TRACE_FORMAT\nmacros.\n\nThen add the trace/\u003ctype\u003e.h file to trace/trace_events.h,\nand add the trace/\u003ctype\u003e_event_types.h to the trace_event_types.h file.\n\nNo need to modify files elsewhere.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "af39241b90a345556b8884adff87096afe71b050",
      "tree": "a913e3f15b1fb91555b5cb5899270274ce4c2c46",
      "parents": [
        "8656e7a2fa6afcd8682990f804a2a9674568738f"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Thu Feb 26 10:11:05 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 18:43:50 2009 +0100"
      },
      "message": "tracing, genirq: add irq enter and exit trace events\n\nImpact: add new tracepoints\n\nAdd them to the generic IRQ code, that way every architecture\ngets these new tracepoints, not just x86.\n\nUsing Steve\u0027s new \u0027TRACE_FORMAT\u0027, I can get function graph\ntrace as follows using the original two IRQ tracepoints:\n\n 3)               |    handle_IRQ_event() {\n 3)               |    /* (irq_handler_entry) irq\u003d28 handler\u003deth0 */\n 3)               |    e1000_intr_msi() {\n 3)   2.460 us    |      __napi_schedule();\n 3)   9.416 us    |    }\n 3)               |    /* (irq_handler_exit) irq\u003d28 handler\u003deth0 return\u003dhandled */\n 3) + 22.935 us   |  }\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mathieu Desnoyers \u003ccompudj@krystal.dyndns.org\u003e\nCc: \"Frank Ch. Eigler\" \u003cfche@redhat.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3fe8e4a38fd19dbb3f8ffb1826aa840ae304a65",
      "tree": "9df43f7711f836173adebcefe2f4776bd3e30340",
      "parents": [
        "b77e38aa240c3bd9c55c98b9f7c81541e042eae5"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Feb 24 10:22:57 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Feb 24 21:54:07 2009 -0500"
      },
      "message": "tracing: add schedule events to event trace\n\nThis patch changes the trace/sched.h to use the DECLARE_TRACE_FMT\nsuch that they are automatically registered with the event tracer.\n\nAnd it also adds the tracing sched headers to kernel/trace/events.c\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    }
  ]
}
