)]}'
{
  "log": [
    {
      "commit": "620eec1f3546523fab4f58fa6733e7faa34e4fd2",
      "tree": "3ae31082c61a5b445cd5b3c55d68334ece7e20d6",
      "parents": [
        "7b2c6d4d12104fade7bfe8cc49a15cb9b3883ee2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 07 17:59:53 2024 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 07 17:59:53 2024 +0000"
      },
      "message": "Merge \u003csys/system_properties.h\u003e and \u003csys/_system_properties.h\u003e.\n\nYou could argue that some of this stuff (such as the constants used for communication between init and libc that _aren\u0027t_ passed on to callers) should be moved to a new \u003cplatform/system_properties.h\u003e instead, but in the sense of \"exposed to the NDK\" rather than \"useful to NDK users\", all of this is already technically public API.\n\nWe can worry about how to make the platform-only implementation details less visible in documentation if/when we ever actually have the bionic docs generated and published on the web...\n\nChange-Id: I1a6456cf7d301753ec8f541a2046538cd59ed58a\n"
    },
    {
      "commit": "08b0a68d6d32cf91ccb9096fe567ab20b11ea723",
      "tree": "3c39983a13a537d787d0823efbcc7bc92ab573c5",
      "parents": [
        "58df4dfe9a4eb4f0491c299570506a3c83f89e44"
      ],
      "author": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Fri Nov 10 11:09:46 2023 -0800"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Fri Nov 10 11:09:46 2023 -0800"
      },
      "message": "Unmap appcompat properties in property benchmark\n\nOtherwise, they\u0027ll leak and cause failures\n\nFixes: 305838406\nTest: adb shell /data/benchmarktest/bionic-benchmarks/bionic-benchmarks --benchmark_filter\u003dBM_property\nChange-Id: I2d6ed4aa30012dd7aa92eed8dc564699e6505c8f\n"
    },
    {
      "commit": "58df4dfe9a4eb4f0491c299570506a3c83f89e44",
      "tree": "9f2d6db78bc35dcfbbd7694419797fb908f5a6e1",
      "parents": [
        "5512532418996ecb2200f57a493a1687049b59f2"
      ],
      "author": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Tue Nov 07 15:20:49 2023 -0800"
      },
      "committer": {
        "name": "Nate Myren",
        "email": "ntmyren@google.com",
        "time": "Tue Nov 07 15:20:49 2023 -0800"
      },
      "message": "Modify benchmark for appcompat properties, exit when init fails\n\nThe property_benchmark needs to use the `load_default_path` parameter in\nwhen writing its test, which is necessary now. Also, the benchmark\nseemed to retry infinitely when the initialization failed, so it has now\nbeen modified to exit when the initialization fails, and send a message\nas it does so.\n\nBug: 305838406\nTest: adb shell /data/benchmarktest/bionic-benchmarks/bionic-benchmarks --benchmark_filter\u003dBM_property\nChange-Id: Idb235b0e7c119fa08ace5b814d7f7404dd0eaeb3\n"
    },
    {
      "commit": "bdb678c9bdad161d033b236f261ba1cb299fada2",
      "tree": "fa287787541a5fa9a9cf2432a813c6bda26d4820",
      "parents": [
        "9354f3e9a96dd0292c358d8e1afb6ef9b329be79",
        "64d03a287e0e45a0c34075c1687790bb115d4220"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Feb 03 13:58:11 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Feb 03 13:58:11 2020 +0000"
      },
      "message": "Merge \"Add an end-to-end property benchmark.\""
    },
    {
      "commit": "b481a2e743102efc6b18cc586aa979a70e575d64",
      "tree": "25b69c933cd0ca4d776d7845ad22a8692157a0cd",
      "parents": [
        "de39d9242ae38733c33173957386db0b8060e52a"
      ],
      "author": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 20:41:55 2019 +0000"
      },
      "committer": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 20:41:55 2019 +0000"
      },
      "message": "Revert \"Revert \"Make system property reads wait-free\"\"\n\nThis reverts commit de39d9242ae38733c33173957386db0b8060e52a.\n\nReason for revert: This revert is not needed\n\nChange-Id: I34af8e5d75c724f6c4066fafbfc6bc7d58377601\n"
    },
    {
      "commit": "de39d9242ae38733c33173957386db0b8060e52a",
      "tree": "2a7e44d156dac92caacf04f9c6c9c3540638a03f",
      "parents": [
        "0cf90556de2bde53a1957c5946036b2fe2e4e429"
      ],
      "author": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 18:24:06 2019 +0000"
      },
      "committer": {
        "name": "Raman Tenneti",
        "email": "rtenneti@google.com",
        "time": "Tue Nov 12 18:24:06 2019 +0000"
      },
      "message": "Revert \"Make system property reads wait-free\"\n\nThis reverts commit 0cf90556de2bde53a1957c5946036b2fe2e4e429.\n\nReason for revert: Device boot failures - 144355953\n\nChange-Id: Icd4fc8c7a1d06d688a6d37e6f1c1aa45563f711b\n"
    },
    {
      "commit": "0cf90556de2bde53a1957c5946036b2fe2e4e429",
      "tree": "25b69c933cd0ca4d776d7845ad22a8692157a0cd",
      "parents": [
        "5d9ba9ea702a4d20b99639996b8bd27f121d5bd7"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Tue Oct 29 15:40:16 2019 -0700"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 11 11:17:00 2019 -0800"
      },
      "message": "Make system property reads wait-free\n\nRight now, when we read a system property, we first (assuming we\u0027ve\nalready looked up the property\u0027s prop_info) read the property\u0027s serial\nnumber; if we find that the low bit (the dirty bit) in the serial\nnumber is set, we futex-wait for that serial number to become\nnon-dirty. By doing so, we spare readers from seeing partially-updated\nproperty values if they race with the property service\u0027s non-atomic\nmemcpy to the property value slot. (The futex-wait here isn\u0027t\nessential to the algorithm: spinning while dirty would suffice,\nalthough it\u0027d be somewhat less efficient.)\n\nThe problem with this approach is that readers can wait on the\nproperty service process, potentially causing delays due to scheduling\nvariance. Property reads are not guaranteed to complete in finite time\nright now.\n\nThis change makes property reads wait-free and ensures that they\ncomplete in finite time in all cases. In the new approach, we prevent\nvalue tearing by backing up each property we\u0027re about to modify and\ndirecting readers to the backup copy if they try to read a property\nwith the dirty bit set.\n\n(The wait freedom is limited to the case of readers racing against\n*one* property update. A writer can still delay readers by rapidly\nupdating a property --- but after this change, readers can\u0027t hang due\nto PID 1 scheduling delays.)\n\nI considered adding explicit atomic access to short property values,\nbut between binary compatibility with the existing property database\nand the need to carefully handle transitions of property values\nbetween \"short\" (compatible with atomics) and \"long\" (incompatible\nwith atomics) length domains, I figured the complexity wasn\u0027t worth it\nand that making property reads wait-free would be adequate.\n\nTest: boots\nBug: 143561649\nChange-Id: Ifd3108aedba5a4b157b66af6ca0a4ed084bd5982\n"
    },
    {
      "commit": "ba1a723ad111018a1de7992032dabef8c87b15d7",
      "tree": "8e83fddc57fb9431f66fbf966de612d3c83ffc58",
      "parents": [
        "f1e657cdff25541959e1a81e0894bc4245d8e9d1"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:19:53 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Nov 14 15:46:49 2018 -0800"
      },
      "message": "switch to using android-base/file.h instead of android-base/test_utils.h\n\nTest: compile\nBug: 119313545\nChange-Id: I664fb32522d01909c603d7b903475c4e9aea9223\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "ee8e3dd67c910907115c7cef87be3d898d71a05d",
      "tree": "022d9c97d9bdc95c34dbf0052b8dcf9ce394bc46",
      "parents": [
        "44c7b6ad0ac277a8ed3ee2278f6c1ee23f130ab5"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Feb 21 15:01:22 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Feb 21 15:10:17 2018 -0800"
      },
      "message": "Remove non-trivial constructors/destructors from SystemProperties\n\nWith the goal of disallowing exit time destructors, SystemProperties\u0027s\nnon-trivial destructor needs to be removed.  This means replacing the\nunion hack with yet another hack as we don\u0027t want to allocate anything\ndespite relying on some polymorphism.\n\nBug: 73485611\nTest: boot bullhead\nChange-Id: I64223714c9b26c9724bfb8f3e2b0168e47b56bc8\n"
    },
    {
      "commit": "64d03a287e0e45a0c34075c1687790bb115d4220",
      "tree": "738d073b19369fb47082d715b5c748fe96e76dc5",
      "parents": [
        "ba69b37a75a793a5c534c6e53d2958770fa54786"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Nov 07 13:47:37 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Dec 19 11:25:42 2017 -0800"
      },
      "message": "Add an end-to-end property benchmark.\n\nThis change adds an end-to-end property benchmark that finds each\nproperty currently accessible on the system via\n__system_property_find().\n\nTest: run this benchmark\nChange-Id: I7d20cc9caf36bf3650c3bb3f58500b7df09a908a\n"
    },
    {
      "commit": "e275d6d72db1868056a204e8483a7346a28cb8d6",
      "tree": "3191e33ca242518f7d486c6b37212c7f682498b0",
      "parents": [
        "721a5305e24b69b68ecc9431526f32131abc8f6c"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Dec 11 23:31:33 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Dec 18 15:17:55 2017 -0800"
      },
      "message": "Split properties into their own class to make testing better\n\nReinitializing system properties can result in crashes later in the\nprogram, and is generally not recommended or even supported.  This\nchange moves the actual logic for system properties into a class that\ncan be tested in isolation, without reinitializing the actual system\nproperty area used in libc.\n\nBug: 62197783\nTest: boot devices, ensure properties work\nTest: system property unit tests and benchmarks\nChange-Id: I9ae6e1b56c62f51a4d3fdb5b62b8926cef545649\n"
    },
    {
      "commit": "858e33698d947a686fa59ed0206ce7c6656d3439",
      "tree": "74da61c257264c74bb683c5a7d7e0d387b53ac50",
      "parents": [
        "27d4977f1f4d0b4cbd67bd0cfc29d4d8cfff96f1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 08:53:15 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 30 09:09:41 2017 -0800"
      },
      "message": "Generate all the benchmarks to run.\n\nInstead of requiring the need to maintain a list of all the benchmarks,\nadd a programmatic way to generate all of the benchmarks.\n\nThis generation runs the benchmarks in alphabetical order.\n\nAdd a new macro BIONIC_BENCHMARK_WITH_ARG that will be the default argument\nto pass to the benchmark. Change the benchmarks that require default arguments.\n\nAdd a small example xml file, and remove the full.xml/host.xml files.\n\nUpdate readme.\n\nTest: Ran new unit tests, verified all tests are added.\nChange-Id: I8036daeae7635393222a7a92d18f34119adba745\n"
    },
    {
      "commit": "a7b0f8899790198cd9e72950f481679fe31e1a92",
      "tree": "4167c3afc82ffb281f43ef2332a60c675f121e43",
      "parents": [
        "0d6485eca47f0e860486795b2da97679948fd5d5"
      ],
      "author": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Jul 24 20:01:13 2017 -0700"
      },
      "committer": {
        "name": "Anders Lewis",
        "email": "agloo@google.com",
        "time": "Mon Aug 07 13:16:09 2017 -0700"
      },
      "message": "Implement interface for bionic benchmarks.\n\nTest: Unit tests.\nChange-Id: Ic61932f61ddd572e2f045b601f9da6e090cdc45d\n"
    },
    {
      "commit": "4a92ffd3029e9e38c3a55222676a126db5a3b962",
      "tree": "433d790ddfffcfb36b0b362e8c968ee2e6197a55",
      "parents": [
        "ebceea8e85ad2897a5ce8575b81f18fdd7aa0320"
      ],
      "author": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:36:13 2017 +0100"
      },
      "committer": {
        "name": "Victor Khimenko",
        "email": "khim@google.com",
        "time": "Wed Mar 01 20:43:42 2017 +0100"
      },
      "message": "Stop using __system_property_area__\n\nApparently that \"backdoor\" is no longer needed - the proper way is\nto reinitialize properties:\n    https://android-review.googlesource.com/#/c/181794/24/tests/system_properties_test.cpp\n\nAlso removes mentions of libnativehelper test (it no longer uses\n__system_property_area__) and removes useless \"extern\" declaration\n(actual use was removed long ago).\n\nTest: refactoring CL, existsing tests still pass\n\nBUG\u003d21852512\nBUG\u003d34114501\n\nChange-Id: I2223cab2fcb671ea180ad4470a7aba5c9cd20bd8\n"
    },
    {
      "commit": "be763d85c881b58754e650192204e8a2309660cb",
      "tree": "09175cceb1d28d140993c687b4c89abfeac2763d",
      "parents": [
        "b3321c961452f69650e4a6bd2a7db317a80b3234"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Mon Nov 14 14:16:08 2016 +0100"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Nov 15 09:07:11 2016 +0100"
      },
      "message": "Fix deprecated range_x() calls.\n\nTest: builds with new libbenchmark.\nChange-Id: I91c0e5c1b5cf75b8e551f3c59d83ac9352817c4a\n"
    },
    {
      "commit": "956df72eb0758671406d731056a3f29cc32895c7",
      "tree": "64076b1ac5cfdcd9edf7c91d22de954b02cda005",
      "parents": [
        "4d9a97bb916aaa7d7bf819ef999d4b1a58d4750d"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Apr 22 10:25:10 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Apr 22 10:25:10 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warning.\n\nBug: 28341362\nChange-Id: I85d2f83a3ca35699cfab54e725a64aaf3013c8f1\n"
    },
    {
      "commit": "281e06ba69ce6f591697acf65a24651050809920",
      "tree": "c2a4caf009b63e8be398ef3da1f0e792f41c9746",
      "parents": [
        "925bf56447cf87da910441f12b302051e07549ba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 17 10:23:52 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 07 13:50:50 2016 -0800"
      },
      "message": "Switch bionic over to google-benchmark.\n\nAlso removes the old benchmarking library.\n\nChange-Id: I4791ae69fa5dea03644d3d411c60b7c6d1fceae3\n"
    },
    {
      "commit": "df4942c04a63ae6e4f5c78ece9f696d6b8b74d32",
      "tree": "f4e1061bcaf821753263413f1e89fb82f5d50e99",
      "parents": [
        "3e1b5f46c07aef5983ecf2feb1c3369b2cd200c0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Feb 17 19:58:53 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 19 14:58:24 2015 -0800"
      },
      "message": "Refactor the benchmark code.\n\nChanges:\n- Modify the benchmarks to derive from a single Benchmark object.\n- Rewrite the main iteration code. This includes changing the iteration\n  code to use the actual total time calculated by the benchmark as a basis\n  for determining whether there are enough iterations instead of using\n  the time it takes to run the benchmark.\n- Allow benchmarks to take no argument, int, or double.\n- Fix the PrettyInt printer for negative integers.\n- Modify the max column width name to include the whole name including\n  the arg part.\n- Reformat property_benchmark.cpp in line with the rest of the code.\n- Modify a few of the math benchmarks to take an argument instead of\n  separate benchmarks for the same function with different args.\n- Create a vector of regex_t structs to represent the args all at\n  once instead of when running each benchmark.\n\nThis change is in preparation for adding new math based benchmarks.\n\nTested by running on a nexus flo running at max using the new code\nand the old code and comparing. All of the numbers are similar, but\nsome of the iterations are different due to the slightly different\nalgorithm used.\n\nChange-Id: I57ad1f3ff083282b9ffeb72e687cab369ce3523a\n"
    },
    {
      "commit": "53531ccebbaf103d80516ff74874482ca3ee31fc",
      "tree": "4ffa7a74ff337a765c891979bba73c7da0e60e76",
      "parents": [
        "64035c4a4b52ce87398e3a5945ad6b755c8f35b1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jul 15 19:09:07 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jul 15 19:26:28 2014 -0700"
      },
      "message": "Make sure not to construct illegal property names.\n\nChange-Id: I37624e69aec51efd4291f076fb87af3f35d33025\n"
    },
    {
      "commit": "28417e6314768d057ab7ad7a0208f1af7597b4d6",
      "tree": "5a2eecba3d3d40a540a23c1b7b21c255af6a5a21",
      "parents": [
        "430d5f93ceea2e5172144a05885c295dca51b876"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Wed Jul 09 15:48:37 2014 -0700"
      },
      "committer": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Wed Jul 09 15:48:37 2014 -0700"
      },
      "message": "Added a __system_property_serial benchmark.\n\nChange-Id: Ifc2116f26acb242f4dcdb6eefe128899a9dc63bb\n"
    },
    {
      "commit": "a304476145810d62f76b23a188b1680287716cfd",
      "tree": "69903a4ec19e7989908f008649d36a35c3f1536e",
      "parents": [
        "3139f6fdd7f9bec3b53be3da62314ae8ba24ceb4"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Wed Jul 09 10:26:17 2014 -0700"
      },
      "committer": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Wed Jul 09 10:26:17 2014 -0700"
      },
      "message": "Added __system_propery_read benchmark.\n\nChange-Id: Ic0e9118859a013aa04841de25822a81a7fc74b3c\n"
    },
    {
      "commit": "8b1ade5c0bdb5b3186c73c3081cc3013540190d9",
      "tree": "eda6eb15366d6a346236648e795cbcf5cd1d693a",
      "parents": [
        "9fb53dd4dbaa7633c234d9da8417827fa3d3c32f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 01 13:00:32 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 01 13:10:48 2014 -0700"
      },
      "message": "Modify hard-coded directory.\n\nUse the ANDROID_DATA environment variable instead of the hard-coded\ndirectory for these benchmarks.\n\nChange-Id: I00bae7b4a24e81e77fc8f52e1fe99f4d4918f520\n"
    },
    {
      "commit": "bd3efbc9b585e0c9801b0b35f282347cb8692ca8",
      "tree": "ee91fc952e907515d959f80a55de157318ad124a",
      "parents": [
        "05ec00bf62ac168c9787a3d0640879ab3e502fe5"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Nov 15 17:49:47 2013 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Dec 10 18:24:30 2013 -0800"
      },
      "message": "bionic: move benchmarks out of tests directory\n\nChange-Id: I4d054965198af22c9a9c821d1bc53f4e9ea01248\n"
    },
    {
      "commit": "bd6dc6a8864a1997eb8608030ac816740169c463",
      "tree": "4777cffa0488cc715a1e337cfca758d5a2038892",
      "parents": [
        "c5cf53701a5e04aeead70b1298bb38c51633e96d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 15 12:54:40 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 15 12:54:40 2013 -0700"
      },
      "message": "Change hard-coded temporary directory.\n\nThe properties tests creates a temporary directory in /data/nativetest,\nbut this directory might not exist in all circumstances.\nChange this to create the temporary directory in /data/local/tmp.\n\nChange-Id: I812d3e24fcd084c5d74055c9faa95b1656f255bc\n"
    },
    {
      "commit": "1540f601be32bdd4af8e8c13bdf2bc06bdaa76f1",
      "tree": "76a3c1ec1fff772960cd08143071ce0bc0e66600",
      "parents": [
        "996cdc4b1a7fcae89650bee0a44b6cb7900a4a3c"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Jun 19 13:31:21 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 24 16:35:37 2013 -0700"
      },
      "message": "bionic: revert to a single (larger) property area\n\nd329697 is too complicated.  Change the multiple property pages back to\na single 128K property area that\u0027s mapped in entirely at initialization\n(the memory will not get allocated until the pages are touched).\n\nd329697 has other changes useful for testing (moving property area\ninitialization inside bionic and adding __system_property_set_filename)\nso undo the change manually rather than with git revert.\n\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n\n(cherry picked from commit 5f05348c18286a2cea46eae8acf94ed5b7932fac)\n\nChange-Id: I690704552afc07a4dd410277893ca9c40bc13e5f\n"
    },
    {
      "commit": "cb215a7e9ecec9feb5aae9d9a5b1c89f392208e7",
      "tree": "f1f337bbd7b7c1406bea8821e69b43082c56ba10",
      "parents": [
        "0ea1d5c0ae94ee581c72451b20813c028f51090c"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Wed Feb 13 14:41:48 2013 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 24 16:35:15 2013 -0700"
      },
      "message": "bionic: make property area expandable\n\nThe property area is initially one 4K region, automatically expanding as\nneeded up to 64 regions.\n\nTo avoid duplicating code, __system_property_area_init() now allocates\nand initializes the first region (previously it was allocated in init\u0027s\ninit_property_area() and initialized in bionic).  For testing purposes,\n__system_property_set_filename() may be used to override the file used\nto map in regions.\n\nSigned-off-by: Greg Hackmann \u003cghackmann@google.com\u003e\n\n(cherry picked from commit d32969701be070c0161c2643ee3c3df16066bbb8)\n\nChange-Id: I038d451fe8849b0c4863663eec6f57f6521bf4a7\n"
    },
    {
      "commit": "7d06813d93b3b3745d438c000f596a38cb0efeb4",
      "tree": "28d98bbb2dbcab2e647a05c2128175e668c75f0b",
      "parents": [
        "0005b3544be345e697592b4dc199ebaa37048559"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 18 13:08:28 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 18 13:08:28 2013 -0700"
      },
      "message": "bionic: fix deleting property arrays in property benchmark\n\nUse delete[] to delete arrays allocated with new []\n\nChange-Id: Icc2a6b23df09049c008f7f1f50ed93a277174308\n"
    },
    {
      "commit": "7d90cfa6b5b49abb2123b069b81e0b9f4eba6432",
      "tree": "a63015694bc84cd2ea0686b84bf4f447ab9dbea9",
      "parents": [
        "977a33137d2be0093f474055f839cf665b82b588"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 18 12:47:38 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jun 18 12:55:52 2013 -0700"
      },
      "message": "bionic: change properties benchmarks to read a single property\n\nThe properties benchmarks were reading n properties from a property\narea with n properties in it, which was making it hard to compare\nthe time between runs of different sizes.  Change the benchmark\nto read a random property per iteration so the numbers between\nruns are comparable.\n\nChange-Id: Ib1648ce0948d9038fce76d209608427376cfb8da\n"
    },
    {
      "commit": "b27e200ad6170ba3163f5ae6ba581bdaabb2e696",
      "tree": "fe98c4e40bc492a8db4221bdf539a50df54e7c77",
      "parents": [
        "5cf32de7a0fea0b10959b598300babc6e4f54d95"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jan 28 17:19:43 2013 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Jun 17 16:58:47 2013 -0700"
      },
      "message": "bionic: add tests for properties\n\n(cherry picked from commit 37d9f75dde881a0ba1c1b3253b1be19d4096963d)\n\nChange-Id: Iac00ce10a4272032a1cbdbc4204277d6876e3365\n"
    }
  ]
}
