)]}'
{
  "commit": "7911747bd46123ef8d8eef2ee49422bb8a4b274f",
  "tree": "c8411ff290dac6102131bef4c719dfd077381693",
  "parents": [
    "158ef8cbb7e0fe8bb430310924b8bebe5f186e6e"
  ],
  "author": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Mon May 13 13:29:47 2013 +0200"
  },
  "committer": {
    "name": "Paolo Bonzini",
    "email": "pbonzini@redhat.com",
    "time": "Mon Feb 02 16:55:10 2015 +0100"
  },
  "message": "rcu: add rcu library\n\nThis includes a (mangled) copy of the liburcu code.  The main changes\nare: 1) removing dependencies on many other header files in liburcu; 2)\nremoving for simplicity the tentative busy waiting in synchronize_rcu,\nwhich has limited performance effects; 3) replacing futexes in\nsynchronize_rcu with QemuEvents for Win32 portability.  The API is\nthe same as liburcu, so it should be possible in the future to require\nliburcu on POSIX systems for example and use our copy only on Windows.\n\nAmong the various versions available I chose urcu-mb, which is the\nleast invasive implementation even though it does not have the\nfastest rcu_read_{lock,unlock} implementation.  The urcu flavor can\nbe changed later, after benchmarking.\n\nReviewed-by: Fam Zheng \u003cfamz@redhat.com\u003e\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9938ad382d866a907b0b8940be4cdb4e7ff130d3",
      "new_mode": 33188,
      "new_path": "docs/rcu.txt"
    },
    {
      "type": "modify",
      "old_id": "71262bccd2443e1f38706b206f0057b1fe97987a",
      "old_mode": 33188,
      "old_path": "hw/9pfs/virtio-9p-synth.c",
      "new_id": "e75aa8772e272197f6d289758a52ddb07de70baa",
      "new_mode": 33188,
      "new_path": "hw/9pfs/virtio-9p-synth.c"
    },
    {
      "type": "modify",
      "old_id": "93c2ae2f37748cd572d4e24c501fc0aa0a2faf4b",
      "old_mode": 33188,
      "old_path": "include/qemu/atomic.h",
      "new_id": "98e05ca875e654f6e10d4e52a1f586ab711eb2ca",
      "new_mode": 33188,
      "new_path": "include/qemu/atomic.h"
    },
    {
      "type": "modify",
      "old_id": "a98eb3ad795537b31568d5881eecd7f7089abde9",
      "old_mode": 33188,
      "old_path": "include/qemu/queue.h",
      "new_id": "c6027976523baa0121a25275d93d71478a45e781",
      "new_mode": 33188,
      "new_path": "include/qemu/queue.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cfef36e25adb406fcd4fdffad7e2f123999c4fe0",
      "new_mode": 33188,
      "new_path": "include/qemu/rcu.h"
    },
    {
      "type": "modify",
      "old_id": "e89fdc9785033b0bd00e494f091bc6c06074d986",
      "old_mode": 33188,
      "old_path": "include/qemu/thread.h",
      "new_id": "5114ec8e791bb3e6ccfecb7e44ac3dfb787708c3",
      "new_mode": 33188,
      "new_path": "include/qemu/thread.h"
    },
    {
      "type": "modify",
      "old_id": "93007e2f562089c18c6374d362e6d8157bf8cef9",
      "old_mode": 33188,
      "old_path": "util/Makefile.objs",
      "new_id": "ceaba309399fa379eb33d40e7955ea9b60da21ad",
      "new_mode": 33188,
      "new_path": "util/Makefile.objs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1f737d54478d0550d83fc69d20d207d1222d2757",
      "new_mode": 33188,
      "new_path": "util/rcu.c"
    }
  ]
}
