)]}'
{
  "log": [
    {
      "commit": "a33f32244d8550da8b4a26e277ce07d5c6d158b5",
      "tree": "2b24b891e48ae791446fef6d1b9e520190c03c62",
      "parents": [
        "6c9468e9eb1252eaefd94ce7f06e1be9b0b641b1"
      ],
      "author": {
        "name": "Francis Galiegue",
        "email": "fgaliegue@gmail.com",
        "time": "Fri Apr 23 00:08:02 2010 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Fri Apr 23 02:09:52 2010 +0200"
      },
      "message": "Documentation/: it\u0027s -\u003e its where appropriate\n\nFix obvious cases of \"it\u0027s\" being used when \"its\" was meant.\n\nSigned-off-by: Francis Galiegue \u003cfgaliegue@gmail.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "7069331dbe7155f23966f5944109f909fea0c7e4",
      "tree": "5ea80628d1bf5e776a540ee84814f085c9adff04",
      "parents": [
        "293500a23f4b0698cb04abfecfc9a954d8ab2742"
      ],
      "author": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Fri Oct 02 02:40:05 2009 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Oct 02 10:54:01 2009 -0700"
      },
      "message": "connector: Provide the sender\u0027s credentials to the callback\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nAcked-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "74d154189d597b91da4322996dbf4f5c3d1544ab",
      "tree": "6f09861b5e2f875d2d8ea2127b16add9103221c6",
      "parents": [
        "5a6338db37885af06760d40cad589316e48431e9",
        "ffafa60d496f80c250f2ae0340ae94434c0b0b4d"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 23 19:03:51 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Jul 23 19:03:51 2009 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6\n\nConflicts:\n\tdrivers/net/wireless/iwmc3200wifi/netdev.c\n\tnet/wireless/scan.c\n"
    },
    {
      "commit": "acb9c1b2f406d25c381de2b429f65706cc04d3b5",
      "tree": "d8b571545d6d4deca4d05eea58754e21b8cfc45b",
      "parents": [
        "87cf65601e1709e57f7e28f0f7b3eb0a992c1782"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "zbr@ioremap.net",
        "time": "Tue Jul 21 12:43:51 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 21 12:43:51 2009 -0700"
      },
      "message": "connector: maintainer/mail update.\n\nSigned-off-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "37cf2b8d1622897cf57e70cdab9eba57feb5ff6c",
      "tree": "d0805cda3bcf71cc2bed8f7c51fd37f3c575ad27",
      "parents": [
        "41144ca3dda6d55b10c46d5b7d86502ccffa1c97"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Fri Jul 17 10:14:26 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 17 10:14:26 2009 -0700"
      },
      "message": "connector: get test code working by default\n\nThe connector test code currently does not work out of the box.  This is\nbecause it uses a connector id that is above the registered limit.  So\nrather than force people to stumble through undocumented code wondering\nwhy it isn\u0027t working, have the test code use one of the \"private\" ids by\ndefault.  While I\u0027m in here, clean up the code (kernel and user app) so\nthat it\u0027s a bit more user friendly and verbose in significant things that\nit does.  Terse test code wastes people time as they simply enumerate it\nwith all the same kind of debug messages to get a better feel of what code\nis running at any time.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "41144ca3dda6d55b10c46d5b7d86502ccffa1c97",
      "tree": "d0a766a268553cdbe7f8e7cfb61fd36c7624819a",
      "parents": [
        "0741241c6b80bfd58417e95de984d60c9e9ef2a0"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Fri Jul 17 10:13:58 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 17 10:13:58 2009 -0700"
      },
      "message": "connector: clean up grammar/style in documentation\n\nThe grammar in most of this file is slightly off, and some sections are\nhard to read due to lack of visual clues breaking up related material.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "0741241c6b80bfd58417e95de984d60c9e9ef2a0",
      "tree": "9fa70e5e918e0735c531988f64b92cb5655baf28",
      "parents": [
        "e36aa25a533962b08402530e8443ac804a454e27"
      ],
      "author": {
        "name": "Mike Frysinger",
        "email": "vapier@gentoo.org",
        "time": "Fri Jul 17 10:13:21 2009 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Fri Jul 17 10:13:21 2009 -0700"
      },
      "message": "connector: make callback argument type explicit\n\nThe connector documentation states that the argument to the callback\nfunction is always a pointer to a struct cn_msg, but rather than encode it\nin the API itself, it uses a void pointer everywhere.  This doesn\u0027t make\nmuch sense to encode the pointer in documentation as it prevents proper C\ntype checking from occurring and can easily allow people to use the wrong\npointer type.  So convert the argument type to an explicit struct cn_msg\npointer.\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "28f06c6f4ba2ff450b134b82a3285a26f232a2c1",
      "tree": "44f4ed4b073735479d2689784c249b6f93bceb50",
      "parents": [
        "082196242e24ff13354a2d376b275e01c08e6799"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@kernel.org",
        "time": "Wed Jun 17 16:26:30 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:46 2009 -0700"
      },
      "message": "Documentation/connector/cn_test.c comment unused cn_test_want_notify()\n\nCurrently cn_test_want_notify() has no user.\n\nSo add an ifdef and a comment which tells us to not remove it.\n\nSigned-off-by: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nAcked-by: Evgeniy Polyakov \u003czbr@ioremap.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f82da723398ff18d49275a5f03de6cae5f592e8e",
      "tree": "acd95449d77d4b565baa71eb287d228a1e1fcbf4",
      "parents": [
        "99709372736a216f99eb32b76fba835a2bfc93a8"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Thu Feb 12 16:47:01 2009 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 12 16:47:01 2009 -0800"
      },
      "message": "Documentation/connector/cn_test.c: don\u0027t use gfp_any()\n\ncn_test_timer_func() is a timer handler and can never use GFP_KERNEL -\nthere\u0027s no point in using gfp_any() here.\n\nAlso, use setup_timer().\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "c17dad6905fc82d8f523399e5c3f014e81d61df6",
      "tree": "9e28f9f77dd80b2b89d4760d56c2106a3255cdcb",
      "parents": [
        "75b7edfdc12c213402b17a62e5cfe7a802a4ab57"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 29 14:00:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": ".gitignore updates\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3794f3e812ef707a4f7931742274d1d0ca6597b4",
      "tree": "9a5373fa2bbcfc1626bb666d2c895e2620f7a3b3",
      "parents": [
        "bc2aa80e18a1b43ea2b8066500006b729c4ba4a7"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Tue Aug 12 15:09:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:30 2008 -0700"
      },
      "message": "docsrc: build Documentation/ sources\n\nCurrently source files in the Documentation/ sub-dir can easily bit-rot\nsince they are not generally buildable, either because they are hidden in\ntext files or because there are no Makefile rules for them.  This needs to\nbe fixed so that the source files remain usable and good examples of code\ninstead of bad examples.\n\nAdd the ability to build source files that are in the Documentation/ dir.\nAdd to Kconfig as \"BUILD_DOCSRC\" config symbol.\n\nUse \"CONFIG_BUILD_DOCSRC\u003d1 make ...\" to build objects from the\nDocumentation/ sources.  Or enable BUILD_DOCSRC in the *config system.\nHowever, this symbol depends on HEADERS_CHECK since the header files need\nto be installed (for userspace builds).\n\nBuilt (using cross-tools) for x86-64, i386, alpha, ia64, sparc32,\nsparc64, powerpc, sh, m68k, \u0026 mips.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nReviewed-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dd00cc486ab1c17049a535413d1751ef3482141c",
      "tree": "d90ff69ea06792b9284f2f2665c96624f121b88a",
      "parents": [
        "3b5ad0797c0e4049001f961a8b58f1d0ce532072"
      ],
      "author": {
        "name": "Yoann Padioleau",
        "email": "padator@wanadoo.fr",
        "time": "Thu Jul 19 01:49:03 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:50 2007 -0700"
      },
      "message": "some kmalloc/memset -\u003ekzalloc (tree wide)\n\nTransform some calls to kmalloc/memset to a single kzalloc (or kcalloc).\n\nHere is a short excerpt of the semantic patch performing\nthis transformation:\n\n@@\ntype T2;\nexpression x;\nidentifier f,fld;\nexpression E;\nexpression E1,E2;\nexpression e1,e2,e3,y;\nstatement S;\n@@\n\n x \u003d\n- kmalloc\n+ kzalloc\n  (E1,E2)\n  ...  when !\u003d \\(x-\u003efld\u003dE;\\|y\u003df(...,x,...);\\|f(...,x,...);\\|x\u003dE;\\|while(...) S\\|for(e1;e2;e3) S\\)\n- memset((T2)x,0,E1);\n\n@@\nexpression E1,E2,E3;\n@@\n\n- kzalloc(E1 * E2,E3)\n+ kcalloc(E1,E2,E3)\n\n[akpm@linux-foundation.org: get kcalloc args the right way around]\nSigned-off-by: Yoann Padioleau \u003cpadator@wanadoo.fr\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nAcked-by: Russell King \u003crmk@arm.linux.org.uk\u003e\nCc: Bryan Wu \u003cbryan.wu@analog.com\u003e\nAcked-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: Dave Airlie \u003cairlied@linux.ie\u003e\nAcked-by: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nAcked-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nAcked-by: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nAcked-by: Pierre Ossman \u003cdrzeus-list@drzeus.cx\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@steeleye.com\u003e\nCc: \"Antonino A. Daplas\" \u003cadaplas@pol.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "897522ea1c20691b6a65f32f03ae4e77e508b31c",
      "tree": "fe71ca8eeedc1c5aebdb4ed02d1db8222738336f",
      "parents": [
        "94918ff68a7c78fdd3241d13e18444ef80b8ff4a"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "johnpol@2ka.mipt.ru",
        "time": "Fri Aug 25 00:52:06 2006 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@sunset.davemloft.net",
        "time": "Sat Aug 26 18:42:00 2006 -0700"
      },
      "message": "[CONNECTOR]: Add userspace example code into Documentation/connector/\n\nI was asked several times to include userspace example code into\nDocumentation, so if there is no policy against it, consider attached patch\nfor 2.6.18. This program works with included Documentation/connector/cn_test.c\nconnector module.\n\nSigned-off-by: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "b191ba0d599928372be5a89f75486eb58efab48a",
      "tree": "a0ecc636d121126aba838d49700ad9cfbbf94733",
      "parents": [
        "0ac81ae34ec8898e7eb1388fe21e3cee7b626a88"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "johnpol@2ka.mipt.ru",
        "time": "Mon Mar 20 22:21:40 2006 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Mar 20 22:21:40 2006 -0800"
      },
      "message": "[CONNECTOR]: Use netlink_has_listeners() to avoind unnecessary allocations.\n\nReturn -ESRCH from cn_netlink_send() when there are not listeners,\njust as it could be done by netlink_broadcast().  Propagate\nnetlink_broadcast() error back to the caller.\n\nSigned-off-by: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "18a0c23617a2cb1c2e55e650046c2084d823fde0",
      "tree": "24e73433d0e8149c1ae8b658188f0cec0472c60c",
      "parents": [
        "072047e4de3800905e09d0f8ef0e1cc4e91a601e"
      ],
      "author": {
        "name": "Carlo Comin",
        "email": "vl4d@spine-group.org",
        "time": "Tue Nov 08 09:38:56 2005 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Nov 08 09:38:56 2005 -0800"
      },
      "message": "[CONNECTOR]: Fix documentation test module.\n\nPatch from Carlo Comin \u003cvl4d spine-group.org\u003e\n\nSigned-off-by: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "eb0d6041143fae63410c5622fef96862e6b20933",
      "tree": "28a8f9ed7fc1e60850a06c2f06fe8bbaaa08d073",
      "parents": [
        "34cb711ba922f53cca45443b8c3c1078873cf599"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "johnpol@2ka.mipt.ru",
        "time": "Thu Oct 13 14:42:04 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Oct 13 14:42:04 2005 -0700"
      },
      "message": "[CONNECTOR]: Update documentation to match reality.\n\nUpdated documentation to reflect 2.6.14 netlink changes\nabout socket options, multicasting and group number.\nPlease concider for 2.6.14.\n\nSigned-off-by: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7672d0b54411371e0b6a831c1cb2f0ce615de6dc",
      "tree": "27d88da3263041b91d18346b3bcd27807d332f1a",
      "parents": [
        "357d596bd552ad157a906289ab13ea6ba7e66e3d"
      ],
      "author": {
        "name": "Evgeniy Polyakov",
        "email": "johnpol@2ka.mipt.ru",
        "time": "Sun Sep 11 19:15:07 2005 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sun Sep 11 19:15:07 2005 -0700"
      },
      "message": "[NET]: Add netlink connector.\n\nKernel connector - new userspace \u003c-\u003e kernel space easy to use\ncommunication module which implements easy to use bidirectional\nmessage bus using netlink as it\u0027s backend.  Connector was created to\neliminate complex skb handling both in send and receive message bus\ndirection.\n\nConnector driver adds possibility to connect various agents using as\none of it\u0027s backends netlink based network.  One must register\ncallback and identifier. When driver receives special netlink message\nwith appropriate identifier, appropriate callback will be called.\n\nFrom the userspace point of view it\u0027s quite straightforward:\n\n\tsocket();\n\tbind();\n\tsend();\n\trecv();\n\nBut if kernelspace want to use full power of such connections, driver\nwriter must create special sockets, must know about struct sk_buff\nhandling...  Connector allows any kernelspace agents to use netlink\nbased networking for inter-process communication in a significantly\neasier way:\n\nint cn_add_callback(struct cb_id *id, char *name, void (*callback) (void *));\nvoid cn_netlink_send(struct cn_msg *msg, u32 __groups, int gfp_mask);\n\nstruct cb_id\n{\n\t__u32\t\t\tidx;\n\t__u32\t\t\tval;\n};\n\nidx and val are unique identifiers which must be registered in\nconnector.h for in-kernel usage.  void (*callback) (void *) - is a\ncallback function which will be called when message with above idx.val\nwill be received by connector core.\n\nUsing connector completely hides low-level transport layer from it\u0027s\nusers.\n\nConnector uses new netlink ability to have many groups in one socket.\n\n[ Incorporating many cleanups and fixes by myself and\n  Andrew Morton -DaveM ]\n\nSigned-off-by: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    }
  ]
}
