)]}'
{
  "log": [
    {
      "commit": "c91e3cb8aabab3d1ca4eb3220b2ae7e1b96b2540",
      "tree": "1b8d670ec427f97214f214befbfaef91b3652beb",
      "parents": [
        "e42a54b17768ea80f198c1b00bc6c4797a4485d8"
      ],
      "author": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Nov 25 06:38:17 2020 +0900"
      },
      "committer": {
        "name": "Jooyung Han",
        "email": "jooyung@google.com",
        "time": "Wed Nov 25 06:39:34 2020 +0900"
      },
      "message": "remove extra semicolons [-Wextra-semi]\n\nBug: n/a\nTest: no errors with -Werror,-Wextra-semi\nChange-Id: If523cadea4c6f02a9155fb7482ba5463fff7854a\n"
    },
    {
      "commit": "4fdb12f625e40a32bd4fe228b939099d1ccad361",
      "tree": "37b0a983c0d62bb4fb552119fc6c5e5773799191",
      "parents": [
        "ea8305102a6cdd1b2cf89b1f020391bd19f71244"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 21 02:21:48 2020 +0000"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 21 18:30:20 2020 +0000"
      },
      "message": "libbinder: avoid global mutex every binder call\n\nWe can\u0027t get rid of a mutex (or similar) for the rarer\nProcessState::selfOrNull access, but for ProcessState::self() accesses,\nwhich happen at least once every binder call, we can use the very fast\nonce flags.\n\nBug: 161336582\nTest: boots\nChange-Id: I66fee6be0260f59f80a85328228776de7e68c7fb\n"
    },
    {
      "commit": "7c0edebd0f1e538b7dc5872719a8ff1f549a1fbb",
      "tree": "26789a91e837cc448a222e1fb1c1bd030f1a7c3d",
      "parents": [
        "f2a15e8742cf33e37e6c96f4731c298c6749bb68"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Feb 18 16:41:21 2020 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Feb 19 01:03:47 2020 +0000"
      },
      "message": "libbinder: Do not destruct TextOutput\n\nRecent changes meant that a log is more likely during process shutdown,\ngiven certain races w/ alog. However, this should have still been\npossible before. Allocating TextOutput objects on the heap to avoid them\ngetting destructed.\n\nFixes: 149516130\nTest: while ! cmd activity get-current-user 2\u003e\u00261 | grep FORTIFY; do :; done\nChange-Id: Ie5c066172203172a80c135ad5aa7da09b362ee73\n"
    },
    {
      "commit": "6c7d214699446da83d41ce498372c619222e5024",
      "tree": "97df45f07c58d5780ef7d7f8c2a3fc68ac269e25",
      "parents": [
        "56a1e4fca9f456ac7864fe8ad63a5eddae1f410e"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jan 30 14:39:17 2020 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jan 30 14:40:18 2020 -0800"
      },
      "message": "libbinder: hide BufferedTextOutput.h\n\nNothing uses this now, and the general feeling is that we should\ndeprecate TextOutput at some point in favor of liblog (potentially to\nsave a small amount of memory from static TextOutput objects). So,\nhiding this header.\n\nBug: N/A\nTest: builds\nChange-Id: I4f1d8a1aa8a5db4e602da6499050881ab4aaeca2\n"
    },
    {
      "commit": "28723ae444e4ef1678160314bd03cbd8212d7414",
      "tree": "153768ec1e3b80bcb7f78b373562e2287ffae252",
      "parents": [
        "8f82e1240fde062a2b30b018015b06c7a757d4bd"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Apr 01 18:52:30 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Sep 09 22:58:26 2019 +0000"
      },
      "message": "libbinder: on host\n\nThe usecase is unit testing things which implement binder interfaces.\n\nBug: 124524556\nTest: TH runs all relevant unit tests\nChange-Id: I8caba1290da6d0354a7736a26d1dad7b6ab852e6\n"
    },
    {
      "commit": "a4853cd9a11f98a563c1a26de20b3134836db542",
      "tree": "a88ce538d2a2e285fb965188cbf7dbb7a358a636",
      "parents": [
        "c08d593279398a86ecee7c7c3edc577fc5d2839b"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Jul 12 15:44:37 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Jul 12 15:44:37 2019 -0700"
      },
      "message": "libbinder: don\u0027t export Static.h\n\nThis was being exported by the build system, but it shouldn\u0027t be used\nanywhere.\n\nBug: N/A\nTest: N/A\nChange-Id: Id10772ec3e0ebf39ddf83f0f7981552c3f2e528d\n"
    },
    {
      "commit": "92b17c6c6a4d7936c67cd508634ec2a384004f8a",
      "tree": "afcf455f08d7b456a2de3b71167b849122af4cb8",
      "parents": [
        "a9ed1a6486545ffc5bffca561d6f8991e7d5a578"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Apr 02 15:46:24 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Apr 02 15:49:40 2019 -0700"
      },
      "message": "libbinder: remove SM Static.cpp vars.\n\nNo need for global exported static state anymore. This also\ncreates a new lock (gPermissionControllerLock) which controls\naccess to gPermissionController since there wasn\u0027t a reason to\nhave access to this and sm excluded (likely was out of convenience).\n\nBug: 129785390\nTest: TH\nChange-Id: I15bbe2f0ef4f73c555798cd7674edcc56e923575\n"
    },
    {
      "commit": "9ca51567f613985db9125407d741c9e298f1d459",
      "tree": "75a6e9b5d62e027161e5c1a69479c701a7441868",
      "parents": [
        "61f2f02d8b9132b7fa0ce6215798947ad4ad4f78",
        "0500dc6337d6a2335c7be1a55d139d190b994d83"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jun 07 13:12:17 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 07 13:12:17 2018 -0700"
      },
      "message": "Merge \"libbinder: fix using destroyed mutex warning.\" into pi-dev\nam: 0500dc6337\n\nChange-Id: I0024f9f932a9e95bf607fe2041a32754f828033f\n"
    },
    {
      "commit": "c39caf36da9999c4b61ec8898f8735dcce7fd199",
      "tree": "ae7e2116bc5003986b9246f631700839924a3fd2",
      "parents": [
        "6fa25f9d8fa003a6fb694bf8b09f1c5f316034b9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jun 05 14:34:36 2018 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jun 05 14:34:36 2018 -0700"
      },
      "message": "libbinder: fix using destroyed mutex warning.\n\nBug: 77473515\nTest: run `pm list instrumentation` for several hours,\nTest: and no warning appears.\nChange-Id: I66a39ddd66731779fdc6e534f827ad524685b3ba\n"
    },
    {
      "commit": "2a6874cb7964ef0b06c1a17fe3354dfb10108abd",
      "tree": "bb11f3f6b77bd64ff8c1d37580d074653e2a310a",
      "parents": [
        "ef11b3a7bcd02a3d5f4755f28679d385f7ee3896",
        "c2d7a9e5f41250ad9e71f14a459b1985bc578e53"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue May 22 12:04:23 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 22 12:04:23 2018 -0700"
      },
      "message": "Merge \"Remove thread shutdown logic.\" am: 5730cc10c7\nam: c2d7a9e5f4\n\nChange-Id: I124a001cde37f9c3bd8cdfc4a59ccdc250fd24e5\n"
    },
    {
      "commit": "acb182d0d4dd5c9fd792ba3b09819e96bb7f8cdb",
      "tree": "08de0f328774b22e68ac05ad02b9207bb2608c7f",
      "parents": [
        "c81f3d43fa09a41773aea8adc4c665ce5714af45"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue May 22 09:50:49 2018 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue May 22 09:50:49 2018 -0700"
      },
      "message": "Remove thread shutdown logic.\n\nThis logic wasn\u0027t right, and the kernel will clean\nit up anyway. Since loading and unloading this library\nisn\u0027t supported, I\u0027m removing this race-prone section\nof code until someone has a reason to and decides to\nsupport this usecase.\n\nBug: 77934844\nTest: (walleye) device boots/shutdowns w/o fatal errors\nChange-Id: I2f7b8ed3c969c1e62879291424dfc6be20225dee\n"
    },
    {
      "commit": "788e1c413914731b2e2e52a9b1e007422fc367cf",
      "tree": "e9529070aed4fe7a32b78f20ab17f66ca5530ad0",
      "parents": [
        "de1de879042442f6925d65281cc963473b1d9d3c"
      ],
      "author": {
        "name": "Yunfan Chen",
        "email": "yunfanc@google.com",
        "time": "Thu Mar 29 16:52:09 2018 +0900"
      },
      "committer": {
        "name": "Yunfan Chen",
        "email": "yunfanc@google.com",
        "time": "Thu May 10 17:39:37 2018 +0000"
      },
      "message": "Reduce the polling interval in getService() to 100ms\n\nThe 1 second polling interval is too long and 100ms interval can reduce\nthe boot time, especially for ARC++. The test results can be found in\nb/30892329.\n\nThis CL also adds some ALOGs to show the service start failure as well\nas to avoid spam.\n\nBug: 38432898\nTest: Services can still start. Test cheets_PerfBootServer for ARC++.\nChange-Id: I9c0da9ef8a18a0e1432c39d98a34377bb66c5d85\n"
    },
    {
      "commit": "47f876b74be0a2d6d417f5ff385f85d835a97fe9",
      "tree": "933a23cdef6c20cdb6f6f99220a956a01051ef9b",
      "parents": [
        "7e959e42d85b1ef75a32ab6d4a29efb7f556ffda"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Apr 17 13:56:46 2018 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Apr 17 13:56:46 2018 +0900"
      },
      "message": "Hide some headers from libbinder to vendors\n\nThe headers that are related to system services are now hidden to\nvendors. Note that this does not break anything because vendors have\nalready been disallowed to talk to system services via sepolicy. Their\nuse of binder is strictly limited within themselves (via\n/dev/vndbinder).\n\nThe hidden headers are now guarded with __ANDROID_VNDK__ and including\nthem from vendors (or vendor variants of other VNDK libraries) will\ntrigger a build-time error.\n\nBug: 78113963\nTest: m -j\nTest: devices boots to the UI\nChange-Id: I19be5ca024fc4081b7861d908d75758c1d956a83\n"
    },
    {
      "commit": "e2347b7953f70232541bdc1b392230d6231aaeb9",
      "tree": "1d73a0ad214dcbcdf8bae3d1dc1eebb83985575b",
      "parents": [
        "33dcaf9b52649785bff0c56b48f84a8218354888"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Apr 25 15:41:05 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Apr 25 15:44:11 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I0ce850de85e0de6a5472dd142f738856142db9ec\n"
    },
    {
      "commit": "a4cff88d80bf1acbdbd063af88ecad83a8b9b7b4",
      "tree": "c7bd2444a30c0843c2a1a83845f252ee02122ed5",
      "parents": [
        "ca69e8f2d0a1fc963bd170f9b2bf164028761323"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 13 17:07:40 2014 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 13 17:09:59 2014 -0800"
      },
      "message": "Fix issue #18356768: some app process may hang at Runtime#exit...\n\n...in Parcel destructor\n\nDon\u0027t use a Mutux object, just use simple posix mutex primitives,\nto avoid static init/destroy order problems.\n\nChange-Id: Ic012d94297564c0a55d58869f8276d7d10545fbc\n"
    },
    {
      "commit": "7e790af756d7891cb1cf1374bb283a8fbcbe6b49",
      "tree": "aa12e039c68c41b88b76543331ccdcd5d5fcbba8",
      "parents": [
        "37878b1e57ee25629f0d9aff5edf599afcc8c6eb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 11 12:22:53 2014 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 11 16:23:04 2014 -0800"
      },
      "message": "Add tracking of parcel memory allocations.\n\nChange-Id: I76ffed0e69ccfe70e87d98646f11d4de7c3fd980\n"
    },
    {
      "commit": "002e1e58dfe19dd3e49a59c6827cbf51573941a2",
      "tree": "6dc444d7f05aa0512e3c97344d86ee0264daf869",
      "parents": [
        "b4f1a027cbadd4cd07341f60f859ae34643b68ae"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 06 20:20:50 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 07 18:28:11 2013 -0700"
      },
      "message": "libutils clean-up\n\nChange-Id: I6ff4cfc736751de2912c697f954e45e275f2d386\n"
    },
    {
      "commit": "c5b2c0bf8007562536b822eb060fc54a01f8e08b",
      "tree": "da6084f542177972cf72a985b5d2c10330f87de3",
      "parents": [
        "208059f67ed2dd9fa025e07fcb6954d3cb61c79e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "208059f67ed2dd9fa025e07fcb6954d3cb61c79e",
      "tree": "b2fde632a7c9abf4137751ffe779318c0a89bd96",
      "parents": [
        "501c6179e158b2d5bfc67cb8b7180c02ac301f97"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 18 15:08:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:02 2009 -0700"
      },
      "message": "checkpoint: split libutils into libutils + libbinder\n"
    }
  ]
}
