)]}'
{
  "log": [
    {
      "commit": "3f48fa9cb2e4a4dcc4e7923347a0a0c301162c96",
      "tree": "af16e0af0e82c5b74076efcc3bac3f2a4488e180",
      "parents": [
        "d888e343b7551b1b93522ffb23b53238fa19c18e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 22 08:41:22 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 22 13:57:31 2018 -0700"
      },
      "message": "bootstat: refine \"Kernel panic - not syncing\"\n\nProvide some easy kernel panic subreasons mined from last kmesg,\ngenerates a canonical boot reason (system boot reason) that\nmay aid triage.\n\nNotably report kernel_panic,hung if [khungtaskd] triggers on\na livelock condition, forms a signals on the dashboards.\n\nHelper function getSubreason modified to optionally enable checking\nfor a single quote resulting in a refactoring to ease maintenance of\nthe termination detection in the face of single bit errors heuristics.\n\nTest: boot_reason_test.sh\nBug: 63736262\nBug: 33808187\nChange-Id: I7fdd1e57e7a26095738175074306f0d2d59b1d69\n"
    },
    {
      "commit": "39cc3e70734779503db0ddaf2a6fe604cac08f8d",
      "tree": "24f3584ed6bea079b8c5c598f59920ccb25b1f6e",
      "parents": [
        "855d205817f642652d0944a3002ec977d5a47e4f"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Mar 19 15:16:29 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Mar 20 13:11:44 2018 -0700"
      },
      "message": "bootstat: allow kernel_panic,sysrq to propagate subreason\n\nAllow for a daemon to write to last kmsg to propagate a detailed\nsubreason to kernel_panic,sysrq actions.  A minor refactor moves\ncommon code into a helper function getSubreason for retrieval and\nbit error correction operations.\n\nA sysrq crash generally produces a kernel-provided message:\n    SysRq : Trigger a crash\nwhich is used to generate a canonical boot reason kernel_panic,sysrq.\nA user daemon could write to /dev/kmsg just prior to the sysrq with\n    SysRq : Trigger a crash : \u0027\u003csubreason\u003e\u0027\nto change the canonical boot reason to kernel_panic,sysrq,\u003csubreason\u003e.\n\nAdministration added pending kBootReasonMap entries present in TRON.\n\nTest: manual echo into /dev/kmsg and /proc/sysrq-trigger and check\nTest: boot_reason_test.sh\nBug: 33808187\nBug: 63736262\nChange-Id: Ibf5432737e5a3449ebe40a8c6cf2d3e912ed6bbc\n"
    },
    {
      "commit": "855d205817f642652d0944a3002ec977d5a47e4f",
      "tree": "8b16251f38dbb28899b73da632a8af4cb081bc33",
      "parents": [
        "ef454589e4c14e2978e11388d4cc81991182e832"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Mar 20 11:44:38 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Mar 20 13:10:16 2018 -0700"
      },
      "message": "bootstat: test error out only on first bad bootloader reason\n\nHopefully the quick property test is first, setting the stage for\nignoring future failures.  This solves a problem with multiple\ntest failures directly attributed to a CTS compliance issue\nwith the bootloader\u0027s boot reason.  One test fails, the remainder\nget a pass on this one issue.\n\nTest: boot_reason_test.sh\nBug: 63736262\nChange-Id: Id56946b6f2f3a33d65bd1830543838f153290759\n"
    },
    {
      "commit": "281932803db4a5c05f5ec0f1573dd48b4b949b46",
      "tree": "f67720a5534b00b67e1c0da640e6ecae4df452b4",
      "parents": [
        "8aa36c67f82f0c7abdf6f43cbb37cc64e2157076"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 09:05:59 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 15:47:27 2018 -0700"
      },
      "message": "bootstat: add support for suppressing needle match on output\n\nFor aliasReasons allow one to optionally suppress needle for output\nmember using a \u003cbang\u003e (!) character prefix.\n\nTest: boot_reason_test.sh\nBug: 63736262\nBug: 74595769\nChange-Id: If35518c08cf909c6c78a16275e9d8dfd0ff839a9\n"
    },
    {
      "commit": "8aa36c67f82f0c7abdf6f43cbb37cc64e2157076",
      "tree": "337e38ed21e0e3b7d794925ad93b809f8fbfd610",
      "parents": [
        "f4be06450a209aaf9c75fc4dc59e7e519a312ee9"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 11:00:14 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 15:47:27 2018 -0700"
      },
      "message": "bootstat: usb and rtc refinement\n\nFor all known cases, if usb is present in the bootloader reason,\nthen it is actually reporting a cold,charger canonical boot reason.\nThis signifies that the device was powered down, and was woken\nup by the charger being connected.\n\nFor all known cases, if rtc is present in the bootloader reason,\nthen it is actually reporting a cold,rtc canonical boot reason.\nThis signifies that the device was powered down, and was woken\nup by the rtc clock.\n\nTest: boot_reason_test.sh\nBug: 74595769\nBug: 63736262\nChange-Id: I04bede0b7ccaa1b859943f7def93521a8f7b25c6\n"
    },
    {
      "commit": "25900dd77254e568432f5055ab5426fcb932537e",
      "tree": "f1cf79f13cc4ab05cfc782c25e6724add03fdf11",
      "parents": [
        "1e7d1c77fa384c0016da66781a5a10a3fd61f85a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 09:05:59 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 11:41:17 2018 -0700"
      },
      "message": "bootstat: add support for regex in aliasReasons and powerkeys\n\nAdd support for regex in aliasReasons for the alias member.  Use this\nnew feature to check powerkey|power_key|PowerKey for a single entry.\n\nTest: boot_reason_test.sh\nBug: 63736262\nChange-Id: Ia6add99b9e33f3197643dbaab88dde20aa726f90\n"
    },
    {
      "commit": "1e7d1c77fa384c0016da66781a5a10a3fd61f85a",
      "tree": "989d3d38685cffe1c0084b1e6d17ae9df783f3b1",
      "parents": [
        "2b820536e6e3a0a939ffa34a2ed63523e87166d6"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 08:57:20 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 10:37:03 2018 -0700"
      },
      "message": "bootstat: alias underline to space in bit error rate handling\n\nWhen we are matching existing known boot reasons, we should try with\ncompliant underlines first, then again with underlines replaced with\nspaces.  Replace references to Ber with BitError for maintenance\nclarity.  Replace helper functions with C++11 lambdas.\n\nTest: boot_reason_test.sh\nBug: 63736262\nChange-Id: I91b865013513526a55a85523080c7127f198968c\n"
    },
    {
      "commit": "2b820536e6e3a0a939ffa34a2ed63523e87166d6",
      "tree": "a049429b9d2caea1a99cd5877abb84fda5941a5d",
      "parents": [
        "853bb80e58fa8f6cea6bead5cc36370a3fe8901e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 08:53:34 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 10:36:53 2018 -0700"
      },
      "message": "bootstat: comment out duplicate entries in kBootReasonMap\n\nTwo entries can be reused. The third \"unknown\" entry is not really\na duplicate since the kUnknownBootReason is not checked.  Duplicate\nentries reused in the future, should have\nanalysis/uma/configs/clearcut/TRON/histograms.xml updated first.\n\nTest: boot_reason_test.sh\nChange-Id: If2071a18160dc2c93e851fecc6b8c11fc76c9845\n"
    },
    {
      "commit": "853bb80e58fa8f6cea6bead5cc36370a3fe8901e",
      "tree": "dd7900d4ed1f044202bbd90696745ad81a1b298d",
      "parents": [
        "450b1afcb5e3f27763029cc608e6c3e842761af4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 08:44:56 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Mar 16 09:39:17 2018 -0700"
      },
      "message": "bootstat: 3.18 kernel does not report \"SysRq : Trigger a crash\"\n\nUse an alternate means to determine that the sysrq crash was\nrequested.  Also, to be CTS compliant, the kernel_panic subreason\nmust be in lower case.\n\nTest: boot_reason_test.sh\nBug: 74595769\nBug: 63736262\nChange-Id: Ica06960ce62d220a909006e365951376d672b7e6\n"
    },
    {
      "commit": "7f5a562177d321bd09e9474f13d118bc01f31a24",
      "tree": "15284c053e9cd8d00fac509474750816f8b7fe82",
      "parents": [
        "39273df6516a990f593d89d6259cc89ac6bbecbd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 15 13:12:57 2018 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 15 16:42:31 2018 -0700"
      },
      "message": "bootstat: test: regression from \"Fix perfomance degredation from BootSequence atom\"\n\nAdded --set_system_boot_reason to expected filter\n\nTest: boot_reason_test.sh\nBug: 74595769\nBug: 63736262\nBug: 72864061\nChange-Id: Ie912d097fb6468dd826fd9422758fb9fb3e1ee29\n"
    },
    {
      "commit": "4892bbf8d214013026d1ff7ab50fdafda2e8175d",
      "tree": "7dc97f7926dc63068f166cefadb377e8fb750485",
      "parents": [
        "fd01164a8d3f350abf2ba26f6ff693d7ec4afa0e"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Feb 13 18:08:53 2018 +0800"
      },
      "committer": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Feb 14 03:03:28 2018 +0000"
      },
      "message": "Fix PDK build\n\nThis commit disables \"bootstat\" in PDK builds because \"bootstat\" depends\non \"libstatslog\" (from \"frameworks/base\") which is not included in PDK\nbuilds as well.\n\nTest: Build a target (described in http://b/72961456) with\n`platform.zip` built from master FSK source tree.\n\nBug: 72961456\nChange-Id: I06b1555694510e17ea82d5c6dfcdeaf99b905e4d\n"
    },
    {
      "commit": "79a4ee260bd74983e46d43c3e7da008156bf96dc",
      "tree": "135e910894d9262290de12a8e0bf413c89fa1ab9",
      "parents": [
        "765516ecafced7f7cb82c992dee810583890ea2d"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 26 14:31:04 2018 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 26 14:31:04 2018 -0800"
      },
      "message": "bootstat: Add more boot reasons.\n\nBug: none\nTest: none\nChange-Id: I483e4e2c6ea4219ac21b64a24bfac58c2919a40b\n"
    },
    {
      "commit": "b91021a2a8081f727d30503a2106b8f5f782d127",
      "tree": "f21c2813823d94515a0dbfee2af89cbd2b6d54ed",
      "parents": [
        "ac4f4721a0bc5e8fb79ada370b4591215d111b6d",
        "b607daec9443990cab2c4f47df04d949c0c2793d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 09 00:03:22 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 09 00:03:22 2018 +0000"
      },
      "message": "Merge \"bootstat: Add more boot reasons.\""
    },
    {
      "commit": "b607daec9443990cab2c4f47df04d949c0c2793d",
      "tree": "e5a47a036a2bf7ea7c6174852a43f9a05511fabc",
      "parents": [
        "df9fbc7d75ba4148c4849924bf945fd44f01abb3"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 05 14:42:55 2018 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 05 14:42:55 2018 -0800"
      },
      "message": "bootstat: Add more boot reasons.\n\nThese appear to be winding down...\n\nBug: none\nTest: none\nChange-Id: I00bc84d8e50b1563f97f812f722aa6bdbd6265b2\n"
    },
    {
      "commit": "9ddf491492d6bd430199639e4bc2440f963e0268",
      "tree": "5bf5a117866e458f0c2c5eb7a17c9d7249a948f9",
      "parents": [
        "3b7998aaa1a7f5050021c3d718e1f8c501d32b5a",
        "44d3cacfce3054d395e47dced8c552dba1133b5c"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Thu Dec 21 06:42:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 21 06:42:55 2017 +0000"
      },
      "message": "Merge \"Fix sanitizer errors in bootstat.cpp.\""
    },
    {
      "commit": "44d3cacfce3054d395e47dced8c552dba1133b5c",
      "tree": "e0da3ad87837ecaf2321da26585c86127a3524de",
      "parents": [
        "e3114fdec9e03b8cdc11ef19b5a7091e69ba8374"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Nov 07 13:13:55 2017 -0800"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Dec 20 14:59:19 2017 -0800"
      },
      "message": "Fix sanitizer errors in bootstat.cpp.\n\nInteger overflow sanitized builds are throwing an error on the while\nloop decrement in the rfind function. This refactors the loop to prevent\ndecrementing the value on the final iteration.\n\nTest: Compiled and device boots without runtime error.\nBug: 30969751\nChange-Id: Ice4532cce933062b3c14adf2d9749cfdea4ad84c\nMerged-In: Ice4532cce933062b3c14adf2d9749cfdea4ad84c\n"
    },
    {
      "commit": "579e682628805dd9c3f8c96765c0beb3f56f1494",
      "tree": "d9f77eb889f512a8a98ce9fb6826b4810bb2dc11",
      "parents": [
        "e1d9e7c343ac4577450b96d4de19da6f099eb154"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 20 09:41:00 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 20 09:42:22 2017 -0800"
      },
      "message": "Add std::string StartsWith*/EndsWith* overloads.\n\nWe should have done this from the beginning. Thanks to Windows, we\u0027re not\ngoing to be able to switch libbase over to std::string_view any time soon.\n\nBug: N/A\nTest: ran tests\nChange-Id: Iff2f56986e39de53f3ac484415378af17dacf26b\n"
    },
    {
      "commit": "e2c2724aeee2d2a88f8ebd030d10989cfed72123",
      "tree": "edaad24f7319e035c82a560e01d25d5bde98da97",
      "parents": [
        "3e5877725511bb50b9bd0a91e08c486664457480"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Dec 18 13:40:27 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Dec 18 13:40:27 2017 -0800"
      },
      "message": "bootstat: Add tons of new boot reasons.\n\nBug: none\nTest: none\nChange-Id: I57e89a20f23d3b3cff2fa6667e25f1c37cb2870c\n"
    },
    {
      "commit": "3289b9c9282dec777363256e27fcc23cd97001c1",
      "tree": "e592f69aba1eceaf88b8ddb643935a5e77b13e3c",
      "parents": [
        "255c43cd050f5202e96483430684c19b7ce916ff",
        "693d63f9cfc21e3334c6f8f228d73c4fb60ced8b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 23:21:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 07 23:21:26 2017 +0000"
      },
      "message": "Merge \"Add OWNERS.\""
    },
    {
      "commit": "693d63f9cfc21e3334c6f8f228d73c4fb60ced8b",
      "tree": "f0cc35536aff301e680302b8f3654517b8863acc",
      "parents": [
        "aaa0bbce8eadf1a428493f3524066a74447eded4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 11:31:02 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 13:30:03 2017 -0800"
      },
      "message": "Add OWNERS.\n\nBug: N/A\nTest: N/A\nChange-Id: Ie785058c0f5eb9b4086c98ccba6e63e3ed411b65\n"
    },
    {
      "commit": "00433a2305bfd159be913d85f8ee3a7efe069918",
      "tree": "4850d7946abcd05042ca7fabfce5ee4414410253",
      "parents": [
        "b4fda18d8353cd4b27aefac832f392ad264facc4"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Dec 04 14:20:21 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Dec 04 14:20:21 2017 -0800"
      },
      "message": "bootstat: Add more boot reasons.\n\nBug: none\nTest: none\nChange-Id: I4cc6e2e39b6c5954387006d48f2119211fa37dd5\n"
    },
    {
      "commit": "f4444f058cf5d7be22199398f47837664118f924",
      "tree": "89827cd9c809e31dee5b87a131d65feea57e317a",
      "parents": [
        "f106bb6bb822740ea35b5974c2f137ef0a662648"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Nov 30 15:01:40 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Nov 30 15:01:40 2017 -0800"
      },
      "message": "bootstat: Add four more boot reasons.\n\nBug: none\nTest: none\nChange-Id: Ifd62e3a8bb6142e89fcde819eab1caba3d7933b7\n"
    },
    {
      "commit": "5f85f8354b89aa0a48ab74ad2d61f0088c03130e",
      "tree": "d800fc9dc39955008412469dcff7301c5fe7e1fd",
      "parents": [
        "b6233894211f883972ac2a22245584336be6efdd"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed Nov 29 14:30:06 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed Nov 29 14:30:06 2017 -0800"
      },
      "message": "bootstat: Three more boot reasons.\n\nBug: none\nTest: none\nChange-Id: I37b6ed6ce73f403aa5f9db2c0234e9dc4c0f7c01\n"
    },
    {
      "commit": "b6233894211f883972ac2a22245584336be6efdd",
      "tree": "b34e5fd94c6891f85a1100832096a5a84e7e5bd8",
      "parents": [
        "34778d24aef56092b2999da6f8038fc1895c31a7",
        "74b1758cadefdc0d27d0c04ab9b49b2c96e48b51"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed Nov 29 19:29:54 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 29 19:29:54 2017 +0000"
      },
      "message": "Merge \"bootstat: Add a few more bootreasons.\""
    },
    {
      "commit": "74b1758cadefdc0d27d0c04ab9b49b2c96e48b51",
      "tree": "1e0cb2d4eddde039316cf7cae6b0884421e7b7e1",
      "parents": [
        "b7969272a3e7967b15b24fa56091b9cecea093de"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Nov 20 14:13:41 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Nov 28 15:20:44 2017 -0800"
      },
      "message": "bootstat: Add a few more bootreasons.\n\nBug: none\nTest: none\nChange-Id: I9b482e642a9eec26670118a265046194f3cc2a7a\n"
    },
    {
      "commit": "547063eab64b972c6a98f435767c051014b7be13",
      "tree": "34b2fc6eef8d41b521d63a47c480dcad4f0ea688",
      "parents": [
        "b7969272a3e7967b15b24fa56091b9cecea093de"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Nov 20 11:30:47 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Nov 20 12:18:09 2017 -0800"
      },
      "message": "bootstat: kernel_panic test w/o bootloader or pstore support\n\nIf the platform has no bootloader or pstore support, kernel_panic\ntest should fail if the results are not correct. Drop skipping of\nfailed test if pstore support is lacking.\n\nIf device demonstrably has pstore content support, the result must\nbe exacting kernel_panic,sysrq. Otherwise accept the less precise\nresult.\n\nTest: On hikey960 (which currently lacks reliable pstore, or a\n      compliant bootloader reporting bootreason), expect failure of:\n      system/core/bootstat/boot_reason_test.sh kernel_panic\nBug: 63736262\nChange-Id: I071a2a9c00dc522ec037c8a8997fea524d17e6e4\n"
    },
    {
      "commit": "8ac79bc8204bca74b46fe9249562c5980611cd40",
      "tree": "e4a3248d5d523f5b0b472b2549f31643b4f139c8",
      "parents": [
        "51ec0a1387affefdc640536490bbceaf3127d7d7"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Oct 31 10:07:34 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Oct 31 10:07:34 2017 -0700"
      },
      "message": "bootstat: Add another boot reason.\n\nBug: None\nTest: None\nChange-Id: I865a12e9c8833c4a345284181aa1812be3eddadd\n"
    },
    {
      "commit": "e7c95fb34f9fb9d2ee0f886cc97b824bac4b0e43",
      "tree": "2613d0e8f8ea07cc05e21906ca70dca12c1a3ce0",
      "parents": [
        "92803eeb321d43e7f5645f4803dd0f228ff57091"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 13 09:26:15 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 27 08:32:55 2017 -0700"
      },
      "message": "bootstat: test: add error propagation for fastboot format userdata\n\nTest: system/core/bootstat/boot_reason_test.sh optional_factory_reset\nBug: 63736262\nChange-Id: I8893df15ef802bb76c0795288df91d8463bfe3d1\n"
    },
    {
      "commit": "293cb3b2172725c8859c4bb2e991f07ea076cf98",
      "tree": "73a67d72baa2175f3aba66876cbfb46c308ff17f",
      "parents": [
        "747c0e6216f2d805ac0ac91c3d5296e11124165b"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 20 08:37:46 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 26 14:17:14 2017 -0700"
      },
      "message": "bootstat: handle a bad bit error rate issue with pstore\n\nCreate a private rfind that allows a fuzzy match based on a bit error\nrate (BER) of 1 every 8 bits.  last kmsg is affected by pstore ramoops\nbacking that suffers from data corruption.  Add some additional\nvalidation based on possible data corruption scenarios, as a noisy\nmatch means higher chance of noisy data.\n\nNoisy data notably can affect the battery level detection, but do not\ntypically result in false positives.  Battery level, or failure, is\nthe responsibility of the BatteryStats service, providing a positive\nsignal and strong device-independent algorithm.  The checking done in\nbootstat is likely to be deprecated in favour of an API request to\nBatteryStats once their algorithms deal with surprise outages due to\naging.\n\nThe kernel logging heuristic and BER fixup handily deals with a\nprevalent issue where some bootloaders failure to properly notify us\nof panics.  This is where the gains are noticed with this improvement.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I93b4210f12fb47c5c036f4d6eb4cafeee4896d35\n"
    },
    {
      "commit": "747c0e6216f2d805ac0ac91c3d5296e11124165b",
      "tree": "efe2244a76d613995a99dec3475c5d798aa4c6d8",
      "parents": [
        "dafced93a56352b79c74b016eba437b28bbbe11e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 20 08:37:46 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 26 14:17:14 2017 -0700"
      },
      "message": "bootstat: better validation of battery level (shutdown,battery)\n\nReplace simple strtoull with loop that ensures no leading zeros.\nRestrict size of value buffer being checked as allocation was\ngoing to end of retrieved buffer, which can cause unnecessary\nmemory pressure during boot.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: Ifdc1d4fd3a73794c001577024ce7cbfde9c25028\n"
    },
    {
      "commit": "dafced93a56352b79c74b016eba437b28bbbe11e",
      "tree": "3ee1e99ced7bcce7084abb974d7e5e469bbddb80",
      "parents": [
        "88d692c09ede2685a670e6b7cb5f2f09cda0e424"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 20 08:37:46 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 26 14:14:40 2017 -0700"
      },
      "message": "bootstat: Do not allow unknown boot reasons to land in first field.\n\nIf we sniff an unknown boot reason from last kmsg, make sure it\nhas a \"reboot,\" prefix.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: Ia1c401b8899d1f0c56bd4f5d8d2d19b7fc889a30\n"
    },
    {
      "commit": "88d692c09ede2685a670e6b7cb5f2f09cda0e424",
      "tree": "8e1242b6778586935f99acc66af46fe6dd313482",
      "parents": [
        "72a8ea3d3c7c712bad74a8498df129dbabe41b5f"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 20 08:37:46 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 26 14:11:04 2017 -0700"
      },
      "message": "bootstat: move boot reason validation transformation policy into subroutine.\n\nAllow for future policy adjustments.\n\nSideEffects: None\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I571fb7dafc6b80c75d2809a3da3f9b96784cef06\n"
    },
    {
      "commit": "72a8ea3d3c7c712bad74a8498df129dbabe41b5f",
      "tree": "0ec5ab8432e1f0125d0b54e5a610c6b00cb1390b",
      "parents": [
        "972753e09411ab223d2ed5a70a2a99938f2785b1"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 25 09:23:19 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 26 14:10:31 2017 -0700"
      },
      "message": "bootstat: test: fix Its_Just_So_Hard_reboot\n\nAdd the test injection to known list, and deal with an error\npropagation issue.\n\nTest: system/core/bootstat/boot_reason_test.sh Its_Just_So_Hard_reboot\nBug: 63736262\nChange-Id: I4799956978a8884c69c830fcedd7febd143651fd\n"
    },
    {
      "commit": "c89f9da0607936b0f3d90ccaeb672dc2f3a1bfd1",
      "tree": "59f5d32844b43a99fb0c553fdc2dda0cc69fa128",
      "parents": [
        "cabbe4ff356973e457db063c92920c98f69a1922"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 24 15:35:34 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 25 15:45:49 2017 -0700"
      },
      "message": "bootstat: add shutdown,thermal,battery\n\nTest: system/core/bootreason/boot_reason_test.sh\nBug: 63736262\nChange-Id: I30d6b5308fd8616eae31ad13e925d66c9fc07367\n"
    },
    {
      "commit": "cabbe4ff356973e457db063c92920c98f69a1922",
      "tree": "e9675ac425603ca86e9a590be945de9411e4017a",
      "parents": [
        "2a8e5cce338b7f3b81d90df68853e8a120a867bd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 23 13:52:39 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 25 15:45:49 2017 -0700"
      },
      "message": "bootstat: add reboot,2sec\n\nTest: system/core/bootreason/boot_reason_test.sh\nBug: 63736262\nChange-Id: Ie2e5872adb14e0979ff87eb4d2f57ab2849facd4\n"
    },
    {
      "commit": "2a8e5cce338b7f3b81d90df68853e8a120a867bd",
      "tree": "75f3e6300e0924991edbb4c2611d81e458a0c9ea",
      "parents": [
        "73691aafc286c7601b0223a16903010aa339072e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 24 13:37:39 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 25 15:45:49 2017 -0700"
      },
      "message": "bootstat: test: check ro.boot.bootreason in some tests\n\nblind_reboot_test() did not report the ro.boot.bootreason value,\nmaking it more difficult to diagnose failures.\n\nTest: system/core/bootstat/boot_reason_test.sh cold warm hard\nBug: 63736262\nChange-Id: I313cfef202b1e06c583b0b47cd5d0e0888a7dbe7\n"
    },
    {
      "commit": "73691aafc286c7601b0223a16903010aa339072e",
      "tree": "449ae7fd3c1cd4c891da7b256340c5f2f043b4b3",
      "parents": [
        "bcf66ed699efa3e4c2a2f2b5ce26b2c5e1a5c4eb"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 24 15:20:44 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 25 15:45:46 2017 -0700"
      },
      "message": "bootstat: fix test regression (exec_background)\n\nDeal with regression from 557a9d4054f6da38bc000a5842582d2afbc23294\nwhere bootstat was moved to exec_background and actions delayed\nto improve boot time.  Add a 1 second sleep rather than trying to\ninspect the dmesg (debug only) for clues to the end of bootstat.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I87dfb6a07130112bf51c367632967efa53ea2534\n"
    },
    {
      "commit": "bcf66ed699efa3e4c2a2f2b5ce26b2c5e1a5c4eb",
      "tree": "9c8d657b3846bb8d7e03467b58c1dc3e63bd0086",
      "parents": [
        "77451492bc3667e6b201f222adffffdc553ebe76"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 24 15:20:44 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 25 15:40:56 2017 -0700"
      },
      "message": "bootstat: fix test regression (extra logging)\n\nDeal with regression from 9a3870490a005ac73dc1e2be202e0824cc239e43\nwhere additional content is logged and should be ignored.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I70709ba5b00ea18a653ff8d1658556b7d4c48775\n"
    },
    {
      "commit": "a03c935e27d63800e4c4402c4c30a178515e1744",
      "tree": "cb78e3cabebaeebf334cc11497686c58ee46f551",
      "parents": [
        "d72d92aee2d125f6a8d26932e6482bea5398b92c",
        "34073b583a76c214e3e356fa9080f9ae3c5e2ac8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 19 19:41:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 19 19:41:34 2017 +0000"
      },
      "message": "Merge \"bootstat: Add more boot reasons found by logging in the wild.\""
    },
    {
      "commit": "34073b583a76c214e3e356fa9080f9ae3c5e2ac8",
      "tree": "7bda601eb6ae581a34cbca3d71ce72a0641b8208",
      "parents": [
        "796987482f3a56c4bc7ab7500a5dbe033ff11ae1"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Oct 17 15:53:27 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Oct 19 10:44:22 2017 -0700"
      },
      "message": "bootstat: Add more boot reasons found by logging in the wild.\n\nBug: none\nTest: none\nChange-Id: I7e388326be44aeb3e6fdb79d2e173dc17eb8bc1f\n"
    },
    {
      "commit": "52315ae32932243f9b99e386ae052010e745d835",
      "tree": "d8184ffbd9d022f5549acf85ec39de250dda8f91",
      "parents": [
        "4ff2607ef719bade2b45538878136a7d71621882"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 18 15:42:45 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Oct 18 16:57:33 2017 -0700"
      },
      "message": "bootstat: remove extraneous android_logcat_destroy.\n\nandroid_logcat_pclose already does that.\n\nBug: http://b/67960705\nTest: mma\nChange-Id: I03d06b10807e8a313c9654c2e1db36bfb59e3f99\n"
    },
    {
      "commit": "244947e813d29eced295a0d9478c669503a855cc",
      "tree": "d81fa94f423f076abada17963777b8dba27e9a07",
      "parents": [
        "af54c27e1b9d2b1d016cf721a2fcb991839ac203"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 13 09:21:50 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 13 09:29:53 2017 -0700"
      },
      "message": "bootstat: test: duration fixes\n\nmisspelled duration_test in test_thermal_shutdown\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I5981fa899db84199aefb46c8741511e6889bc79c\n"
    },
    {
      "commit": "9a3870490a005ac73dc1e2be202e0824cc239e43",
      "tree": "35b5d46079fa5c95388c923b540e6d1cebe30f35",
      "parents": [
        "bb52cbf35d7b6889fc79e0efc84983d177d60ca0"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 10 14:57:12 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 11 13:48:33 2017 -0700"
      },
      "message": "bootstat: test: inject ro.boot.bootreason values\n\nAdding a set of automated engineering unit tests with a strict list of\nprerequisites.  Not meant for \"user\" builds.  Must have a crafted\nbootloader that does not set the boot reason.  Only works on platforms\nwhere the bootloader either by accident or specifically does not set\nthe ro.boot.bootreason via kernel command line configuration\nandroidboot.bootreason\u003d.  If the tests do not have the prerequisites,\nthe test will report success, but with protest.\n\nThese new tests should work on current Hikey and Hikey960 bootloaders\nbut could very well become obsolete if those platform bootloaders\nstart setting the boot reason.\n\nWe do not want a platform solution as it could allow a third party to\noverride the bootloader boot reason.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I1793184a8484b83e1d9077475bc65af9816dadf7\n"
    },
    {
      "commit": "bb52cbf35d7b6889fc79e0efc84983d177d60ca0",
      "tree": "4c96b0b9f1b74dfeb799dd87c5d53035db0e35f8",
      "parents": [
        "444e3a9f748f9cb30c2a9cc456544eece87aa858",
        "2450cb1a3024e1a2e3e27c5508ecd7b9e4122df8"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 11 20:33:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 11 20:33:05 2017 +0000"
      },
      "message": "Merge \"bootstat: test: refine reported test durations\""
    },
    {
      "commit": "444e3a9f748f9cb30c2a9cc456544eece87aa858",
      "tree": "673657e951a5dc85e7b1ae128ad8bcf6645dbf3e",
      "parents": [
        "d2c66b31a0619afa196e40682aeb6b862ebe2caa",
        "243fa2980439856c829ba39f559e57a9aecd3f95"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 11 20:32:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 11 20:32:00 2017 +0000"
      },
      "message": "Merge \"bootstat: Add some reserved sys.boot.reason values to enumeration\""
    },
    {
      "commit": "2450cb1a3024e1a2e3e27c5508ecd7b9e4122df8",
      "tree": "7ee9b32c073d251f1465e12b0f63ecc8a7d70f75",
      "parents": [
        "243fa2980439856c829ba39f559e57a9aecd3f95"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 10 10:44:57 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 11 10:56:54 2017 -0700"
      },
      "message": "bootstat: test: refine reported test durations\n\nUse actual test durations to refine future duration estimates.\nBetter estimates are cosmetic, but lend confidence to the test\nresults.\n\nSideEffects: none\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I49143b78a6dc6fb21838a3d6c70b7eb5a8b4cba5\n"
    },
    {
      "commit": "243fa2980439856c829ba39f559e57a9aecd3f95",
      "tree": "50ed95c8af1ed3187e605d6b75e63e3f34e13912",
      "parents": [
        "85b80dc18db98b7950062f57457f8fcd49ba927e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 11 09:02:04 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 11 10:56:42 2017 -0700"
      },
      "message": "bootstat: Add some reserved sys.boot.reason values to enumeration\n\nAdd cold,powerkey, warm,s3_wakeup and hard,hw_reset so that\nsys.boot.reason values can also be enumerated.  Also add\nsome reserved speculative entries associated with forced\nsuspend to RAM and DISK; shutdown,suspend and shutdown,hibernate\nrespectively.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 67636061\nChange-Id: Ic43523748e6006aaca882f8eec7c1f0c08431bd8\n"
    },
    {
      "commit": "25f7122512619d97a3e71276fe3bdf78150a3569",
      "tree": "7d599b7b85de48465c1a98d9a43afce8502088f2",
      "parents": [
        "8eada2a90f1e946ca653d9daa9fb35fa11bf263a"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Oct 10 16:37:05 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Oct 10 16:37:05 2017 -0700"
      },
      "message": "bootstat: Special case logging for empty boot reason.\n\nEmpty boot reason is mostly unexpected but may take up the bulk of\nunknown reported boot reason values.\n\nBug: none\nTest: none\nChange-Id: I9978658c2b052d5cf5d28299861b0d1125ba9fc0\n"
    },
    {
      "commit": "6290982ee324a1612d575b276bb8a1c3b921548a",
      "tree": "1da5958ef6a2267def5fcae3dfc2dd14b7cde346",
      "parents": [
        "be729702ae8cf0771e8b69daf87bc251a13a3a60"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 09 09:27:16 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 10 09:37:59 2017 -0700"
      },
      "message": "init+bootstat: reduce last reboot reason to canonical alias\n\nTo make parsing easier for last reboot reason.  This also ensures that\nlast boot reason matches the content that is typically returned by the\nbootloader or in turn landed in the canonical system boot reason.\n\nSimplify parsing in bootstat.  Adjust and fix boot_reason_test.sh for\nnew reality.  Allow boot reason tests battery and kernel_panic to pass\nif device does not support pstore (empty before and after the test).\nIf device somehow landed in fastboot mode while waiting for the\ndisplay, issue a fastboot reboot to move the test along.  Some cleanup\nand standardization changes to the test script.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I97d5467c0b4a6d65df3525f1a2d0051db813d5ad\n"
    },
    {
      "commit": "0af71a53278677648315b7413f725526f7606852",
      "tree": "9f3347f5d2d01b06beea3ea9d62da95786d7434a",
      "parents": [
        "9e6c11da18267ffe27f7be06ce5a04fe321645a3"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 05 13:58:04 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 05 14:42:08 2017 -0700"
      },
      "message": "bootstat: system_boot_reason does not handle reboot_\u003creason\u003e case\n\nHeuristic would translate reboot_\u003creason\u003e to reboot._\u003creason\u003e. Add\nchecking/squashing for leading comma (,) _or_ underscore (_).\n\nTest: compile\nBug: 63736262\nChange-Id: I7ef4930ec8c064a8151183ac08d292931a8584c8\n"
    },
    {
      "commit": "161b8626bdae56350486feeb455865adf32b952a",
      "tree": "cfa56570f5cfd838594360948da8d7415382e730",
      "parents": [
        "82ee4060ed01934fe3de94e5219f79aed4d86c9e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 26 08:26:12 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 27 09:10:00 2017 -0700"
      },
      "message": "init: report shutdown,container for sigterm of init\n\nChange HandleSigtermSignal() handler to report shutdown,container. Add\nthe new reason to bootstat.  Remove log stutter as\nHandlPowerctlMessage will also do a LOG(INFO) reporting\nshutdown,container as reason.\n\nSending SIGTERM to init is to allow a host OS to ask an Android\nContainer instance to shutdown.  The temptation is to report\nshutdown,sigterm but that does not accurately describe the usage\nscenario.\n\nTest: compile\nBug: 63736262\nChange-Id: I3c5798921bdbef5d2689ad22a2e8103741b570b4\n"
    },
    {
      "commit": "9033bf5a2e73ec96d086849806a8a95dce84f05c",
      "tree": "02421c16063e297f03bf11cfb3ab346c5192ee31",
      "parents": [
        "c7750dce6bc3e29a20b3c77b06c7c247448e8002"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 21 11:30:29 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Sep 21 11:30:29 2017 -0700"
      },
      "message": "bootstat: Add reboot,userrequested\n\nResult of holding power button down and hitting restart.\n\nTest: compile\nBug: 63736262\nChange-Id: I271bdf135cece5fd9dc9e60ddf8add595ed3da4c\n"
    },
    {
      "commit": "a16e437e9d86e3e2b01099a75fd919d4902363fa",
      "tree": "7804def80e9a22f1d5c759399b0f87b4244733a2",
      "parents": [
        "14b1e6d63dcff248fff545bff17ce9f9fc7c66ec"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 20 08:36:12 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 20 11:28:02 2017 -0700"
      },
      "message": "bootstat: validate last kmsg and bootreason content more carefully\n\nEstablish a tighter trust relationship with digitization of the\nbattery level.  Validate the reboot reason collected from the last\nkmsg.  Validate the last reboot reason before using for enhancing\nsystem reboot reason.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63636262\nChange-Id: I45fbac4a33c09295cda89de3b73c93a884033e3b\n"
    },
    {
      "commit": "14b1e6d63dcff248fff545bff17ce9f9fc7c66ec",
      "tree": "ae29c4acededa2a3a1de2b9725d843ab21d3f05a",
      "parents": [
        "22a10f6766cd3ae07217b9a93c44381f52aa7018"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 18 10:41:14 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 20 11:27:56 2017 -0700"
      },
      "message": "bootstat: clang-format rebase\n\nCode style has drifted too far from our current clang-format\nsettings.\n\nTest: compile\nSide-Effects: none\nBug: 63736262\nChange-Id: Ie390459db123cfadf09aa06c8dafb1ae69a72af8\n"
    },
    {
      "commit": "6461089bf83072b990229efe987ca43a1a9cb983",
      "tree": "09f11eb0479fd7efb12acfd42401ae68872135ac",
      "parents": [
        "8f3989b8203466d3d55318bb636fb9cf5a58c6f3"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 18 10:41:14 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 19 16:30:05 2017 -0700"
      },
      "message": "bootstat: refine kernel panic details\n\nIf bootloader reports kernel_panic, gives us permission for a\ndeeper check of which kind occurred.  Resolve a problem with\nsome kernels that do not have the \u0027sysrq: SysRq :\u0027 log stutter.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: Idb8978de7a4f4e3c671c6ab7efc5ebe841f7bbd8\n"
    },
    {
      "commit": "557a9d4054f6da38bc000a5842582d2afbc23294",
      "tree": "5bf3d032d61f5bf9a8e19593908a05435bc19149",
      "parents": [
        "8a30fcabcb6a13e32452163627a7e7786db74f64"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 15 13:02:19 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 19 07:36:34 2017 -0700"
      },
      "message": "bootstat: reduce overall boot time\n\nRun bootstat as a oneshot service rather than as a series of inline\nexec commands.  exec commands impact boot time.\n\nTest: cts-tradefed run cts-dev --module CtsBootStatsTestCases\n      system/core/bootstat/boot_reason_test.sh all\n         (make sure it filters out new init reports)\nBug: 65736247\nChange-Id: Ic9d509a8cbee4bc1e278081de1001e25ae0915fd\n"
    },
    {
      "commit": "8a30fcabcb6a13e32452163627a7e7786db74f64",
      "tree": "834dd67486a8f67c37389ff2bf510a64f486f396",
      "parents": [
        "b04f454216b05cd88245de47feb84ac49811bdf9"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 18 10:48:39 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 19 07:36:34 2017 -0700"
      },
      "message": "bootstat: battery test fails on QC devices\n\nSend the message multiple times into the last dmesg log so that one\nmay be picked up without data corruption.\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: Ie42ad1940b1eb4915e4cf6cc61815d0275a70ffe\n"
    },
    {
      "commit": "25246ddfe6aa0d92c68ad450e206887147f766b4",
      "tree": "9a1c5ff91a556e19d006d55a9990b217f3f2f084",
      "parents": [
        "ae054903af11a125263a3bdb434b8ab47cd7a9a7"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 18 10:27:01 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 19 14:34:42 2017 +0000"
      },
      "message": "bootstat: bootloader stat files misspelled\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I6620c9965f4af8b6a3829f1f4cdcc9b691471a71\n"
    },
    {
      "commit": "08b0256ea1fce2c0c89aee812c2f62af535cf30e",
      "tree": "11ad5c56c45bb43629ffdf01069744999a0a1ed6",
      "parents": [
        "2fb5fa336bc93ba555642998a9d5becd333f1429"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 18 10:07:07 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 18 21:03:10 2017 +0000"
      },
      "message": "bootstat: reboot cold, warm and hard tests failed\n\nIf the bootloader insists on reporting reboot for cold, warm and\nhard, we need to reconstruct canonical reason from the\npersist.sys.boot.reason property.\n\nSome log lines contained bootstate, letting their noise through\nduring testing, changed regex to look for bootstat[^e].\n\nTest: system/core/bootstat/boot_reason_test.sh\nBug: 63736262\nChange-Id: I3788c6cf8aca7fc73dd01bf95acb596d18ed7ee4\n"
    },
    {
      "commit": "5240f204edc23d74f2f98da1c3c3f60bf2c6602f",
      "tree": "804a24e8375e4d59e421ddab120423835395e1bc",
      "parents": [
        "b92415cee2bea5eb1c855d7c46c21bff4e3e3ae8"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Sep 15 16:01:57 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Sep 15 16:01:57 2017 -0700"
      },
      "message": "bootstat: Log the ro.boot.bootreason property through the new platform_reason Tron field.\n\nBug: 63584589\nTest: none\nChange-Id: Ifd6f3d4432d764b5ffc7db10dec5e573214f7c97\n"
    },
    {
      "commit": "277eca138b3cb5cc7e922483575799835f07e22c",
      "tree": "6b3a4e59929ebcf0964324ecb98e86a52fa13fd4",
      "parents": [
        "b304f6d4e7752e08519a96aeaa936e36492afdc9"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 11 15:22:57 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 12 12:24:02 2017 -0700"
      },
      "message": "adb: reboot: last boot command default\n\nFor reboot [reboot_arg] requests via either reboot or adb reboot,\nif reboot_arg is empty then report \"shell\" or \"adb\" respectively.\n\nTest: boot_reason_test.sh shell_reboot adb_reboot\nBug: 63736262\nChange-Id: Ie613d9e62db6a705885e4e7520aede27af3aa1b9\n"
    },
    {
      "commit": "b304f6d4e7752e08519a96aeaa936e36492afdc9",
      "tree": "7896fbfe0ec2eea5fb7dd587e2e9657acc97b5f0",
      "parents": [
        "2dac833ea81fae56c01803e9c7cdd1dd81555622"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Aug 04 13:35:51 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Sep 12 09:28:25 2017 -0700"
      },
      "message": "bootstat: introduce sys.boot.reason\n\nAdding functionality to bootstat --record_boot_complete and\n--record_boot_reason to initialize sys.boot.reason, the canonical\nsystem boot reason.\n\nFilter out ro.boot.bootreason oem noise into sys.boot.reason.  Add\nheuristics to determine what the boot reason is, when otherwise would\nbe defaulting to the blunt and relatively devoid of detail catch-all\nreboot reasons (\"reboot\", \"shutdown\", \"cold\", \"warm\", \"hard\").\n\nboot_reason_test.sh is also a compliance test.\n\nTest: boot_reason_test.sh all\nBug: 63736262\nChange-Id: Ic9a42cccbcfc89a5c0e081ba66d577a97c8c8c76\n"
    },
    {
      "commit": "c3ad75be840c1f4bec5c1638da445122fc3062b1",
      "tree": "7a6ff4b67fcfb3829d070c31f87144dc063aed17",
      "parents": [
        "2d1d8812cc71c9ab17c0362602f3adff9e643d81"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Aug 09 14:54:56 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Aug 09 15:08:21 2017 -0700"
      },
      "message": "bootstat: switch from root.root to system.log\n\nbootstat does not need root uid and root gid permissions to perform\nits tasks.  It appears that system uid and log gid are adequate and\nappropriate.\n\nTest: manual\nBug: 63736262\nChange-Id: I094c2cb054e441562fa8717a4d3dc0086fb70a7a\n"
    },
    {
      "commit": "29b94116855b96e24beeb993396b251a1f85127a",
      "tree": "8e8c3807b35aaa667b8e82eb1870f7a2947ce81b",
      "parents": [
        "3e0b59461959cfc683fff13a42829780843b3601",
        "8d7f63da26f342ea4587962e57a0d457673a3a10"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jul 26 19:27:03 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 26 19:27:03 2017 +0000"
      },
      "message": "Merge \"bootstat: Log even more boot reasons.\""
    },
    {
      "commit": "8d7f63da26f342ea4587962e57a0d457673a3a10",
      "tree": "4e5035886ae7fc7bf03084b8934964a33bfbdb70",
      "parents": [
        "603cae8b4812c21b92f559d190c7d21534dbeef7"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Jul 25 12:55:12 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Jul 25 15:58:48 2017 -0700"
      },
      "message": "bootstat: Log even more boot reasons.\n\nBug: 27555866\nTest: None\nChange-Id: I8ab6597a323f5973d8b1c22c2c7422ef0c2efcc3\n"
    },
    {
      "commit": "cd15fc7ba80b31539e85792ec35d7ebe0c8ff764",
      "tree": "b834af3b7e5dbb8562b06face0bd2bbaecf0e10a",
      "parents": [
        "603cae8b4812c21b92f559d190c7d21534dbeef7"
      ],
      "author": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Mon Jul 24 19:32:07 2017 +0200"
      },
      "committer": {
        "name": "Lennart Wieboldt",
        "email": "lennart.1997@gmx.de",
        "time": "Tue Jul 25 14:29:50 2017 +0200"
      },
      "message": "Remove LOCAL_CLANG and clang: true\n\nclang is the default compiler since Android nougat\n\nTest: mma \u0026 verified it´s still build with clang\nChange-Id: I34adaeef2f6558a09f26027271222bad94780507\nSigned-off-by: Lennart Wieboldt \u003clennart.1997@gmx.de\u003e\n"
    },
    {
      "commit": "78b2b94d1d6cac4c296ed268f5f1be7a903278b3",
      "tree": "fd511c6abd2c1502362ec8c5014f6956d939d24d",
      "parents": [
        "48d610ab18d7803cef6579689ba625990eaf0cfa"
      ],
      "author": {
        "name": "Yongqin Liu",
        "email": "yongqin.liu@linaro.org",
        "time": "Fri Jul 07 13:26:49 2017 +0800"
      },
      "committer": {
        "name": "YongQin Liu",
        "email": "yongqin.liu@linaro.org",
        "time": "Fri Jul 07 15:27:10 2017 +0000"
      },
      "message": "bootstat.cpp: update help message for --record_boot_complete\n\nadd description about --record_boot_complete in the help\n\nTest: manually with HiKey\n\nChange-Id: I521d6f5b9d98113c006fc6ab146b6c353ce2390c\nSigned-off-by: Yongqin Liu \u003cyongqin.liu@linaro.org\u003e\n"
    },
    {
      "commit": "0bc4ad479ae82d4c7815f4190682935360a9ad4a",
      "tree": "1c940168f8a1e5c96117466b91b464952cac6cc9",
      "parents": [
        "f8e96ea2d1eae5ab17c78e2469bbedc3daa1e5d4"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue May 30 15:03:15 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue May 30 15:03:15 2017 -0700"
      },
      "message": "bootstat: Log factory_reset_boot_complete separately from ota_*.\n\nBug: 37164359\nTest: none\nChange-Id: I7ed68e299846050fdffa58db8d2bd35fe4599dbb\n"
    },
    {
      "commit": "259dc730dad402f47207a8d074ee89709e1b54aa",
      "tree": "ca882224a47c644d807925101dcfa6231f32f9f7",
      "parents": [
        "c408e77095a1a0f7aa170d695b6b1b32a2726573"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed May 24 10:19:25 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed May 24 10:19:25 2017 -0700"
      },
      "message": "bootstat: Set up clang-format-2 for bootstat.\n\nBug: None\nTest: None\nChange-Id: I534801dae4baec52687c8bbc563f8d92fca1a106\n"
    },
    {
      "commit": "1bfcaec1ab01c20245ead3f36b9bf07c984595f2",
      "tree": "3a2e1b2064a44b3f7aa33f1bffe0deaa2aaffc11",
      "parents": [
        "62db5fcee052980759ecb977cab4c63491e01e56"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri May 19 14:27:27 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue May 23 14:43:49 2017 -0700"
      },
      "message": "bootstat: Calculate and log the absolute device boot time.\n\nBug: 38345538\nTest: None\nChange-Id: I76a4b831cc3809d37b7edfcf1b5657cdf363832a\n"
    },
    {
      "commit": "0f0cccc102bb5ca431be9762986622e04be20941",
      "tree": "08a98634ea981e97522c9df2251a36c76589d933",
      "parents": [
        "c1c0de3945f5f5dee8477a1101e158449b267efe"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Fri Mar 31 17:13:04 2017 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Apr 05 14:49:47 2017 +0000"
      },
      "message": "Add test config to bootstat_tests\n\nThis change allows TradeFederation to run the test directly.\nRefer to b/35882476 for design and discussion of this change.\n\nBug: 35882476\nTest: local test\ntradefed.sh run template/local --template:map test\u003dbootstat_tests\n\nChange-Id: I3bc2fa19faebe21f6faf8b81e206ea1581918344\n"
    },
    {
      "commit": "e78ea77f6992013b16fd57c07548b53129cdd12f",
      "tree": "cd63b894d0409391b8601954b8b79497c4e576b9",
      "parents": [
        "c65f842cd1a3b8451370ed037a29bdd41c938765"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Mar 24 11:43:02 2017 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Mar 30 14:24:12 2017 -0700"
      },
      "message": "bootstat: Refactor init/utils/boot_clock into base/chrono_utils.\n\nUse this for bootstat and init. This replaces the custom uptime parser in\nbootstat.\n\nThis is a reland of aosp/338325 with a stubbed implementation for Darwin.\n\nThis change also has clang_format fixes (automatic).\n\nBug: 34352037\nTest: chrono_utils_test\nChange-Id: I72a62a3ca1ccfc0a4ccc6294ff1776c263144686\n"
    },
    {
      "commit": "6b5c5aa0679139aac403e4b6a1778c27e100a48e",
      "tree": "8a3305c4c3519799710f1735e36f10c03cc1eb8d",
      "parents": [
        "7cd8349198add097ca9f8fec0c78cf6fed2bb2fc"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Feb 16 11:53:03 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Feb 16 11:53:03 2017 -0800"
      },
      "message": "bootstat: Report the total bootloader time.\n\nBug: 35207415\nTest: none\nChange-Id: Id948a3b35bb3d96dc875d0a4eea869c86a71a657\n"
    },
    {
      "commit": "c8ac0677734270f0b12d85ecf23b1de49054890c",
      "tree": "d28d14e07cfa47388dea9ccded51df626c430edc",
      "parents": [
        "7c92e484503f239000ef97ef5b067907fbeaa4a6"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Feb 14 19:20:20 2017 +0000"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Feb 14 19:20:20 2017 +0000"
      },
      "message": "Revert \"bootstat: Refactor init/utils/boot_clock into base/chrono_utils.\"\n\nThis reverts commit 7c92e484503f239000ef97ef5b067907fbeaa4a6.\n\nMac sdk still broken (despite testing locally).\n\nChange-Id: I7d9206e15997cd0efe081bd3fa17d53d2b20ec32\n"
    },
    {
      "commit": "7c92e484503f239000ef97ef5b067907fbeaa4a6",
      "tree": "1bdbaa087da8202bd1eb6a97bdfcf0aa67f2e1ec",
      "parents": [
        "a3e4977325763b4a6fd290ee01b9ce133df8ab93"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Feb 13 15:47:21 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Feb 13 15:47:21 2017 -0800"
      },
      "message": "bootstat: Refactor init/utils/boot_clock into base/chrono_utils.\n\nUse this for bootstat and init. This replaces the custom uptime parser in\nbootstat.\n\nThis is a reland of aosp/332854 with a fix for Darwin.\n\nBug: 34352037\nTest: chrono_utils_test\nChange-Id: Ib2567d8df0e460ab59753ac1c053dd7f9f1008a7\n"
    },
    {
      "commit": "64984aaa6e47d8b1edf4d11810e2ac00d43fdc7c",
      "tree": "ef3d69a29f60d8975fd9b19acf587f9ac0bf4d7a",
      "parents": [
        "5c3a707542fdae13611b973ec0404f3573c058ea",
        "9aec926f866f54a311bd898b5f51188f9890a357"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Feb 13 18:41:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 13 18:41:23 2017 +0000"
      },
      "message": "Merge \"libmetricslogger: Refactor Tron metrics histogram logging out of bootstat.\""
    },
    {
      "commit": "bd6ab49555065abe090600c1d10d0263e1338be1",
      "tree": "a59771f29212cd43422be7f2490fe40471393459",
      "parents": [
        "ce07b6fa4f20facc8beae6f91d62802c50e9d5a5"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Thu Feb 09 09:58:14 2017 -0800"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Thu Feb 09 10:09:22 2017 -0800"
      },
      "message": "bootstat.rc: record post_decrypt_time_elapsed only for FDE device\n\nBug: 35110957\nTest: on marlin\nChange-Id: Id32f65ad4d693dcf52f1581bf55b3fe671c985cc\n"
    },
    {
      "commit": "0e3167e203ae89817cc30ba4a5a2d328716b4826",
      "tree": "b265be245dfd10cf677fe78bdedfec2e70da7336",
      "parents": [
        "ec5d6cb8fdcabaaaba2836712f5b7ee58321c3b8"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed Feb 08 14:16:25 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed Feb 08 14:16:51 2017 -0800"
      },
      "message": "Revert \"bootstat: Remove custom uptime parser in favor of elapsedRealtime.\"\n\nThis reverts commit 26f40c04c3ad80e2bc449990010d39d1c1b9a5f0.\n\nThis change broke the Darwin SDK target.\n\nTest: none\nChange-Id: Ia54fe2c31da8d8fa2825e023b035fb8321dcd457\n"
    },
    {
      "commit": "26f40c04c3ad80e2bc449990010d39d1c1b9a5f0",
      "tree": "dc8aae8ca90822f9f9f578c40255fc7c93db76df",
      "parents": [
        "564aeca94e18cd708f93619551e05b3d59d4abe2"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Mon Feb 06 10:46:54 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Feb 07 15:43:32 2017 -0800"
      },
      "message": "bootstat: Remove custom uptime parser in favor of elapsedRealtime.\n\nRefactored init/utils/boot_clock into base/chrono_utils.\n\nBug: 34352037\nTest: none\nChange-Id: Ied0c00867336b85922369d7ff37520e3d28fc61e\n"
    },
    {
      "commit": "be46fd1b949082bd189cfdd63634f7d775f28200",
      "tree": "2734c64221e7232f7b3ac60eb42c568ac483a281",
      "parents": [
        "3dfe40129657165f4cfe6c6cf0a5b6c8e8e6d4da"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Feb 02 16:21:25 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Feb 02 16:28:25 2017 -0800"
      },
      "message": "bootstat: Log bootloader timing metrics to Tron.\n\nBug: 34944249\nTest: None\nChange-Id: Ica6d87c8631a6cc8d70a01186686381f9dc352f9\n"
    },
    {
      "commit": "f1c2350668a627f8578fdc7d4dcb0c2a3a2be3b2",
      "tree": "2c54f1e9beff7f3adacb846056ac70b1a6f41ec8",
      "parents": [
        "2cd07e8b972401728f94849c5e9b52edb6b4d7ce"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Jan 31 11:52:48 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Wed Feb 01 01:30:08 2017 +0000"
      },
      "message": "bootstat: Update the wording of \u0027soft reboot\u0027 to \u0027runtime restart\u0027.\n\nIn an effort to be more accurate with respect to terminology.\n\nBug: None\nTest: None\nChange-Id: Ida8e118975e715c686aa7fd526f964e78c06aa06\n"
    },
    {
      "commit": "9aec926f866f54a311bd898b5f51188f9890a357",
      "tree": "08b5f51a1f60e3e3df41c27d49e240867e537864",
      "parents": [
        "7dde4fa4e2a4949c7d7e6a8376b5c9bda26e38f8"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Jan 31 11:42:24 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Jan 31 11:42:24 2017 -0800"
      },
      "message": "libmetricslogger: Refactor Tron metrics histogram logging out of\nbootstat.\n\nTo be shared with other native components that want to log histograms.\n\nBug: 34456830\nTest: libmetricslogger_test\nChange-Id: I94a1a91c6d33e443d66bc480158dc2470d6c9031\n"
    },
    {
      "commit": "27c052263c827150b1d371c72abee5974c000ac2",
      "tree": "f4e7f8f94db29eb92f98ac3cd3a27d868c833871",
      "parents": [
        "fc267f865e1475030f777a3640bd1cf46dc766b0"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Jan 26 11:55:44 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 27 08:26:14 2017 -0800"
      },
      "message": "boottime/init: Report ro.boottime.init* properties in milliseconds.\n\n* Nanosecond precision ended up being harder to grok.\n* This change modifies the Timer class to have duration_ms instead of\nduration_ns.\n\nBug: 34466121\nTest: adb logcat | grep bootstat\nChange-Id: Ibd1c27dc3cb29d838a956e342281b2fb98d752a6\n"
    },
    {
      "commit": "a51b165c7aa6291ce90cfcc3a0602d6467d48b5d",
      "tree": "7f65d4983c1f47de132bb2478e0b27426b3f6bd8",
      "parents": [
        "8dbab358f01ed0957ff4d5b1c505981dfe93d5de"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 20 11:19:59 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 20 11:20:36 2017 -0800"
      },
      "message": "bootstat: Remove debug logging of bootstat_mtime_matches_content.\n\nBug: 34507152\nTest: bootstat_tests\nChange-Id: I97f84dd04eb44e6a5d00cf9a2f6b24a5b3e9297f\n"
    },
    {
      "commit": "800ceb45b15c2b63edd4c699862653c55fe55ef2",
      "tree": "f96b27103e1a5e6989f5819d726670d62e2921bd",
      "parents": [
        "4c5c9db17b55bfcb2d62eec158440d0e794e30bb"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Jan 17 13:27:05 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Jan 17 13:28:17 2017 -0800"
      },
      "message": "bootstat: Fix false metrics due to soft reboots.\n\nUse a flag to enable/disable logging metrics, set to false during soft\nreboots.\n\nBug: 32807863\nChange-Id: Ib1359327af4e18d40400c29961c454f7be1b8d0c\nTest: None\n"
    },
    {
      "commit": "ef0a090e6fc0b9061cacd94d521aca3c158b0f26",
      "tree": "213ccfd80af2f358ae12f73390c2742c794dc43d",
      "parents": [
        "9f59a4663c0b6bdcc8a4fa82b0b966ee2522ffb1"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 06 14:38:23 2017 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Jan 06 14:52:52 2017 -0800"
      },
      "message": "bootstat: Log ro.boottime.init timing properties.\n\nBug: none\nTest: adb logcat | grep bootstat\nChange-Id: I3375c75e8ef39be710c8001f19a9e2fb493805e9\n"
    },
    {
      "commit": "e4079fbdefac654f84b091335cc67fd89d79841c",
      "tree": "32393ec4afa96b6861ddd7e5b4de644966ea078c",
      "parents": [
        "de07029ad07cc9f1da6fecdb8d81d039f7d1a8f5"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Dec 01 14:02:17 2016 -0800"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Dec 01 14:02:17 2016 -0800"
      },
      "message": "bootstat: Fix the boot complete signal for FBE devices.\n\nFBE devices suffice with bootanim\u003dstopped, but must be gated on\nro.crypto.type\u003dfile.\n\nBug: 33049941\nTest: adb reboot \u0026\u0026 adb logcat | grep bootstat \u003c Has output\nChange-Id: I346d47aaf9d1d4b40f05906056849630b922a20d\n"
    },
    {
      "commit": "472245d9625b8f0c52737aa8753524facfa211db",
      "tree": "739bda1ad78ca8fbf784cc19affd9ecaa9b33404",
      "parents": [
        "b6552f376ca2903d987faa9b05808d72952af858"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 18 10:45:45 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Nov 21 09:46:34 2016 -0800"
      },
      "message": "liblog: move android_log_event_context class to log/log_event_list.h\n\nrename class from android_log_event_context to android_log_event_list\n\nTest: gTest logcat-unit-tests\nBug: 31992412\nBug: 31456426\nChange-Id: Ib61cbca7d453837d64959c56b0e11f8c5edbfbdd\n"
    },
    {
      "commit": "343b76e44932237483f5a8b1c3f9e419f334c9db",
      "tree": "bc5268f81f9186c07015ac11911002f1e8e90619",
      "parents": [
        "aeaaf81c2cc8366ac4f66eb3d2fc85f9b8194982"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Oct 19 10:51:25 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 24 11:13:16 2016 -0700"
      },
      "message": "bootstat: drop event_log_list_builder\n\nUse android_log_event_context class instead\n\nTest: manual\nBug: 31456426\nBug: 31750617\nBug: 30465923\nChange-Id: I8c58d6bdd1fd921f32a1a6f42bec38937833c0e4\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": "da46b392f10d2809b5696632f67485f272ec5698",
      "tree": "cbe9ba7c2169c4c59d5fe147a896af3343b45c0a",
      "parents": [
        "58f7f61266259c7a9ef23b111b5414949da5163a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 11 17:09:00 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 13 15:34:05 2016 -0700"
      },
      "message": "Move off std::sto* function which abort on failure.\n\nBug: http://b/31403370\nTest: builds, boots, libbase tests pass\nChange-Id: I89cd7ca3d8f1c8a1bad0ddf3043439449d19a293\n"
    },
    {
      "commit": "ff2dcd9af994a23ed483939a416b48bdc10eefd5",
      "tree": "6e5a0dfe4e39c407eea7e39840eef5d56b720de4",
      "parents": [
        "66ce3e08c5632a20ea66bde6dd76397041edf034"
      ],
      "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": "system/core 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.  Adjust header order to comply with Android Coding\nstandards.\n\nTest: Compile\nBug: 26552300\nBug: 31289077\nChange-Id: I33a8fb4e754d2dc4754d335660c450e0a67190fc\n"
    },
    {
      "commit": "194edf772e4df2ade86acf97f616243aaef205fc",
      "tree": "32bb95c53295dcccdde4afa28eeb1cec46f36f39",
      "parents": [
        "091b631915c68c801bbded01ac8bb3a7af18436e"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Aug 26 15:01:36 2016 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Fri Aug 26 16:19:21 2016 -0700"
      },
      "message": "Convert to Android.bp\n\nSee build/soong/README.md for more information.\n\nI tested the following tests on a Nexus9 and linux host, and they\ncontinued to pass:\n\n/data/nativetest{,64}/bootstat_tests/bootstat_tests\nout/host/linux-x86/bin/nativetest{,64}/bootstat_tests/bootstat_tests\n/data/nativetest64/memunreachable_test/memunreachable_test\nout/host/linux-x86/bin/nativetest{,64}/memunreachable_test/memunreachable_test\n\nThese continue to fail just like before this change:\n\n/data/nativetest{,64}/sync_test/sync_test (was /system/bin/sync_test)\n/data/nativetest{,64}/sync-unit-test/sync-unit-test\n/data/nativetest/memunreachable_test/memunreachable_test\n\nTest: See above\nChange-Id: I691e564e0cf008dd363e3746223b153d712e024d\n"
    },
    {
      "commit": "4dded613b3aaee016adffd895edf3866426fc22a",
      "tree": "6936b5ad2dcc0baa49ba300e89cef14df3c2c32e",
      "parents": [
        "44c909d46743f50f67aa4af03ff2588b3b7deb1c"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Jul 28 11:50:23 2016 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Jul 28 11:59:22 2016 -0700"
      },
      "message": "bootstat: Fix a potential unhandled exception for malformed input.\n\nIn rare cases the hardware storage on the device may be hosed and return\ngarbage.  Use ParseInt which handles bad input instead of stoi.\n\nBUG: 29334139\nChange-Id: I91aedc169df110bea8097775f73dda11def22311\n"
    },
    {
      "commit": "3df8c67d29d9ad2b1a458d739d0bd70ef0820236",
      "tree": "585a223b9dba7ea686b61680852b939b10cbf91d",
      "parents": [
        "47f808d09f3f2ecfff62dfb6ff57090ff106469a"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 26 13:28:23 2016 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Apr 26 13:28:23 2016 -0700"
      },
      "message": "Don\u0027t hardcode gtest paths.\n\nBug: http://b/16574165\nChange-Id: Icaf99a51c309db7eb5f8b051a5896b5f49e1b3bc\n"
    },
    {
      "commit": "2d8b3e66c6fd298bc8f4dc4e8205bb469a89a6f8",
      "tree": "e7c84817899e5b91ee86c0398f2ccc16352fadbf",
      "parents": [
        "9a3e238a6052204ff44b81ea06b6a0874e2acff9"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Thu Apr 14 14:13:20 2016 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Apr 15 08:44:01 2016 -0700"
      },
      "message": "bootstat: Calculate and log the time_since_last_boot metric.\n\nBug: 28163811\nChange-Id: I2e1350531f6a0fc891c270cfdfca6c8ad63f8040\n"
    },
    {
      "commit": "b9cf77159a1dc7830eba28a8a3a4ac203e76ea1d",
      "tree": "24275cd45a268a9ca582d859405e1fa27b5f3302",
      "parents": [
        "a10b4a0235ed5e3a219a41080988ece185f5dea8"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Apr 08 15:32:19 2016 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Apr 08 15:32:19 2016 -0700"
      },
      "message": "bootstat: Differentiate system update boot times.\n\nBug: 27454343\nChange-Id: Idb2e6f55ad7dda546a486954201619bb73cee6b0\n"
    },
    {
      "commit": "fff95ba5dd9da74afe6897db1726c0b5f70e8930",
      "tree": "0f1d4a4f2e026189859f42cb0d74f5c0caabb2c5",
      "parents": [
        "fbdbf100cb48f18d308c96f1959945cf7d1909ec"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Mar 29 16:13:49 2016 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Tue Mar 29 16:13:49 2016 -0700"
      },
      "message": "bootstat: Two changes to aid in debugging TimeSinceFactoryReset.\n\n* Also log to the BootEventRecordStore to check lossiness.\n* Log factory_reset_current_time_failure separately.\n\nBug: 27550578\nChange-Id: Id3d579a74a59ac28290cb7d6048765519f9ba59b\n"
    },
    {
      "commit": "2c5d1d7cd914ec8ebf76c8a59d0889ebf5b538cd",
      "tree": "727283a4b1547819f686ac25d8167fff3d0c9544",
      "parents": [
        "3761365735de4cbc3c8581f0a5e972ad01f8378c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 28 12:15:36 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 28 12:15:36 2016 -0700"
      },
      "message": "Add operator int() to unique_fd.\n\nChange-Id: I7512559be7befbb8772d5529e06550267a2f1543\n"
    },
    {
      "commit": "c0dc139b4a311e0c04af5713c064de13da76c354",
      "tree": "f757b777534cc188699e8f8359c59125822c79a7",
      "parents": [
        "5d47ab5a3ae483246c580baf943fe63121691b83"
      ],
      "author": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Mar 25 12:49:23 2016 -0700"
      },
      "committer": {
        "name": "James Hawkins",
        "email": "jhawkins@google.com",
        "time": "Fri Mar 25 14:26:13 2016 -0700"
      },
      "message": "Revert \"Revert \"bootstat: Handle v1 record files which do not contain file contents.\"\"\n\nThis reverts commit 756b6a53a7c473d04dfe1e28b9deaa40a71e5818.\n\nThe change is updated to use utimes (instead of futimens) since only\nsupport for seconds resolution is required.\n\nBug: 27836969\nChange-Id: I7134f759fb643e1a149158fcf6e20f76538b57d3\n"
    }
  ],
  "next": "756b6a53a7c473d04dfe1e28b9deaa40a71e5818"
}
