)]}'
{
  "log": [
    {
      "commit": "c9e5f3716626fb8fcbde87c2f7324cc9292a0bd5",
      "tree": "62c5e6ae6f95045d41fc736340fab29b0437942b",
      "parents": [
        "7da7fab790ca6cfff2755cf8c86b20b739b919ad"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 21 09:24:13 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Feb 02 15:21:15 2017 -0800"
      },
      "message": "liblog: add android_lookupEventTagNum\n\nandroid_lookupEventTagNum added.  Adds support for creating a new\nlog tag at runtime, registered to the logd service.\n\nTested on Hikey, all services stopped, shell only access, CPUs not\nlocked (there is enough repeatability on this platform).\n\n$ /data/nativetest64/liblog-benchmarks/liblog-benchmarks BM_lookupEventTagNum\n\n                          iterations      ns/op\nPrecharge: start\nPrecharge: stop 231\nNB: only Tag matching, linear lookup (as reference, before unordered_map)\nBM_lookupEventTagNum         1000000       1017\nNB: unordered_map with full Tag \u0026 Format lookup, but with Tag hashing\nBM_lookupEventTagNum         2000000        683\nNB: with full Tag \u0026 Format hash and lookup for matching\nBM_lookupEventTagNum         2000000        814\nNB: only Tag matching (Hail Mary path)\nBM_lookupEventTagNum         5000000        471\n\nBecause the database can now be dynamic, we added reader/writer locks\nwhich adds a 65ns (uncontended) premium on lookups, and switch to\ncheck for an allocation adds 25ns (either open code, or using\nstring_view, no difference) which means our overall speed takes 90%\nas long as the requests did before we switched to unordered_map.\nFaster than before where we originally utilized binary lookup on\nstatic content, but not by much.  Dynamic updates that are not cached\nlocally take the following times to acquire long path to logd to\ngenerate.\n\nBM_lookupEventTag           20000000         139\nBM_lookupEventTag_NOT       20000000         87\nBM_lookupEventFormat        20000000         139\nBM_lookupEventTagNum_logd_new   5000         335936\nBM_lookupEventTagNum_logd_existing 10000     249226\n\nThe long path pickups are mitigated by the built-in caching, and\nthe public mapping in /dev/event-log-tags.\n\nSideEffects: Event tags and signal handlers do not mix\nTest: liblog benchmarks\nBug: 31456426\nChange-Id: I69e6489d899cf35cdccffcee0d8d7cad469ada0a\n"
    },
    {
      "commit": "61e9ce6709a12cf39a9471476da3d50339efe466",
      "tree": "c461a90ad53a38bf2baab5a3d9ec922aded478ea",
      "parents": [
        "3dfe40129657165f4cfe6c6cf0a5b6c8e8e6d4da"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 12 14:51:54 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Feb 02 14:24:18 2017 -0800"
      },
      "message": "logd: add getEventTag command and service\n\nWill register a new event tag by name and format, and return an\nevent-log-tags format response with the newly allocated tag.\nIf format is not specified, then nothing will be recorded, but\na pre-existing named entry will be listed. If name and format are\nnot specified, list all dynamic entries. If name\u003d* list all\nevent log tag entries.\n\nStickiness through logd crash will be managed with the tmpfs file\n/dev/event-log-tags and through a reboot with add_tag entries in\nthe pmsg last logcat event log. On debug builds we retain a\n/data/misc/logd/event-log-tags file that aids stickiness and that\ncan be picked up by the bugreport.\n\nIf we detect truncation damage to /dev/event-log-tags, or to\n/data/misc/logd/event-log-tags, rebuild file with a new first line\nsignature incorporating the time so mmap\u0027d readers of the file can\ndetect the possible change in shape and order.\n\nManual testing:\n\nMake sure nc (netcat) is built for the target platform on the host:\n$ m nc\n\nThen the following can be used to issue a request on the platform:\n$ echo -n \u0027getEventTag name\u003d\u003cname\u003e format\u003d\"\u003cformat\u003e\"\\0EXIT\\0\u0027 |\n\u003e nc -U /dev/socket/logd\n\nTest: gTest logd-unit-test --gtest_filter\u003dgetEventTag*\nBug: 31456426\nChange-Id: I5dacc5f84a24d52dae09cca5ee1a3a9f9207f06d\n"
    },
    {
      "commit": "b5b879678522882e6dbb02511379518d2b7b545d",
      "tree": "7284c6ffa1d49ad6154fda6539f677698484cac3",
      "parents": [
        "9fd1190790d34fed8ea5403367455c60503d37fb"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jan 23 14:20:31 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jan 24 11:02:18 2017 -0800"
      },
      "message": "logd: multiple identical do not report expired\n\nReport multiple identical chatty messages differently than for\nregular expire chatty messages.  Multiple identical will\nreport identical count, while spam filter will report\nexpire count.\n\nThis should reduce the expected flood of people confused\nbut chatty messages in continuous logcat output.\n\nTest: gTest logd_unit_tests --gtest_filter\u003dlogd.multiple*\nChange-Id: Iad93d3efc6a3938a4b87ccadddbd86626a015d44\n"
    },
    {
      "commit": "c3c06294e56d89a6308d358ecc6e403f8dd8c5b3",
      "tree": "49e858ad74c9fd42b04be00829f0754967357956",
      "parents": [
        "8dbab358f01ed0957ff4d5b1c505981dfe93d5de"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jan 09 12:43:44 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jan 20 09:42:02 2017 -0800"
      },
      "message": "logd: test: switch to /data/backup/ for sepolicy avc injection\n\nResolve issues seen on continuous testing frame:\n\n- statistics test, info instead of fail on missing radio log data.\n- sepolicy switch from /data/misc/logd/ to /data/backup/ as the\n  directory we access(2) to inject sepolicy violations.  The key here\n  is we are still root, but we are in u:r:shell:s0, and the directory\n  does not provide us DAC access (0700 system system) so we trigger\n  the pair dac_override and dac_read_search on every try to get past\n  the message de-duper.  /data/misc/logd is not always there, until\n  logpersist is enabled, but /data/backup is always there.\n- a stricter signature of \u0027): avc: denied\u0027\n- put in a looser threshold for sepolicy_rate_limiter_spam test.\n\nTest: gTest logd-unit-tests --gtest_filter\u003dlogd.sepolicy*\nBug: 34454758\nChange-Id: I28ce4fdb51dc4869944e3253b593ce222d16ec98\n"
    },
    {
      "commit": "247d682fe1b0dd4c8f149b7f5c89c546df17873a",
      "tree": "d11ddcf98311274cb4612f41b506ebbc9c0b4a3b",
      "parents": [
        "fe05f1cde4fd812bbb20a39d37ee7be6b95402c3"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jan 03 14:00:19 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 04 14:46:58 2017 -0800"
      },
      "message": "logd: sepolicy dynamic rate limiting\n\nProcessing overhead for selinux violation messages is costly. We want\nto deal with bursts of violations, but we have no intent of allowing\nthat sustained burst to go unabated as there is a cost of processing\nand battery usage.\n\nTunables in libaudit.h are:\n\nAUDIT_RATE_LIMIT_DEFAULT 20        /* acceptable burst rate      */\nAUDIT_RATE_LIMIT_BURST_DURATION 10 /* number of seconds of burst */\nAUDIT_RATE_LIMIT_MAX     5         /* acceptable sustained rate  */\n\nSince we can only asymptotically handle DEFAULT rate, we set an upper\nthreshold of half way between the MAX and DEFAULT rate.\n\nDefault kernel audit subsystem message rate is set to 20 a second.\nIf sepolicy exceeds 125 violation messages over up to ten seconds\n(\u003e\u003d~12/s), tell kernel audit subsystem to drop the rate to 5 messages\na second.  If rate drops below 50 messages over the past ten seconds\n(\u003c5/s), tell kernel it is ok to increase the burst rate back to 20\nmessages a second.\n\nTest: gTest logd-unit-tests --gtest_filter\u003dlogd.sepolicy_rate_limiter_*\nBug: 27878170\nChange-Id: I843f8dcfbb3ecfbbe94a4865ea332c858e3be7f2\n"
    },
    {
      "commit": "5badada997f8a83ba031e1c8625c6daf43006b92",
      "tree": "7aa24773982bcce1aef9e4c11391ff24696687b3",
      "parents": [
        "891df1c4103739149ad17afb28093b8025eb6179",
        "2e588677716f3e7f84c6274aeeb943efd6b96770"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 03 22:21:37 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 03 22:21:37 2017 +0000"
      },
      "message": "Merge \"LogAudit.cpp: replace newlines with spaces in audit messages\""
    },
    {
      "commit": "2e588677716f3e7f84c6274aeeb943efd6b96770",
      "tree": "3d8874c2fb0917eaa2774dbe8a3d36f381ea2f37",
      "parents": [
        "10a7b9bb8ba3eaf61bac9e36e14bdedf1c5ea891"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 03 10:35:34 2017 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 03 12:39:28 2017 -0800"
      },
      "message": "LogAudit.cpp: replace newlines with spaces in audit messages\n\nSome kernels have a bug which causes a newline to show up in audit\nmessages. The embedded newlines cause one message to look like two due\nto prefix controls.\n\nReplace any newlines with spaces. Duplicate spaces are further\nconsolidated in code immediately after this newly added code.\n\nTest: create an audit message with a newline, and watch it be cleaned up.\nBug: 27878170\nChange-Id: Id90c29ab9e10d3be96f51403b0293622d782422a\n"
    },
    {
      "commit": "ce80da301836cfa40c7a6424034f0743bbca9add",
      "tree": "131bb0533c181d728fe6bc22c5f87995b71d08f7",
      "parents": [
        "10a7b9bb8ba3eaf61bac9e36e14bdedf1c5ea891"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 29 15:16:06 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jan 03 09:44:42 2017 -0800"
      },
      "message": "logd: Add support for ro.logd.auditd.[main|events]\n\nlog selinux audit messages boolean (true or false, default true)\nselection for logging destinations:\n\nro.logd.auditd - turn on logd.auditd to pick up violations.\nro.logd.auditd.dmesg - to the kernel log.\nro.logd.auditd.main - to the \"main\" log buffer.\nro.logd.auditd.events - to the \"events\" log buffer.\n\nWe used to also read logd.auditd.dmesg and persist.logd.auditd.dmesg\nwhich do not get refreshed when /data mounts internally.  This is a\nconfusing state as these properties will be read after a logd crash\nand restart, adjusting the behavior of the logger.  Same can be said\nfor logd.auditd as well.  Drop reading these other parameters.\n\nTest: manual set r/o parameters, stop/start logd to confirm behavior\nBug: 33969000\nBug: 27878170\nChange-Id: I1a6bb4a903074c9aa7b227cf583a0094d49cbefd\n"
    },
    {
      "commit": "1736c4866c9c0791992fa4f401f684575aed344a",
      "tree": "0bfeb883e9a0bcce85f8fd99500797a6b21623cd",
      "parents": [
        "491c3871a08b32b43b6f202eb6ca5a7dd6b7cafd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Dec 27 13:30:03 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 29 12:59:22 2016 -0800"
      },
      "message": "logd: gtest: logd.timeout socket does not clean up properly\n\nUntil the socket ages out, it sticks around and gets reused in\nsubsequent tests affecting the outcome of those tests.  We opt\nto run logd.timeout in a forked and isolated process to keep\nthese conditions from interfering.\n\nAdjusted benchmark execute to only run the tests we are\ninterested in to improve the time it takes to run.\n\nCommented some areas of code to make them easier to maintain.\n\nTest: gTest logd-unit-tests success\nBug: 33962045\nChange-Id: Ic1b98bc4a2d7e8927f1a87628e3bcc368c9cf8ce\n"
    },
    {
      "commit": "684bdb576dd43f1c262011e7bc4343a1ae4a32d0",
      "tree": "dec4f0b59e3fd1752141233f7e2ca38e2534a45a",
      "parents": [
        "8a1c4b85303cd636f4920f99093063f57ecc8e73"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Dec 13 12:44:20 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Dec 21 12:16:46 2016 -0800"
      },
      "message": "logd: LogBufferElementKey use uint32_t for uid\n\nTest: gTest liblog-unit-tests, logd-unit-tests \u0026 logcat-unit-test\nChange-Id: Icae34b1fa0b3df0a45ad175ec81aaf232f322f38\n"
    },
    {
      "commit": "2ead17196c10f40af35e954dd7b42a2c48304b1e",
      "tree": "16aee7a08dda2b3dd70a9631e55321da101823d3",
      "parents": [
        "1fa079b2555a12a53a6d25956d4f371ace60edce",
        "b545e1c9e3d5989e2e889e65436524fdcfed930e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 20 18:16:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 20 18:16:15 2016 +0000"
      },
      "message": "Merge \"logd: trailing spaces in log statistics (part deux)\""
    },
    {
      "commit": "1fa079b2555a12a53a6d25956d4f371ace60edce",
      "tree": "1d0f82e2268507169de8488f1a0866a5808e5cd1",
      "parents": [
        "3080ce2fe4c4d82deb7b89b30e3c839528b23c3d",
        "d966e226809bd446bb33651b71d7934887787c1d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 20 18:15:59 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 20 18:16:00 2016 +0000"
      },
      "message": "Merge \"Revert \"logd: trailing spaces in log statistics\"\""
    },
    {
      "commit": "27425fd80d4c92c2a5074eb2c3305f5f5c17cdb5",
      "tree": "1652d7ed5aae2214c4cde52e04c8da9ac19bb518",
      "parents": [
        "9fa0215e157a58f3ded893e69ec559ab5236d1f9",
        "1dfb4de43697912b47c01eec8faae76ed34a72c6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 19 23:43:48 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 19 23:43:48 2016 +0000"
      },
      "message": "Merge \"logd: sum liblog tag messages\""
    },
    {
      "commit": "9fa0215e157a58f3ded893e69ec559ab5236d1f9",
      "tree": "a3482494012589c60f97cb2bd123364e1f099bed",
      "parents": [
        "d04fa942e5a7c16ffb5c7d852bc82fc88f281314",
        "8f83a35511e4b53ac2850e93571d9154af63f7c0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 19 23:43:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 19 23:43:23 2016 +0000"
      },
      "message": "Merge \"logd: correct duplicate message state machine\""
    },
    {
      "commit": "b545e1c9e3d5989e2e889e65436524fdcfed930e",
      "tree": "61a0eeadd37c2cf62aa72068fb36b2c7b8ed7edc",
      "parents": [
        "d966e226809bd446bb33651b71d7934887787c1d"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 19 14:51:15 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 19 15:06:42 2016 -0800"
      },
      "message": "logd: trailing spaces in log statistics (part deux)\n\nTest: manual\nBug: 30118730\nChange-Id: Iafda6f95e1b1377649e01868c81c0056c116e01b\n"
    },
    {
      "commit": "d966e226809bd446bb33651b71d7934887787c1d",
      "tree": "c3031de6c35255d26b43aad91549a8baed08e8f6",
      "parents": [
        "152b003bbfae22d10dd129d5f249daf957dc27c4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 19 22:23:03 2016 +0000"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 19 15:06:37 2016 -0800"
      },
      "message": "Revert \"logd: trailing spaces in log statistics\"\n\nCaused +/- field data to land under the Pruned column\n\nThis reverts commit 0adcc3e3e8bd6d7c57994f828ee22c104b4eb043.\n\nTest: manual\nBug: 30118730\nChange-Id: Ic75ce3a90baded19f3efc0cc77474fe5d9a8accd\n"
    },
    {
      "commit": "1dfb4de43697912b47c01eec8faae76ed34a72c6",
      "tree": "3e6c473a79c6a979cbb7b6707aed24dc64fc8a26",
      "parents": [
        "8f83a35511e4b53ac2850e93571d9154af63f7c0"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Dec 16 16:09:15 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 19 14:03:38 2016 -0800"
      },
      "message": "logd: sum liblog tag messages\n\nAs an extension to the duplicate multiple message filtering, special\ncase liblog tagged event messages to be summed.  This solves the\ninefficient and confusing duplicate message report from the DOS attack\ndetection such as:\n\nliblog: 2\nliblog: 2\nliblog: 2\nliblog: 2\nliblog: 3\n\nwhich would result in:\n\nliblog: 2\nchatty: ... expire 2 lines\nliblog: 2\nliblog: 3\n\nAnd instead sums them and turns them all into:\n\nliblog: 11\n\nliblog messages should never be subject to chatty conversion.\n\nTest: liblog-benchmarks manually check for coalesced liblog messages\n      and make sure they do not turn into chatty messages.\n      Instrumented code to capture sum intermediates to be sure.\nBug: 33535908\nChange-Id: I3bf03c4bfa36071b578bcd6f62234b409a91184b\n"
    },
    {
      "commit": "8f83a35511e4b53ac2850e93571d9154af63f7c0",
      "tree": "c9359c647b343d814f7def16b4cf022b37ecabd3",
      "parents": [
        "152b003bbfae22d10dd129d5f249daf957dc27c4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Dec 16 16:09:15 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 19 14:01:45 2016 -0800"
      },
      "message": "logd: correct duplicate message state machine\n\nInspection turned up that for the case of three identical messages,\nthe result would be a stutter of the first message only.  Added\ncomments to describe the state machine, incoming variables, outcoming\nand false condition outputs, for proper maintenance in the future.\n\nTest: gTest liblog-benchmarks BM_log_maximum* and manually check\n      for correct midstream chatty messages,\nBug: 33535908\nChange-Id: I852260d18a484e6207b80063159f1a74eaa83b55\n"
    },
    {
      "commit": "3296291cffd13af13ea9e60a8ac1138101cf8e4c",
      "tree": "0726921364b561bf21935565907f67767a723b6e",
      "parents": [
        "152b003bbfae22d10dd129d5f249daf957dc27c4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 12 10:29:17 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Dec 19 08:00:16 2016 -0800"
      },
      "message": "logd: add android::sizesTotal() function\n\nTest: gTest liblog-unit-tests, logd-unit-tests and logcat-unit-tests\nBug: 31456426\nChange-Id: I6fb6cd589227fc43d22f9336e01f1bf7e3feb24c\n"
    },
    {
      "commit": "a2c022257c5bed56fbc47de25c5d909bbe880f7b",
      "tree": "942f74b4d39c69404de7bb089c38a0cf5ff861f1",
      "parents": [
        "bb612a356a7fce97c29558d41f8fce1944313d30"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Dec 13 10:31:29 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Dec 15 16:31:51 2016 -0800"
      },
      "message": "logd: record multiple duplicate messages as chatty\n\nIf a series of messages arrive from a single source with identical\nmessage content payload, then suppress them and generate a chatty\nreport.  The checking is done on a per log id basis.\n\nThis alters the assumption that chatty messages are always at the\noldest entries, they now show up in the middle too.  To address this\nchange in behavior we print the first line, a chatty reference\nwhich internally takes little space, then the last line in the series.\n\nThis does not conserve processing time in logd, and certainly has no\nimpact on the long path of formatting and submitting log messages from\nfrom the source, but it may contribute to memory space and signal to\nnoise savings under heavy spammy loads.\n\nTest: gTest liblog-unit-tests, logd-unit-tests \u0026 logcat-unit-tests\nBug: 33535908\nChange-Id: I3160c36d4f4e2f8216f528605a1b3993173f4dec\n"
    },
    {
      "commit": "dff44709cf462a3af7eb5770c90e3ada492295b7",
      "tree": "260698ec335906df76fe1db439baa5f71089a953",
      "parents": [
        "2361ab0d3172adf472c7a8bbb7030f514543104d"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 13 11:55:19 2016 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Dec 13 13:28:08 2016 -0700"
      },
      "message": "Define range of GIDs for cached app data.\n\nTo support upcoming disk usage calculation optimizations, this change\ncreates a new GID for each app that will be used to mark its cached\ndata.  We\u0027re allocating these unique GIDs so that we can use\nquotactl() to track cached data on a per-app basis.\n\nThis change also tightens up the implementation of both the cache\nand shared GID calculation to ensure that they stay inside the valid\nranges, and includes tests to verify.\n\nTest: builds, boots, tests pass\nBug: 27948817\nChange-Id: Ie4377e5aae267f2da39a165888139228995987cb\n"
    },
    {
      "commit": "0eeb06b932f185e10377e4494475d2cdd6adfa1b",
      "tree": "70b797c0f3f752a6a76e9818640b1fadf06ca189",
      "parents": [
        "aece425166b1636de79efbddb5997ecdcea2ce03"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Dec 02 10:08:48 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Dec 09 12:40:17 2016 -0800"
      },
      "message": "utils: Add FastStrcmp.h\n\nMove existing fast\u003cstr*cmp\u003e templates for general use, pulled from\nthe implementation used in logd that dealt with speed through cache\nlocality and subroutine call mitigation.  Rename to fastcmp.\n\nTest: logd-benchmarks and based on manual profiling from the past\nBug: 31456426\nChange-Id: Ic62f4a437fc3e06ffdeaae73a6f34e197957a6b0\n"
    },
    {
      "commit": "10f4044341e95ff4504c3e8b30e26ad528ea2d4c",
      "tree": "48549f028ecc086e7a2b5a0b209789042896d6a2",
      "parents": [
        "c58f49bf1bee57e4d1a16b9f9df9441b4ab7e01a",
        "9bfd9f558b116e208aef7bdeef887ca37fcd2007"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 29 19:46:50 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 29 19:46:50 2016 +0000"
      },
      "message": "Merge \"system/core: replace EVENT_TAG_MAP_FILE with NULL\"\nam: 9bfd9f558b\n\nChange-Id: Ief7fcc4f7dd8086186b38c091fed626560ca7215\n"
    },
    {
      "commit": "1179eb8048f5861bf92b29441230381526d30e5d",
      "tree": "25a8ac14c4919e692e7c20ec612805d657eb1ea2",
      "parents": [
        "b6552f376ca2903d987faa9b05808d72952af858"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 11 09:48:56 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Nov 21 11:13:02 2016 -0800"
      },
      "message": "system/core: replace EVENT_TAG_MAP_FILE with NULL\n\nNULL represents system default.  In the future, NULL could represent\nstatic and dynamic tags, which can come from multiple files based on\nimplementation details in the liblog library.\n\nTest: gTest logd-unit-tests \u0026 liblog-unit-tests\nBug: 31456426\nChange-Id: I0e3d296de81ca299ae63d7b83781639ee67ec298\n"
    },
    {
      "commit": "2cfd0e08e97a913450713c7f0c542d095fa00aae",
      "tree": "568cbcaed4b56192ea119203bde8405cca2806cd",
      "parents": [
        "c2102a7b8f5aef906e0db89c4dc9098bc2ed2b4f",
        "16300f192b58f51baf78e180283bbcea932724f4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 18 16:10:23 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 18 16:10:23 2016 +0000"
      },
      "message": "Merge \"logd: add EXIT command\"\nam: 16300f192b\n\nChange-Id: Idd68cfba26f8fcc928db4fe2483d30e5d4f49a59\n"
    },
    {
      "commit": "c8749d510819d0ea565640adfe38ace7669c7325",
      "tree": "1ed74ee6ed325258a89f0e0830a79eed4df906d1",
      "parents": [
        "3bde05d928fb74a75144ae0eeaa25891c91234d1"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 08 13:16:59 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 17 14:42:33 2016 -0800"
      },
      "message": "logd: add EXIT command\n\nDebugging aid. Allows us to run:\n\n$ cat -n \u0027\u003cSTUFF\u003e\\0EXIT\\0\u0027 | nc -U /dev/socket/logd\n\nand the pipeline will exit once done. Without the EXIT command\nwe will have to \u003cCTRL+C\u003e out to terminate the pipeline. This is\nnecessary since Android\u0027s netcat command does not support the -q\nfeature, and having the EXIT command is faster and cleaner anyways.\n\nTest: manual as noted above.\nBug: 31456426\nChange-Id: I65333358188db85e2eb1bb6a14deed1565826ac4\n"
    },
    {
      "commit": "809dee506e000bea8aab462611e3cff016ac77ff",
      "tree": "d74cd0442b6c801fab6e85d7b00b08d4cdc73e73",
      "parents": [
        "f5964b5cf9fdf8ea4b174310e0000372f96ae88e",
        "8c41e791ed726449bd51a35f03dd6269274668c0"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 17 15:33:02 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 17 15:33:02 2016 +0000"
      },
      "message": "Merge \"libcutils: move cutils/files.h to cutils/android_get_control_file.h\"\nam: 8c41e791ed\n\nChange-Id: Ifbc00285da734859d590153a7c6cfc8e51c014f9\n"
    },
    {
      "commit": "52bd37e63373b410c009e8611508191dfbf31d30",
      "tree": "32ed2ad56a69bb6d00b2193eaaed07d813e46982",
      "parents": [
        "e631e470e059d84388f3aacfe11a3fa60a584ba7"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Nov 07 09:39:30 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 16 15:56:56 2016 -0800"
      },
      "message": "libcutils: move cutils/files.h to cutils/android_get_control_file.h\n\nfiles.[h|cpp] is bound to be abused with junk, replace with\nandroid_get_control_file.[h|cpp]. Plus some sundry cleanup.\n\nTest: gTest libcutils-tests, logd-unit-tests, liblog-unit-tests,\n      logcat-unit-tests and init_tests\nBug: 32450474\nChange-Id: Ibd4a7aa4624ea19a43d1f98a3c71ac37805d36b5\n"
    },
    {
      "commit": "49893142ec398de00e9c8ad90ed199d8bfeb19e5",
      "tree": "7932cb0cb59b77193688bffc27e32beccc993378",
      "parents": [
        "1970d994b679f5dbfa5bbfdaba2317266b50dd79",
        "b0672290e320113f4b6d8fc6bb2d1e0afe493c5c"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 20:57:16 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 20:57:16 2016 +0000"
      },
      "message": "logd: report last prune memory overhead\nam: b0672290e3\n\nChange-Id: I4b060ad4427e24170cc7a3aeae7aa9f6643ba8d6\n"
    },
    {
      "commit": "1970d994b679f5dbfa5bbfdaba2317266b50dd79",
      "tree": "62f6f218a8ff95d9bc2d2504e36c3a6b2ac107c1",
      "parents": [
        "d32e7f4703d329104941828d5280f4f05438a489",
        "6d981af12023bcaf22bfa0612a85ae4580ecb971"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 20:57:12 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 20:57:12 2016 +0000"
      },
      "message": "logd: report statistics memory overhead\nam: 6d981af120\n\nChange-Id: I69376a8783867a21f0cd85eea4b299f3d2c81a95\n"
    },
    {
      "commit": "f8ba9eb1a3e92677ea9ac9cd9c3a4eaba1b4b91e",
      "tree": "dc03c1cdcb59bccb7a1c6efc8a217d9934cf821a",
      "parents": [
        "db9ad765763ad0f71f7dfe03ba68d775b02b3ad2",
        "107e29ac1b1c297a0d4ee35c4978e79f47013e2c"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 14:43:47 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 14:43:47 2016 +0000"
      },
      "message": "logd: if eng build, be a bit more permissive about failures\nam: 107e29ac1b\n\nChange-Id: I85ebcae9f756bf2feb79e6d77ea63ad0b2ff4829\n"
    },
    {
      "commit": "21dbb8aece8eb1a41f14ff648aa8f4be188dbcfe",
      "tree": "213663e4b8a8572cefa853903086273b3b050472",
      "parents": [
        "3d2c4829a0db5912d5a77623c7c42cf1ff734d62",
        "77fdb22cf686002dfba8a24cf36666d7257b3034"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 14:43:36 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 14:43:36 2016 +0000"
      },
      "message": "logd: start logd service in logd uid\nam: 77fdb22cf6\n\nChange-Id: I38d93fb74ea4f37ee137f78063d082637b8fd68a\n"
    },
    {
      "commit": "3d2c4829a0db5912d5a77623c7c42cf1ff734d62",
      "tree": "ace8673c3a2768e13ef18d4ea08daa32e4a66b34",
      "parents": [
        "83a40b0eb28233b9f1728c12b485b8f83c8b4279",
        "d2b3291ffa1cd9c2214b4a68d72508461de57e48"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 14:43:31 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 14:43:31 2016 +0000"
      },
      "message": "logd: auditd + klogd control CAPS\nam: d2b3291ffa\n\nChange-Id: I7d8fd4a7df7ceffd90e8eaab03861ae426cbf35b\n"
    },
    {
      "commit": "83a40b0eb28233b9f1728c12b485b8f83c8b4279",
      "tree": "65f4a018875c0a6ec3b7123cd8dd541fa178f198",
      "parents": [
        "c65f2ca81faa529ba4b49f54606bb16c036c47d9",
        "d8f01807b8a49496256ccd75d49e0fd6be576424"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 14:43:26 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 14:43:26 2016 +0000"
      },
      "message": "logd: drop capabilities in logd --reinit and logd.daemon\nam: d8f01807b8\n\nChange-Id: I17f06463258e95a6cc83242cc8a8d4bb0ccb4907\n"
    },
    {
      "commit": "c65f2ca81faa529ba4b49f54606bb16c036c47d9",
      "tree": "3fffcaff3c0be85e47fe6b89408b7f00028c91ed",
      "parents": [
        "b0e425abc4cc11bab4d83d6fc248a83ee9e88126",
        "f0b8e1bce61e839d5f94fb0918423b0eda14c779"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 14:43:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 14:43:21 2016 +0000"
      },
      "message": "logd: drop libminijail dependency\nam: f0b8e1bce6\n\nChange-Id: I968916b41f82fa1cbe4f7ac37dc75c938a9c1627\n"
    },
    {
      "commit": "b0e425abc4cc11bab4d83d6fc248a83ee9e88126",
      "tree": "b7061fbdc65c2151ca4f959c8de0f72acd882db4",
      "parents": [
        "4109c433f1abeb8ee326f9d808011a62ec4fce96",
        "5b44340acb9793945b97c4a9b6e5a1e9516ea33e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 14:43:17 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 14:43:17 2016 +0000"
      },
      "message": "logd: start logd services in logd gid\nam: 5b44340acb\n\nChange-Id: Id9f27660a09e640815071dac85ed4bac78172886\n"
    },
    {
      "commit": "b0672290e320113f4b6d8fc6bb2d1e0afe493c5c",
      "tree": "41d7665bcb05a30418e4d6b1ccd195bf195302fb",
      "parents": [
        "6d981af12023bcaf22bfa0612a85ae4580ecb971"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 06 10:09:24 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 07:43:16 2016 -0700"
      },
      "message": "logd: report last prune memory overhead\n\nAn estimate based on chatty impact for all known pids, uids and tags\nand per log id if applicable, calculate the maximum last pruned\nwatermark iterator map usage and add to the Total Overhead.\n\nTest: Confirm that the Total Overhead change is negligable.\nBug: 31942525\nChange-Id: Icd2e9bc0747c3376ca0e9c90aa110c103529d98f\n"
    },
    {
      "commit": "6d981af12023bcaf22bfa0612a85ae4580ecb971",
      "tree": "53142c0b299a8d0ec5eb0a612310c43b871d2ff1",
      "parents": [
        "fc3e90689ecc452b3f0e05144df1580ad78d5d0d"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 06 09:55:21 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 07:43:16 2016 -0700"
      },
      "message": "logd: report statistics memory overhead\n\nAdd in to the Total Overhead the amount of storage we are\nusing to hold on to the statistics.\n\nTest: see that the Total Overhead accounts for about 100K\nBug: 31942525\nChange-Id: Ibe241c0bccc5a9df52395802338c8a7fc3b64104\n"
    },
    {
      "commit": "1259d9ea4ba6ff61f3bcfec0272ffbeaaca8650e",
      "tree": "2ae104fa4ed1c312b81ff18954d5c063f202c2d8",
      "parents": [
        "cc46af0fc90a44576381d0320ab1c1e69a128fdb",
        "e0b8ccd1a3db7059c56322ad6cbcb7d7c34c2954"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 04 14:43:07 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Nov 04 14:43:07 2016 +0000"
      },
      "message": "logd: inherit android_get_control_file()\nam: e0b8ccd1a3\n\nChange-Id: I7b6fc3898d2e69542309fe120122849579f91f22\n"
    },
    {
      "commit": "fc3e90689ecc452b3f0e05144df1580ad78d5d0d",
      "tree": "efc3d46b61302c57fa3aac8844dfced3f77aad6f",
      "parents": [
        "fc08963f85471302976b263459f613b1d02cef7b",
        "107e29ac1b1c297a0d4ee35c4978e79f47013e2c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 04 14:38:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 04 14:38:23 2016 +0000"
      },
      "message": "Merge changes I432016e2,Id208b11b,Ia6a38729,Icdaf9e35,I842a7a64, ...\n\n* changes:\n  logd: if eng build, be a bit more permissive about failures\n  libcutils: klog inherit android_get_control_file(\"/dev/kmsg\")\n  logd: start logd service in logd uid\n  logd: auditd + klogd control CAPS\n  logd: drop capabilities in logd --reinit and logd.daemon\n  logd: drop libminijail dependency\n  logd: start logd services in logd gid\n  logd: set executable\u0027s capabilities in file system\n  logd: inherit android_get_control_file()\n  init: service file keyword\n  libcutils: add android_get_control_file()\n  libcutils: add android_get_control_socket() test\n"
    },
    {
      "commit": "cb2314e5bd37f0a11fcb514149e49eabc4fe0f7e",
      "tree": "4c93ff97313b881ce69b150efef56769ce0c8ddf",
      "parents": [
        "360cd766953ba015eb8b3f57f48b1481130ffa29",
        "fc08963f85471302976b263459f613b1d02cef7b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 22:14:34 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 03 22:14:34 2016 +0000"
      },
      "message": "Merge \"logd: switch to using arraysize() from libbase macros\"\nam: fc08963f85\n\nChange-Id: If17fd9389ec65f379fa42096e835be2ed667f703\n"
    },
    {
      "commit": "fc08963f85471302976b263459f613b1d02cef7b",
      "tree": "60ccac4aab05bb336c57ebd666c9ad58af8ef293",
      "parents": [
        "11f8b2006827a70faf9eafabdc34b80f8237a855",
        "c8d31940985c83a54989afdc9e8e74af9417535a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 03 22:07:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 03 22:07:42 2016 +0000"
      },
      "message": "Merge \"logd: switch to using arraysize() from libbase macros\""
    },
    {
      "commit": "d1687af980d9640cd1d503c4ca37726f8df1eed3",
      "tree": "ee9595407f40e2050337b41109e9ff23b5cd374d",
      "parents": [
        "d3a2573eea19e0019c0a7e7c31e8625b101091d4",
        "6a70ded7bfa8914aaa3dc25630ff2713ae893f80"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 21:01:45 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Nov 03 21:01:45 2016 +0000"
      },
      "message": "logd: clear DUMPABLE\nam: 6a70ded7bf\n\nChange-Id: I4bcfb53d9c4a13761c80a8f2070320c85b486b0b\n"
    },
    {
      "commit": "107e29ac1b1c297a0d4ee35c4978e79f47013e2c",
      "tree": "188cebcf7aa1b9ae75191a212d63a7f48fef194f",
      "parents": [
        "c377843258d08d31a2eb7df1a577740e588d2761"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 28 15:51:03 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 13:34:27 2016 -0700"
      },
      "message": "logd: if eng build, be a bit more permissive about failures\n\nAllows us some leaway to investigate logd issues on eng builds\n\nTest: gTests logd-unit-tests, liblog-unit-tests and logcat-unit-tests\n      Manual on eng builds, bad logd.rc to fake permission issues\nBug: 32450474\nChange-Id: I432016e29e5601d67c502076ead941cecdcbebe7\n"
    },
    {
      "commit": "77fdb22cf686002dfba8a24cf36666d7257b3034",
      "tree": "e6efc3b496a38151e3af8b5943349a38443cc0d3",
      "parents": [
        "d2b3291ffa1cd9c2214b4a68d72508461de57e48"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 28 14:36:36 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 13:34:27 2016 -0700"
      },
      "message": "logd: start logd service in logd uid\n\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests\n      Manual inspect grep \u0027^Cap\u0027 /proc/\u003ctid\u003e/status for correct capabilities\nBug: 32450474\nChange-Id: Ia6a3872901969a789d4309d410dbfd5f5d17b3ce\n"
    },
    {
      "commit": "d2b3291ffa1cd9c2214b4a68d72508461de57e48",
      "tree": "105890ce6eac2cd28efee6c0a4bad5ac26edcd76",
      "parents": [
        "d8f01807b8a49496256ccd75d49e0fd6be576424"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 28 15:11:46 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 13:34:27 2016 -0700"
      },
      "message": "logd: auditd + klogd control CAPS\n\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-testsa\nBug: 32450474\nChange-Id: Icdaf9e352e86c9e140928509201da743004aeedb\n"
    },
    {
      "commit": "d8f01807b8a49496256ccd75d49e0fd6be576424",
      "tree": "e763c960cbd144db970abb8707b0d80edee12f74",
      "parents": [
        "f0b8e1bce61e839d5f94fb0918423b0eda14c779"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 31 13:49:44 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 13:34:27 2016 -0700"
      },
      "message": "logd: drop capabilities in logd --reinit and logd.daemon\n\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests\nBug: 32450474\nChange-Id: I842a7a64f0ba695acef66caf54270f9475c9f9ac\n"
    },
    {
      "commit": "f0b8e1bce61e839d5f94fb0918423b0eda14c779",
      "tree": "13732ee33523d1ac62ca7a96d0c77bfe29d7363b",
      "parents": [
        "5b44340acb9793945b97c4a9b6e5a1e9516ea33e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 28 14:49:53 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 13:34:27 2016 -0700"
      },
      "message": "logd: drop libminijail dependency\n\nUse libcap instead of libminijail.  Set CAP_SETGID before setgroups,\nthen clear it afterwards.\n\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests\nBug: 32450474\nChange-Id: I2ed027fd5efd95f76b1dd4c5791bae5f2ea94c28\n"
    },
    {
      "commit": "5b44340acb9793945b97c4a9b6e5a1e9516ea33e",
      "tree": "8eecaa8ce27e2ebc37a31894be1976780897bc5c",
      "parents": [
        "0d2a1dcb49d0d61b4a660d4f7107b8fdb48debf7"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 27 08:34:12 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 13:34:27 2016 -0700"
      },
      "message": "logd: start logd services in logd gid\n\nlogd - start as root:logd+system+readproc\nlogd-reinit - start as logd:logd\n\nToDo: start as logd:logd+system+readproc (libminijail)\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests\nBug: 32450474\nChange-Id: I42c806ca1730a7f9eb9e34f064ae31a2ef9fc678\n"
    },
    {
      "commit": "e0b8ccd1a3db7059c56322ad6cbcb7d7c34c2954",
      "tree": "fd33ec05d013ddbfde9e5bd7d331c9b6a47fd473",
      "parents": [
        "62767fe29f8aaf62470781a3cf419ba11187d178"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 27 08:21:35 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 13:34:27 2016 -0700"
      },
      "message": "logd: inherit android_get_control_file()\n\nSetup and then collect from the environment /proc/kmsg and /dev/kmsg\nfile descriptors. Do not do so for logcat --reinit.\n\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests\nBug: 32450474\nChange-Id: Ied537ca561fcd4e71a9ad9c57398a23ba23f6ced\n"
    },
    {
      "commit": "c8d31940985c83a54989afdc9e8e74af9417535a",
      "tree": "54947bfb96b3fac83838864e5db1d83f159322de",
      "parents": [
        "3a724a8f5d7876b97e4e7f39a0cfc2f0fdc87fd3"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 10:29:23 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 12:27:29 2016 -0700"
      },
      "message": "logd: switch to using arraysize() from libbase macros\n\nTest: logd-unit-tests, liblog-unit-tests \u0026 logcat-unit-tests\nBug: 32450474\nChange-Id: Iacdc4677f2c83898a7812c2af2c36e7ff7d92764\n"
    },
    {
      "commit": "6a70ded7bfa8914aaa3dc25630ff2713ae893f80",
      "tree": "65f3567908e1bc7388b91f1f76d0e2da856ca11b",
      "parents": [
        "3a724a8f5d7876b97e4e7f39a0cfc2f0fdc87fd3"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 28 14:49:53 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Nov 03 11:20:59 2016 -0700"
      },
      "message": "logd: clear DUMPABLE\n\nDo not allow anyone to see logd memory.\n\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests\nBug: 32450474\nChange-Id: Ic7377efcb7e1d3cd91b50741061037a0fb589045\n"
    },
    {
      "commit": "2bbb6d65d529082e53625a9e62bafdc231278479",
      "tree": "633b8c670771ee2db18072479701df784bcfa893",
      "parents": [
        "35f85910eec0cfc8ad9121fc64196dfd30ffebef",
        "fbe0b4554480c0ba111f76a5a19dd60d952dfab7"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 26 14:17:28 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 26 14:17:28 2016 +0000"
      },
      "message": "Merge \"logd: getTag() functional for chatty entries\"\nam: fbe0b45544\n\nChange-Id: I20705e262af4ed7c36616459b1f37dadca294277\n"
    },
    {
      "commit": "60636fa872382a8cde0440b72cdfc9032b5fa7d0",
      "tree": "8284ae19bd944113d81e95709fecd09c74d1c2f9",
      "parents": [
        "d97efe0383a8bdad7a335b268d4492c9ee5e39c6"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 24 16:22:17 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 25 21:48:33 2016 +0000"
      },
      "message": "logd: getTag() functional for chatty entries\n\ngetTag() becomes invalid when entry is dropped because mMsg\ndisappears to save space; but the per-tag spam filter depends on it\nstill being valid.  Conserve space in LogBufferElement by optimizing\nthe size of the fields, then add a new mTag field that is set in the\nobject constructor.  Add an isBinary() method.\n\nSideEffects: save 12 bytes/log message overhead on 64-bit.\nTest: define DEBUG_CHECK_FOR_STALE_ENTRIES and look for stale entries\nBug: 32247044\nChange-Id: Iaa5f416718a92c9e0e6ffd56bd5260d8b908d5c0\n"
    },
    {
      "commit": "54977be62b68a223e5828c47feb9374f4b80475f",
      "tree": "983ae443cd242b6cb6e5ccebf00210449bd8e001",
      "parents": [
        "6df644893085fe28e680224433f574759aed0065",
        "dd153ef24713a02b294b7b70bb4cd7f619309a11"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 24 23:12:55 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 24 23:12:55 2016 +0000"
      },
      "message": "Merge \"logd: address code fragility in last watermarks\"\nam: dd153ef247\n\nChange-Id: I4efa93b98429528cc0445eed55cfd593ba2c24d8\n"
    },
    {
      "commit": "dd153ef24713a02b294b7b70bb4cd7f619309a11",
      "tree": "c1bfa6a70d8072e99d5a6d9d017e9b6d1e5924d8",
      "parents": [
        "9fa133cc286f7d2f1c565668d7675b7d7d4bdc0e",
        "8fcfd85acc26f96dffb987951c33f09416e1ede7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 24 23:09:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 24 23:09:15 2016 +0000"
      },
      "message": "Merge \"logd: address code fragility in last watermarks\""
    },
    {
      "commit": "28fcac705b0c6c015b8d48c261b2895bfef13ea1",
      "tree": "68e21e5c02a840bc6106093de6181975a0356ff7",
      "parents": [
        "f99573ae8cc78cb6ceb23a3f9653e21e44db6ba3",
        "aeaaf81c2cc8366ac4f66eb3d2fc85f9b8194982"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 24 22:53:11 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 24 22:53:11 2016 +0000"
      },
      "message": "liblog: logd: logcat: Split out log/logger.h into public and private.\nam: aeaaf81c2c\n\nChange-Id: I124c69673c30bb5f2259849792ed4ca99f4d6b60\n"
    },
    {
      "commit": "aeaaf81c2cc8366ac4f66eb3d2fc85f9b8194982",
      "tree": "f71ad7073f0ab58e7cc97a0218f2d8b38883c79e",
      "parents": [
        "749a298dfd6791644cc2815989248984bf7ab2c2"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 30 13:30:33 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 24 11:12:49 2016 -0700"
      },
      "message": "liblog: logd: logcat: Split out log/logger.h into public and private.\n\nlog/logger.h pieces moved into log/log.h.  Correct for some\nminor Android Coding standards.\n\nTest: gTests liblog-unit-tests, logd-unit-tests and logcat-unit-tests\nBug: 19235719\nBug: 26552300\nBug: 31289077\nBug: 31456426\nChange-Id: I0a19fd8788eec20a582e72e4c62c04534bdb1b9a\n"
    },
    {
      "commit": "8fcfd85acc26f96dffb987951c33f09416e1ede7",
      "tree": "cd98d105d1afbfe1c3a4c083a757ab0c678a0238",
      "parents": [
        "8cf0bd75f79ed641b5841dea1d34af18c6b4d40d"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 24 08:20:26 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 24 10:43:52 2016 -0700"
      },
      "message": "logd: address code fragility in last watermarks\n\nDo not make the assumption that if worstPid is set, that the log\nbuffer id is not LOG_ID_EVENTS or LOG_ID_SECURITY. Add comments\nto prevent future over-optimization based on this assumption.\n\nMake sure we reset mLast[id] \u003d begin() when we mark it unset, but\ntell optimizer this is an _impossible_ path.\n\nSideEffects: drop two branches in all erase calls, gain an unordered\n             find() on an empty list for events and security buffers.\nTest: gTest logd-unit-tests, liblog-unit-test \u0026 logcat-unit-tests\nBug: 32247044\nChange-Id: Ic156ca2253c050c28021cedf48bedaf7bd692c09\n"
    },
    {
      "commit": "ead65031780570f1f20d10626baf612cb6092ca1",
      "tree": "521e657b23d95e999e5f391a487faf16c381d5b5",
      "parents": [
        "e69242a71bb89dd52ffd799f8ccdf2c2631752b2",
        "c75a32aae30f8cadbb5608d2fb680ef326708fcd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 21 20:17:59 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 21 20:17:59 2016 +0000"
      },
      "message": "Merge \"logd: mLastWorstPidOFSystem crash\"\nam: c75a32aae3\n\nChange-Id: Ief8a0847243a0f2661192325efac5ce965dde92a\n"
    },
    {
      "commit": "fa07f9dc4b4d101a49fba5dbbf35c88cdfec4433",
      "tree": "ccc5f7ec35452c6fe2a736f79ba520e6a3bbf393",
      "parents": [
        "c741dd48385a84161c23d7a2684e06cbfc7646a8"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 21 09:46:42 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 21 10:20:55 2016 -0700"
      },
      "message": "logd: mLastWorstPidOFSystem crash\n\nmLastWorstPidOfSystem is filled with iterator references\nthat are not from AID_SYSTEM to aid the performance. But\nwe only clear entries from the list during erase if they\nare from AID_SYSTEM. Remove the filter check in erase so\nthe stale references will be removed.\n\nThe conditions that caused this failure are difficult to\nreproduce and are rare.\n\nTest: gTests logd-unit-tests, liblog-unit-tests and logcat-unit-tests\nBug: 32247044\nBug: 31237377\nChange-Id: Ie405dd643203b816cac15eef5c97600551cee450\n"
    },
    {
      "commit": "8a7297a09f3a0d98a4a058767f6a447ef0e9d77d",
      "tree": "04081c2735ce7f9f54f5c6d23a89abe9d04e3de7",
      "parents": [
        "de3e60043ceb9c814bd7a3dabc5fd734a63835cf",
        "27d2d49f4872c26831d3e016765c62def3d2fb01"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 20 18:03:57 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 20 18:03:57 2016 +0000"
      },
      "message": "Merge \"system/core: preparation to pull back interfaces from android/log.h\"\nam: 27d2d49f48\n\nChange-Id: I604bb1d4cf62636663fa92e3d14a55887dbcae23\n"
    },
    {
      "commit": "cfd5b080af8de527d768f0ff7902c26af8d49307",
      "tree": "32295b3aeb6ba8a116592576939348d09814b0be",
      "parents": [
        "1edd61ce5d2f34ff34d015643b5915b3b1c186e8"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 17 14:28:00 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 20 08:11:39 2016 -0700"
      },
      "message": "system/core: preparation to pull back interfaces from android/log.h\n\nPoint to log/log.h where necessary, define LOG_TAG where necessary.\nAccept that private/android_logger.h is suitable replacement for\nlog/logger.h and android/log.h.\n\nCorrect liblog/README\n\nEffectively a cleanup and controlled select revert of\n\u0027system/core: drop or replace log/logger.h\u0027 and\n\u0027system/core: Replace log/log.h with android/log.h\u0027.\n\nTest: compile\nBug: 30465923\nChange-Id: Ic2ad157bad6f5efe2c6af293a73bb753300b17a2\n"
    },
    {
      "commit": "1bd1e570c653f2370a6d0523eb9dd54990337221",
      "tree": "18a14db76ad2a2f229bb41ebb29e7f79568aa06a",
      "parents": [
        "8806766621ee3a5cb482ca79afe4882c3f3eddc3",
        "6da6d37c819ece275bac7df1204cdf3693ab71f7"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 19 14:34:51 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 19 14:34:51 2016 +0000"
      },
      "message": "Merge \"logd: Use private interfaces for buffer size properties\"\nam: 6da6d37c81\n\nChange-Id: I05ec69d785c9df9c9a397947ad9f6bd4c915c078\n"
    },
    {
      "commit": "f10e27379064797acb2659afc45b54eafbfcd019",
      "tree": "e445df2a58f949ac6a2a01a1ad247ca95f647422",
      "parents": [
        "e455373b57bc09551eaa2e595bcecbd39acf6a1a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 27 13:08:23 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 18 09:49:51 2016 -0700"
      },
      "message": "logd: Use private interfaces for buffer size properties\n\nTest: gTest logd-unit-tests, liblog-unit-tests and logcat-unit-tests\nBug: 31750617\nChange-Id: I692577cfdf4bf8c93616f32df4b56786918aef1c\n"
    },
    {
      "commit": "f606721b5980ceca44813d7b0c9adde2925f11fd",
      "tree": "bcfade6b765546fc188618f878e3e764176008d0",
      "parents": [
        "f43c324ce11be28ef08ccc5ada40d165192bb7cb",
        "5740a46e4ea87100acf6a83319d8b94c5c602352"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 18 16:46:06 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 18 16:46:06 2016 +0000"
      },
      "message": "logd: use __android_log_is_debuggable()\nam: 5740a46e4e\n\nChange-Id: Idddc3c174b152b90dca915f7bf0cef654b41be3d\n"
    },
    {
      "commit": "5740a46e4ea87100acf6a83319d8b94c5c602352",
      "tree": "1d20d8976843fc377845b5f2d32bff3f95b89563",
      "parents": [
        "b5aa4e712597ce5568e07050fa38ab852412e37a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Mar 28 15:42:08 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 14 08:04:21 2016 -0700"
      },
      "message": "logd: use __android_log_is_debuggable()\n\nTest: gTest logd-unit-tests\nBug: 27566046\nBug: 31456426\nChange-Id: I9faf88263fe62ce5bba80dc2cb928e6dbe73dbb2\n"
    },
    {
      "commit": "c377c40531c051a2e39215fa32632d5af1f3f5c7",
      "tree": "2d28f629eceeca4055dfdf9655697198ea49a6e3",
      "parents": [
        "4fa6e4855b3190a803b2ca937e499fabaca7897c",
        "1f6e063e065ab54aff362892bbdad88c2c67d493"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 06 14:26:46 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 06 14:26:46 2016 +0000"
      },
      "message": "Merge \"logd: report logging memory overhead\" am: d3754ff696 am: 386630f4ce\nam: 1f6e063e06\n\nChange-Id: Ia7daa52e3d3cf68dd5dcd70ba83f8aa38ae6f8da\n"
    },
    {
      "commit": "9af33ee78c395af715e7b861f4e32272559e1fe9",
      "tree": "0316f94e1e7b6221b2c14c399af3ed81eca4f54f",
      "parents": [
        "0d762648d0b9cb29f13f3f8cb7815236078fafbd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 05 12:34:37 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 05 15:32:40 2016 -0700"
      },
      "message": "logd: report logging memory overhead\n\nOn 64 bit system, calculates to roughly 80 bytes of metadata and\nlist overhead for each entry.\n\nIn unit test example, we report 3388987 bytes of logging data and\noverhead total, showmap reports 4652K of dirty data. We still want\nto account for the remainder (fragmentation, other sources of\ninternal allocations etc).\n\nTest: see values and check math\nBug: 31942525\nChange-Id: I75f3162ce691faf1ae5a5dec18939fea535ede7e\n"
    },
    {
      "commit": "96eba22338cd59d918cea1d552f0d3af56f94970",
      "tree": "c9ef570eeb0a8a8ac3aeccb0e4ec6d85dcfa3513",
      "parents": [
        "897fa4431976f59de3a71577ec480aa207fe489a",
        "2acb41b46c0a669a0cd329cf8de7f38d7195def2"
      ],
      "author": {
        "name": "Mohan Srinivasan",
        "email": "srmohan@google.com",
        "time": "Mon Oct 03 22:47:51 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 03 22:47:51 2016 +0000"
      },
      "message": "Merge \"liblog: logd: Add android_lookupEventTag_len()\" am: 093951a230 am: aed39f1f3d\nam: 2acb41b46c\n\nChange-Id: Ifd5da3780cf05863b71fad9583b1b83f4962b46f\n"
    },
    {
      "commit": "807e40ecc9786755e2f74a7a6a9b20c812588119",
      "tree": "fecfeb7ccd2f8cb3bd5afdfd4a902f17345b0d6f",
      "parents": [
        "57513bd5a359f735894b39f386e235cce9524a9b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 22 09:56:51 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 03 11:08:34 2016 -0700"
      },
      "message": "liblog: logd: Add android_lookupEventTag_len()\n\nAllows us to mitigate the impact of MAP_PRIVATE and copy on write by\ncalling android_lookupEventTag_len instead of android_lookupEventTag,\nand delaying the copy on write impact to the later.  We return a\nstring length in a supplied location along with the string pointer\nwith android_lookupEventTag_len(const EventTagMap* map, size_t* len,\nint tag).  The string is not guaranteed to be nul terminated.  Since\nandroid_lookupEventTag() called even once can cause the memory\nimpact, we will mark it as deprecated, but we currently have no\ntimeframe for removal since this is a very old interface.\n\nAdd an API for __android_log_is_loggable_len() that accepts the non\nnull terminated content and fixup callers that would gain because the\nlength is known prior to the call either in the compiler or at\nruntime.  Tackle transition to android_lookupEventTag_len() and\nfixup callers.\n\nOn any application that performs logging (eg: com.android.phone)\n\n/proc/\u003cpid\u003e/smaps before:\n\nxxxxxxxxxx-xxxxxxxxxx rw-p 00000000 fd:00 463 /system/etc/event-log-tags\nSize:                 20 kB\nRss:                  20 kB\nPss:                   1 kB\nShared_Clean:          0 kB\nShared_Dirty:         20 kB\nPrivate_Clean:         0 kB\nPrivate_Dirty:         0 kB\nReferenced:            0 kB\nAnonymous:            20 kB\nAnonHugePages:         0 kB\nSwap:                  0 kB\nSwapPss:               0 kB\nKernelPageSize:        4 kB\nMMUPageSize:           4 kB\nLocked:                0 kB\nVmFlags: rd wr mr mw me ac\n\n/proc/\u003cpid\u003e/smaps after:\n\nxxxxxxxxxx-xxxxxxxxxx rw-p 00000000 fd:00 1773 /system/etc/event-log-tags\nSize:                 20 kB\nRss:                  20 kB\nPss:                   1 kB\nShared_Clean:         20 kB  (was 0kB)\nShared_Dirty:          0 kB  (was 20kB)\nPrivate_Clean:         0 kB\nPrivate_Dirty:         0 kB\nReferenced:           20 kB  (was 0kB)\nAnonymous:             0 kB  (was 20kB)\nAnonHugePages:         0 kB\nSwap:                  0 kB\nSwapPss:               0 kB\nKernelPageSize:        4 kB\nMMUPageSize:           4 kB\nLocked:                0 kB\nVmFlags: rd wr mr mw me ac\n\nAdded liblog-unit-tests --gtest_filter\u003dliblog.event_log_tags to\ncheck for Shared_Clean: to not be 0 and Anonymous: to be 0 for\nall processes referencing event-log-tags.  Which can include multiple\nreferences to /system/etc/event-log-tags and future possible refs to\n/data/misc/logd/event-log-tags and /dev/event-log-tags.  We want\nfailure messages to help point to errant code using the deprecated\ninterface.\n\nThis change saves 1/4MB of memory or more on a typical system.\n\nTest: gTest liblog-unit-tests\nBug: 31456426\nChange-Id: I9e08e44d9092bd96fe704b5709242e7195281d33\n"
    },
    {
      "commit": "c0a92b4a94c646fadad6e350dc0cf81c55bf72b2",
      "tree": "a1a5b58d7115630ca60298dcb9ff9540308a0ac3",
      "parents": [
        "9bb1f2f915bbf5c385b62360432f1847c8575248",
        "a8d0a469566d462dad94e78c3f7582489b0568ac"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 30 22:17:47 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 30 22:17:47 2016 +0000"
      },
      "message": "logd: logcat: Replace log/log.h with android/log.h am: 0dd4431072 am: 0f76f04072\nam: a8d0a46956\n\nChange-Id: I7c43316eef4ae12e666ea6a0126a38ac571dd41e\n"
    },
    {
      "commit": "a06a6509d9daa762532642a395082b0eed3101c7",
      "tree": "e5a5295065eac42dfba92d42391a021d62025e10",
      "parents": [
        "519bdbf0b42570890135267a7f13b3811d476b6e",
        "13c68b09d9575ee81745df54c5ea8cad7d15e139"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 30 22:17:08 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 30 22:17:08 2016 +0000"
      },
      "message": "liblog: logd: logcat: deprecate log/log_read.h am: 004cd3c55d am: 78a459a8c8\nam: 13c68b09d9\n\nChange-Id: Icaab3eedecad8f55d8d1291b3414da5c12cec287\n"
    },
    {
      "commit": "0dd4431072cce3c62876b728cb20aa5b77b11a8d",
      "tree": "0b74770f2695473c01ddb2297726896bf4d8c9a1",
      "parents": [
        "23ed4c242a01052696dde84babd7631a7ec5a691"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 28 15:54:45 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 30 12:47:05 2016 -0700"
      },
      "message": "logd: logcat: Replace log/log.h with android/log.h\n\nShould use android/log.h instead of log/log.h as a good example\nto all others.\n\nTest: Compile\nBug: 26552300\nBug: 31289077\nChange-Id: If4c9711eb57267d4707b03d54a932af9de241b13\n"
    },
    {
      "commit": "004cd3c55def10a92888295a9bad5fd0a18b725e",
      "tree": "6c2e251f63f58ac23cf4e6053df03bf2f9513a45",
      "parents": [
        "8eaaac010320b722a653f04c3b4afd98f65cb3ff"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 28 08:38:21 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 30 12:47:05 2016 -0700"
      },
      "message": "liblog: logd: logcat: deprecate log/log_read.h\n\nAlways used in combination with log/logger.h except in log_time.cpp,\nand not used externally.  As a result liblog has to support stl, a\nsmall price to pay since goal is to convert liblog to C++ internally.\n\nTest: compile\nBug: 31456426\nBug: 26552300\nBug: 31289077\nChange-Id: I72828ec807d0a2c8e40bbdebd7a69f147a7ca5a9\n"
    },
    {
      "commit": "52cfb1cae512e887a09a95b81be335387ac5b757",
      "tree": "6f63ea24d90ddbed3c1438924eeb6c4898d84def",
      "parents": [
        "558217ed43ca322d7c4abe2da78ef3ceceb5bd98",
        "1e9bd2d6e12a21744b1d082ad989753f3c1f2169"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 02 17:47:46 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 02 17:47:46 2016 +0000"
      },
      "message": "Merge changes I38c76bb2,I81a55e92 am: 3aaca7dd60 am: 803e6a71f8\nam: 1e9bd2d6e1\n\nChange-Id: I57a8ca74e8ac4e61d42348b8c6a454ab1aa251cf\n"
    },
    {
      "commit": "43a5f31e94513d4412ad1f552fd35d04e480a658",
      "tree": "6ee18e3b277e89e33d00d01e704e865b8e1bb29b",
      "parents": [
        "1eefca281ee837d183e49951ae29683d8665129a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 01 15:48:36 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 02 07:41:27 2016 -0700"
      },
      "message": "logd: clear all from non system user status request\n\npruneRows not necessarily ULONG_MAX when uid not system source,\nallow for speed up for status response if pruneRows exhausted.\n\nChange-Id: I38c76bb20215e3d96513a575e2e3bc85a5e5b41c\n"
    },
    {
      "commit": "1eefca281ee837d183e49951ae29683d8665129a",
      "tree": "22238d5b7961feb6c0bd6fd0317855227b5b9191",
      "parents": [
        "37686d446d55139a7509d7d7213f4f386f99c0f4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 01 07:28:44 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 02 07:41:27 2016 -0700"
      },
      "message": "logd: crash in prune mLastWorstPidOfSystem\n\nmLastWorstPidOfSystem is supposed to be indexed by element-\u003egetPid()\n\nBug: 31237377\nBug: 30797725\nBug: 30688716\nChange-Id: I81a55e92f175ded1c571a0aa8836736d86b36b1d\n"
    },
    {
      "commit": "af3623281f698ecb88e98d1a3cfc1b99fcd33537",
      "tree": "10cd3af7aa4b9ff83f3ca12605c2fdbd5da23838",
      "parents": [
        "8e5cb037c46ce72516598ee2d1b81c57f61cdd97",
        "098b5887c68b1fcfee6882c2338fc9f59e9ea9e4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Aug 24 16:10:08 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 24 16:10:08 2016 +0000"
      },
      "message": "Merge \"logger: validate hdr_size field in logger entry\" am: fcf7ab8b1b am: 2d562c9dce\nam: 098b5887c6\n\nChange-Id: I4d067039a766e7079a91eb56d2ffb8d68aba58b5\n"
    },
    {
      "commit": "2d562c9dce78098cef1dfd9d8658c777a4c973af",
      "tree": "070fffda06859c76934a0c450fe3f5f88ff988c9",
      "parents": [
        "8b1f7b595c51268086d89e830d1046d123160ca3",
        "fcf7ab8b1b0a50afa4bb9f41cb0d5c0db5fc417d"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Aug 24 16:05:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 24 16:05:04 2016 +0000"
      },
      "message": "Merge \"logger: validate hdr_size field in logger entry\"\nam: fcf7ab8b1b\n\nChange-Id: Ic88fe616256ab4949040771d3bed1dfb823ab981\n"
    },
    {
      "commit": "305374cf0f8cf28b58a108cf4f45df92fc0dde86",
      "tree": "4f7ae56a180ae568508f5da1f4f83e25a054d712",
      "parents": [
        "82b67fff06363c8e7a17058cb5ce748f21a27f11"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Aug 18 14:59:41 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Aug 23 14:51:50 2016 -0700"
      },
      "message": "logger: validate hdr_size field in logger entry\n\n- check hdr_size to make sure it is in the expected range\n  from sizeof entry_v1 to entry (entry_v4).\n- alter msg() method to report NULL on invalid hdr_size\n- alter all users of msg() method.\n\nBug: 30947841\nChange-Id: I9bc1740d7aa9f37df5be966c18de1fb9de63d5dd\n"
    },
    {
      "commit": "f9fb584b664ab60c1d2ce7162dac262f8fd14ff3",
      "tree": "403c3b000ae4469bc71695115543ccb4f232bb35",
      "parents": [
        "a8ce875cfbd7d195370103ca2962c3084c6d900d",
        "6d2e1c73a34b156bf229ffbdba26cae66b6b42c9"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Aug 12 14:38:18 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 12 14:38:18 2016 +0000"
      },
      "message": "Merge \"logd: klogd crash (part deux)\" am: 96c36d35ce am: e36dbdda43\nam: 6d2e1c73a3\n\nChange-Id: Ib31392aa400b744e144788792199931760568281\n"
    },
    {
      "commit": "e36dbdda431ef685fdc457ec8ab0add8d58df1ef",
      "tree": "d196dff93e1c8e77265b2e3adac503bcff3994cd",
      "parents": [
        "40efc4c664590ab1d41f2cb030ecb485c54fedde",
        "96c36d35cef8fa07664c973a615f9e8752ac91c3"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Aug 12 14:30:50 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 12 14:30:50 2016 +0000"
      },
      "message": "Merge \"logd: klogd crash (part deux)\"\nam: 96c36d35ce\n\nChange-Id: I95166c1a629007acf2da6d39a05a6586ce38177f\n"
    },
    {
      "commit": "83b247891cea88347b759d638814cea61995d2ca",
      "tree": "8f59d4fe32b05c76314e2bb0a41799f933960f55",
      "parents": [
        "07f14c9cdde718bface371d075ccc7f8bf16f098"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Aug 11 16:07:10 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Aug 11 16:13:01 2016 -0700"
      },
      "message": "logd: klogd crash (part deux)\n\nLogBuffer::pidToUid(pid_t pid) { return stats.pidToUid(pid); }\nneeds to have LogBuffer::lock()/unlock() to prevent unordered_map\ndata corruption. This can lead to multiple symptoms, crashes and\ncontinuous spins on corrupted iterators.\n\nBug: 30688716\nBug: 30050636\nBug: 30614675\nBug: 25620123\nBug: 30792935\nChange-Id: I1d8fec8e5fda98c6a08645e7456b081507696b3c\n"
    },
    {
      "commit": "fe51e78209ba94eb49b2b2ea14663f1b6461773c",
      "tree": "53306f2c6a1d203f239b80993f8da3940869d0fb",
      "parents": [
        "0ce32b03e4732dbf018d539efb647c3ccb9b4691",
        "73ded18d319604f8562fd507c4525fa217a3782c"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Aug 09 14:50:26 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 09 14:50:26 2016 +0000"
      },
      "message": "Merge \"logd: klogd crash\" am: e23e0914ff am: 5118d8f633\nam: 73ded18d31\n\nChange-Id: I6797f0120af2e933611374f63b29b480dd8b7ed7\n"
    },
    {
      "commit": "5118d8f633ea71fc1b65ef927f00b369079ed711",
      "tree": "ded33ae5a2979f196f5836e124df94caa097c662",
      "parents": [
        "f2f4e784a451bdf4f13767ab1112e5601b55ed9f",
        "e23e0914ff602f9f9de823b9890a9b83be6e11ec"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Aug 09 14:44:29 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 09 14:44:29 2016 +0000"
      },
      "message": "Merge \"logd: klogd crash\"\nam: e23e0914ff\n\nChange-Id: I8c99431fe8687365e5af615ce7c231ac7029558a\n"
    },
    {
      "commit": "a146a779e2154c51c87b140e06c456d010af1197",
      "tree": "1c576d5639a315cd13c5e64b5dd9cfe1e8554faa",
      "parents": [
        "9cd828b8589a64e79cbd6aa7dc324fcdba75dd73"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Aug 05 08:16:37 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Aug 08 09:58:28 2016 -0700"
      },
      "message": "logd: klogd crash\n\ndmesg parser could wrap taglen limit resulting in out of bound\naccesses. Can lead to crash or data corruption.\n\nFixed an issue with two-word tag parsing. Switched to case\ninsensitive tag content matching. Added a few extra limit\nchecks that could also wrap, simplified the parsing, then added\nmeans to stop using hard coded constants.\n\nBug: 30688716\nBug: 30050636\nBug: 30614675\nBug: 25620123\nChange-Id: Iae4f664f63ef7b842d82eaa1638b6d7a0d28fd18\n"
    },
    {
      "commit": "12ad1c6dc4e1149a332ae154a37f3f3d830da959",
      "tree": "63ff37e255197c2f66dbfe3984793de9611813f9",
      "parents": [
        "54c7d892a167a47beac5615cd6e3d4770c573fd2",
        "43da1271b13672987d12dacce058c9bc29498215"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 03 16:39:48 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 03 16:39:48 2016 +0000"
      },
      "message": "Merge \"Fix google-explicit-constructor warnings in logd.\" am: 33bf662195 am: 7e74e81646\nam: 43da1271b1\n\nChange-Id: I886845d655183c23df92d76dbfa99ad040ee246f\n"
    },
    {
      "commit": "7e74e816460f0c130b6870f5251b03d4218c80da",
      "tree": "acac1439fb4bd5992e30d69c611755919caa640d",
      "parents": [
        "963de553421a94a449c74f8b13ff3aa57d646cdf",
        "33bf662195fb61d582ebe7c8c1057297de346e92"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Aug 03 16:34:20 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 03 16:34:20 2016 +0000"
      },
      "message": "Merge \"Fix google-explicit-constructor warnings in logd.\"\nam: 33bf662195\n\nChange-Id: Ib3f3dd92b3339f778dec8dd9778d5e3cbba5ba0c\n"
    },
    {
      "commit": "9e70ba6352ad1ee4fdb3f70a8945c2985638de77",
      "tree": "8c133f336ab8ec13367783970c5c1af50e33996c",
      "parents": [
        "c97b73aa83fc7b80b60d88d856675d4ab502296d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 02 11:31:44 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Aug 02 11:31:44 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings in logd.\n\nBug: 28341362\nChange-Id: I5b419c40593982925034e9b7217b0eb53c51adcb\nTest: build with WITH_TIDY\u003d1\n"
    },
    {
      "commit": "cfa32e2d5d103443f34a47ff3b26cf6c7f67c47b",
      "tree": "033d3579d12a578cfebb247f7432ad223e9cd513",
      "parents": [
        "9c23e551893fc6b944680d6dc002144bdc321607",
        "e59bc67fa48e3acf3a7f401c5f669e8ca5be6756"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jul 29 17:06:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 29 17:06:44 2016 +0000"
      },
      "message": "Merge \\\\\\\"Fix google-explicit-constructor warnings in system/core.\\\\\\\" am: 6dc68cb5f9 am: 89cc78b77f\nam: e59bc67fa4\n\nChange-Id: I28613acd85ddcbd0b6f285cdfe046b283b49bd83\n"
    },
    {
      "commit": "89cc78b77ff162d061a4bb0cc920c48a1ac3ed91",
      "tree": "466ea17fd124a6b52e3b5c0d4fe661927732d29b",
      "parents": [
        "6d287b3de7245061d7917852063064bbf281ed57",
        "6dc68cb5f97a2f4fd3e0d105f34cd29dd73e0da5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Jul 29 17:01:17 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 29 17:01:17 2016 +0000"
      },
      "message": "Merge \\\"Fix google-explicit-constructor warnings in system/core.\\\"\nam: 6dc68cb5f9\n\nChange-Id: I5a010465364b6e14423b19e8c0f9cffa58ee3152\n"
    },
    {
      "commit": "034c475931e8e4da54b499c0056121490f029865",
      "tree": "d07eac290b1d3744cd60ebe76486e0c2c937ea3d",
      "parents": [
        "02ccdc5db9bb39488a3fe22a907b3211c3a464b9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Jul 12 13:50:44 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Jul 26 11:26:01 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings in system/core.\n\n* Declare explicit conversion constructors.\n* Add NOLINT for implicit conversion constructors.\n* Fix also some misaligned indendations.\n\nBug: 28341362\nChange-Id: Idf911f35923b408d92285cc1a053f382ba08c63e\nTest: build with clang-tidy\n"
    },
    {
      "commit": "eeb2d263084cceeeaad35517b88c82b9ce540449",
      "tree": "153c6e67557133594c5a25bd4092b862a10bdef0",
      "parents": [
        "1e08e60f477942a439502d686eb94a245295d1da",
        "0b4a63d2127b553538262d552d3e4aba8f08733a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jul 22 04:10:05 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jul 22 04:10:05 2016 +0000"
      },
      "message": "logd: klogd: deal with htc modified printk\nam: 0b4a63d212\n\nChange-Id: I93b6c4e80210ea20a49751a33f768afa106a2d66\n"
    },
    {
      "commit": "8e7e71c56a4774a034bcf1b220a12a9439356413",
      "tree": "553ab63b164f0b9ccac9585860503650eda8777b",
      "parents": [
        "4476929073ba0e41b60cd6911975ef1a7e7caa9c",
        "02ccdc5db9bb39488a3fe22a907b3211c3a464b9"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jul 20 20:37:41 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 20 20:37:41 2016 +0000"
      },
      "message": "Merge \\\"logd: auditd: suppress multiple identical avc: messages to kmsg\\\"\nam: 02ccdc5db9\n\nChange-Id: I65f93004d1795e025d99ca43aa9c45c39c1c2896\n"
    },
    {
      "commit": "02ccdc5db9bb39488a3fe22a907b3211c3a464b9",
      "tree": "a538cf273b393a62fd87a355a3f8d68e8e63191d",
      "parents": [
        "896c6b14ae5df2749452fd31ca7c5d68086b8af3",
        "4d205f8975dd0fa95f5c578ed9ad322ee579b988"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 20 20:30:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 20 20:30:52 2016 +0000"
      },
      "message": "Merge \"logd: auditd: suppress multiple identical avc: messages to kmsg\""
    },
    {
      "commit": "8c345d18311cc9d311a67f82a1e44b477afe45c1",
      "tree": "14d9943a4c35a463a5160c53d7a2b8861407d5a9",
      "parents": [
        "0d039c4c4467a721cbde081806b50497257d59bb",
        "d3dfd9572851de6e57559b6691e3b8ee0eed5ee5"
      ],
      "author": {
        "name": "Jorge Lucangeli Obes",
        "email": "jorgelo@google.com",
        "time": "Wed Jul 20 15:07:32 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 20 15:07:32 2016 +0000"
      },
      "message": "Merge \\\"logd: Use Minijail for privilege dropping.\\\"\nam: d3dfd95728\n\nChange-Id: I4ee161fac939c57f273e4af669c3e845b81a4b45\n"
    },
    {
      "commit": "0b4a63d2127b553538262d552d3e4aba8f08733a",
      "tree": "4307ce9a0248676080e489f3dcc33361432555f8",
      "parents": [
        "df5d12850aa114c3cd5b2913762524c55d8d2b37"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jul 15 08:54:03 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jul 19 11:13:14 2016 -0700"
      },
      "message": "logd: klogd: deal with htc modified printk\n\nSkip leading \u0027c0  32767 \u0027 and place pid (32767 in example) into pid\nfield of log record.\n\nBug: 29831823\nChange-Id: I9fcd3cb0235dfcad78627736712a20d2dc1250cc\n"
    },
    {
      "commit": "df5d12850aa114c3cd5b2913762524c55d8d2b37",
      "tree": "c2f55b3490686dc67209ff1a00bf0f9a1fd7022d",
      "parents": [
        "2d737011d6ba4389b15c7ac62b8964208391b884"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jul 07 09:24:51 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jul 19 11:13:14 2016 -0700"
      },
      "message": "logcatd: trampoline persist.logd.logpersistd to logd.logpersistd\n\n(cherry pick from 2591d483c83a09eb8689e6e7869b4ac0bfe418db)\n\nBest practices so that device can set logd.logpersistd properties.\nValues can be overriden with trampolines for persist.logd.logpersistd\nvalues except as designed for empty content to keep out of the way.\n\nThis allows us to set logd.logpersistd* for a non-persistent collection\nthat does not survive a reboot, and to use persist.logd.logpersistd*\nfor persistent collection that does survive a reboot.\n\nAdded logd.logpersistd.enable to gate when logpersist service can be\nrun allowing the properties to be adjusted safely prior to this state\nas is the case for device property.\n\nNB: /init will complain when trying to trampoline an empty property,\n    this is acceptable for functionality, but may be considered\n    annoying from the logging perspective.\n\nBug: 28788401\nBug: 28813587\nBug: 28936216\nBug: 29831823\nChange-Id: I97317e8eedfae4daa8e3ef39e64e7c5c23d8b573\n"
    },
    {
      "commit": "2bbdbe85410d3d076e5984ea9a5fa6f2cbbda6e2",
      "tree": "f3c60452f0232b46742d330978aff90604d9975a",
      "parents": [
        "ddbcecec3a28b0916c1f7f098c3e6995d46687de"
      ],
      "author": {
        "name": "Jorge Lucangeli Obes",
        "email": "jorgelo@google.com",
        "time": "Fri Jul 15 13:57:08 2016 -0400"
      },
      "committer": {
        "name": "Jorge Lucangeli Obes",
        "email": "jorgelo@google.com",
        "time": "Tue Jul 19 11:15:06 2016 -0400"
      },
      "message": "logd: Use Minijail for privilege dropping.\n\nMakes code smaller, removes duplication. Using Minijail also allows\nadding further sandboxing down the road.\n\nBug: 30156807\nChange-Id: I8fa242fba545049ee82f6655fe6ecc14c53fcab7\n"
    }
  ],
  "next": "4d205f8975dd0fa95f5c578ed9ad322ee579b988"
}
