)]}'
{
  "log": [
    {
      "commit": "38516ab59fbc5b3bb278cf5e1fe2867c70cff32e",
      "tree": "904476d7780a27001281b9cb93c7959128f9a1d7",
      "parents": [
        "53da59aa6dd881fd0bbdd058a8a299d90ce9dd1d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 20 17:04:50 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 09:50:34 2010 -0400"
      },
      "message": "tracing: Let tracepoints have data passed to tracepoint callbacks\n\nThis patch adds data to be passed to tracepoint callbacks.\n\nThe created functions from DECLARE_TRACE() now need a mandatory data\nparameter. For example:\n\nDECLARE_TRACE(mytracepoint, int value, value)\n\nWill create the register function:\n\nint register_trace_mytracepoint((void(*)(void *data, int value))probe,\n                                void *data);\n\nAs the first argument, all callbacks (probes) must take a (void *data)\nparameter. So a callback for the above tracepoint will look like:\n\nvoid myprobe(void *data, int value)\n{\n}\n\nThe callback may choose to ignore the data parameter.\n\nThis change allows callbacks to register a private data pointer along\nwith the function probe.\n\n\tvoid mycallback(void *data, int value);\n\n\tregister_trace_mytracepoint(mycallback, mydata);\n\nThen the mycallback() will receive the \"mydata\" as the first parameter\nbefore the args.\n\nA more detailed example:\n\n  DECLARE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));\n\n  /* In the C file */\n\n  DEFINE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));\n\n  [...]\n\n       trace_mytracepoint(status);\n\n  /* In a file registering this tracepoint */\n\n  int my_callback(void *data, int status)\n  {\n\tstruct my_struct my_data \u003d data;\n\t[...]\n  }\n\n  [...]\n\tmy_data \u003d kmalloc(sizeof(*my_data), GFP_KERNEL);\n\tinit_my_data(my_data);\n\tregister_trace_mytracepoint(my_callback, my_data);\n\nThe same callback can also be registered to the same tracepoint as long\nas the data registered is different. Note, the data must also be used\nto unregister the callback:\n\n\tunregister_trace_mytracepoint(my_callback, my_data);\n\nBecause of the data parameter, tracepoints declared this way can not have\nno args. That is:\n\n  DECLARE_TRACE(mytracepoint, TP_PROTO(void), TP_ARGS());\n\nwill cause an error.\n\nIf no arguments are needed, a new macro can be used instead:\n\n  DECLARE_TRACE_NOARGS(mytracepoint);\n\nSince there are no arguments, the proto and args fields are left out.\n\nThis is part of a series to make the tracepoint footprint smaller:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4914025\t1088868\t 861512\t6864405\t 68be15\tvmlinux.class\n4918492\t1084612\t 861512\t6864616\t 68bee8\tvmlinux.tracepoint\n\nAgain, this patch also increases the size of the kernel, but\nlays the ground work for decreasing it.\n\n v5: Fixed net/core/drop_monitor.c to handle these updates.\n\n v4: Moved the DECLARE_TRACE() DECLARE_TRACE_NOARGS out of the\n     #ifdef CONFIG_TRACE_POINTS, since the two are the same in both\n     cases. The __DECLARE_TRACE() is what changes.\n     Thanks to Frederic Weisbecker for pointing this out.\n\n v3: Made all register_* functions require data to be passed and\n     all callbacks to take a void * parameter as its first argument.\n     This makes the calling functions comply with C standards.\n\n     Also added more comments to the modifications of DECLARE_TRACE().\n\n v2: Made the DECLARE_TRACE() have the ability to pass arguments\n     and added a new DECLARE_TRACE_NOARGS() for tracepoints that\n     do not need any arguments.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7ec7fb394298c212c30e063c57e0aa895efe9439",
      "tree": "f2aa6cf2ff5d66595d5acb7d985bb157f67c6b29",
      "parents": [
        "9fe06081ef145d6582c39e18203b5fffe6f3abc2"
      ],
      "author": {
        "name": "Qinghuang Feng",
        "email": "qhfeng.kernel@gmail.com",
        "time": "Tue Jan 06 14:40:52 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:12 2009 -0800"
      },
      "message": "samples: mark {static|__init|__exit} for {init|exit} functions\n\nNone of these (init|exit) functions is called from other functions which\nis outside the kernel module mechanism or kernel itself, so mark them as\n{static|__init|__exit}.\n\nSigned-off-by: Qinghuang Feng \u003cqhfeng.kernel@gmail.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2504ea5edfebb14133b8571c20785cdc077e07d2",
      "tree": "a3dd7de2b0f78004e6b579fca3362c676c2c0298",
      "parents": [
        "a0bca6a59ebc052751eed6e3b182c153495672d8"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Nov 14 17:47:41 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:01:30 2008 +0100"
      },
      "message": "tracepoints: samples, fix teardown\n\nImpact: fix a bug in sample tracepoints\n\nNeed a tracepoint_synchronize_unregister() before the end of exit() to\nmake sure every probe callers have exited the non preemptible section\nand thus are not executing the probe code anymore.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4a0897526bbc5c6ac0df80b16b8c60339e717ae2",
      "tree": "aa8eb17c791cdff175f8cd6cb76f02d05f00029a",
      "parents": [
        "24b8d831d56aac7907752d22d2aba5d8127db6f6"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Jul 18 12:16:16 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:29:05 2008 +0200"
      },
      "message": "tracing: tracepoints, samples\n\nTracepoint example code under samples/.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nAcked-by: \u0027Peter Zijlstra\u0027 \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ]
}
