)]}'
{
  "log": [
    {
      "commit": "c2ce12046c74613da2c41e1cce876db6ce81d4a9",
      "tree": "7213dde24b5fe04067e665f0e8524f2eb95a887d",
      "parents": [
        "814e3a2b31703400ae5d1ee5fcb96e87013d0794"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 22 12:40:55 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jun 22 12:52:17 2017 -0700"
      },
      "message": "Put back more legacy pthread APIs.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/423\nBug: https://stackoverflow.com/q/44580542/632035\nChange-Id: Ibf52a969afffbfcdf6793a0bf8b0e10bbdd1f32c\n"
    },
    {
      "commit": "8c67f1e617357cad075874598702bf9a9c8e8200",
      "tree": "2550c1ef1797fe002d1456ff57f3bb79b6304730",
      "parents": [
        "4f61181428ec68c2e87610829ea6a06be7eb3a4e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 12 14:17:49 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 12 16:46:01 2017 -0700"
      },
      "message": "Expose pthread_mutex_lock_timeout_np to the NDK.\n\nThe proper API for this isn\u0027t available until L, so expose this for\nAPI levels earlier than that.\n\nTest: make checkbuild\nBug: https://github.com/android-ndk/ndk/issues/420\nChange-Id: I382b8f557be9530f3e13aaae353b4a6e7f9301ab\n"
    },
    {
      "commit": "2e8e5e60b6ecbcfe2110242e41b9ec5340b11cf5",
      "tree": "8810a00e508e0dd698d23f513432fff2e513e87e",
      "parents": [
        "ee1c45f88f5fcd1b1d43c325e0de366cc3d0ce36"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 12:58:31 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Apr 20 16:57:25 2017 -0700"
      },
      "message": "DO NOT MERGE: The future is now.\n\n__INTRODUCED_IN_FUTURE -\u003e __INTRODUCED_IN(26)\n\nBug: http://b/37437368\nTest: treehugger\nChange-Id: I601a23da83b65a0cd582cc840ed3856a9031b673\n(cherry picked from commit cb302f932a3532f1484e1e70894e9b1199384283)\n"
    },
    {
      "commit": "468a5d2d83a3d719f7493d041abc69587756d8fa",
      "tree": "dee5d5ba9409f295326e0387507fb92783a8bbe7",
      "parents": [
        "9cb82a2c6b9001f7c50cbb3465f4aabc5d7cd055"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 21 09:39:56 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 21 09:55:32 2017 -0700"
      },
      "message": "pthread barrier and spinlock types should only appear at API level 24.\n\nBug: https://github.com/android-ndk/ndk/issues/336\nTest: builds\nChange-Id: I938d9d7ea879d1dbc355f14e100f1ea31a51a1f0\n"
    },
    {
      "commit": "95fa061678400315ee757758bf5f9146176d47a0",
      "tree": "0b3428e9d7d274e79809471c1d7ae3896a10ff03",
      "parents": [
        "1d20532f5c5f8c1638735eb04586be82a7d0379c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 12:29:52 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 12:36:38 2016 -0700"
      },
      "message": "Rename __pure, __pure2, and __purefunc.\n\nThese names were pretty misleading (aka \"backwards\"), so switch to the\nsame obvious names glibc uses.\n\nTest: build.\nChange-Id: Ia98c9dbbccd0820386116562347654e84669034a\n"
    },
    {
      "commit": "280236537e06c7accaffabf8fb407f93dd1c834f",
      "tree": "a00be2fd73851a7a7e09b56e52c173662297641e",
      "parents": [
        "cea5c8a6099cff4f3ceccb3309a522bb1cf377b4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 13:18:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 13:18:32 2016 -0700"
      },
      "message": "POSIX says \u003csys/types.h\u003e should make all the pthread_* types available.\n\nhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html\n\nChange-Id: I606194e15ceaa3129f266a9a460c358eaa8bf686\n"
    },
    {
      "commit": "02ac028bf7899f293a39e991f346fd35e2910949",
      "tree": "37ceef29e63f7a0a86110afbf543cdea4acd84e4",
      "parents": [
        "166f875eabdd2b7c508fc4ed1789a0d37fb1bdce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 23:18:13 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 11 23:18:13 2016 -0700"
      },
      "message": "Fix pthread_barrierattr_getpshared prototype.\n\nAs http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_barrierattr_getpshared.html\nis my witness, there\u0027s a missing `const` here.\n\nChange-Id: Ifd68188fb952460b64d144bdc21a53bc40ed82a7\n"
    },
    {
      "commit": "5470c183611737af5ec954984e4bdb5da8c99b73",
      "tree": "945f64e45be1c14ea0a6c75f6611555ef2b706ae",
      "parents": [
        "237366867a4fbd8c2fed74512ca26d2ce3b39b82"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 11:36:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 22 13:12:53 2016 -0700"
      },
      "message": "Make it possible to build bionic with -I instead of -isystem.\n\nVarious things:\n\n* work around -Wnullability-completeness.\n* use C++ casts in C++ and C casts in C.\n* stop using attributes clang doesn\u0027t support (such as `warning`).\n* remove duplicate definitions of XATTR_CREATE and XATTR_REPLACE.\n\nChange-Id: I07649e46275b28a23ca477deea119fe843999533\n"
    },
    {
      "commit": "46b44160e9e4c466be0faf1bb8d6ec70ecc83273",
      "tree": "80036c736b6315189745423724f1d69cb3b74682",
      "parents": [
        "6e9c1f61d8ea04d35d18709e373da355ca32e523"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri May 27 11:14:16 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 02 13:40:35 2016 -0700"
      },
      "message": "Update header versions for NDK platform fixes.\n\nBug: http://b/28178111\nChange-Id: Icd638673b409aa43a91490f77c6b4d79c9ea20d9\n"
    },
    {
      "commit": "e2f25831eba8dcbb57aebbf50c463d4473c7df30",
      "tree": "b76e1bf6ca4ab7d81ceae9db3b9560a4856f2204",
      "parents": [
        "d2f3ce9c89715accb5b294f0c0a17b2a50656333"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 09 13:29:26 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 09 13:29:26 2016 -0700"
      },
      "message": "Remove declaration of pthread_cond_timedwait_relative_np.\n\nIt\u0027s been deprecated long enough, and nothing left in the tree (except\ncode that isn\u0027t even built) is still using it.\n\nBug: http://b/27918161\nChange-Id: Ibf824c1063d49484037de5c03b98bec5bdd4dcf6\n"
    },
    {
      "commit": "3164ab733ccdcd5c900d0f1ed1a0dbbb11ad61a2",
      "tree": "e49129bac0325a210a97e1669c99b9da397545cf",
      "parents": [
        "5ac45a2add41fd7c1640815accf09a29bd14aac6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 06 17:45:26 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 06 17:46:48 2016 -0700"
      },
      "message": "Remove pthread_mutex_lock_timeout_np from \u003cpthread.h\u003e.\n\nIt\u0027s been deprecated long enough, and nothing left in the tree (except\ncode that isn\u0027t even built) is still using it.\n\nBug: http://b/27918161\nChange-Id: I1786f5e2528a23c17b3f7298f4ba5fc7761a26c5\n"
    },
    {
      "commit": "baa2a973bd776a51bb05a8590ab05d86eea7b321",
      "tree": "ec24271fcc30be277ea654ef8425f4a109732f17",
      "parents": [
        "7ee8e299ba5dc7bb68c88931b04b10a69cf0f21f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 13 16:58:50 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 05 17:11:54 2016 -0700"
      },
      "message": "Use clang\u0027s nullability instead of nonnull.\n\nhttp://clang.llvm.org/docs/AttributeReference.html#nonnull\n\n_Nonnull is similar to the nonnull attribute in that it will instruct\ncompilers to warn the user if it can prove that a null argument is\nbeing passed. Unlike the nonnull attribute, this annotation indicated\nthat a value *should not* be null, not that it *cannot* be null, or\neven that the behavior is undefined. The important distinction is that\nthe optimizer will perform surprising optimizations like the\nfollowing:\n\n    void foo(void*) __attribute__(nonnull, 1);\n\n    int bar(int* p) {\n      foo(p);\n\n      // The following null check will be elided because nonnull\n      // attribute means that, since we call foo with p, p can be\n      // assumed to not be null. Thus this will crash if we are called\n      // with a null pointer.\n      if (src !\u003d NULL) {\n        return *p;\n      }\n      return 0;\n    }\n\n    int main() {\n      return bar(NULL);\n    }\n\nNote that by doing this we are no longer attaching any sort of\nattribute for GCC (GCC doesn\u0027t support attaching nonnull directly to a\nparameter, only to the function and naming the arguments\npositionally). This means we won\u0027t be getting a warning for this case\nfrom GCC any more. People that listen to warnings tend to use clang\nanyway, and we\u0027re quickly moving toward that as the default, so this\nseems to be an acceptable tradeoff.\n\nChange-Id: Ie05fe7cec2f19a082c1defb303f82bcf9241b88d\n"
    },
    {
      "commit": "34c599a8b0b04f66b065c4d84b809f74dd44382d",
      "tree": "3f7e5541c600bb4f6f3f733f68d6ae697076ca86",
      "parents": [
        "14adff1cfa06a3d4d3281a9bf7848b556d84c20d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 13:45:25 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 16:39:50 2016 -0700"
      },
      "message": "Add __INTRODUCED_IN_FUTURE for unreleased APIs.\n\nFuture API levels aren\u0027t known (e.g. 25 could be a maintenance release\nof N that doesn\u0027t contain any bionic updates), so use a placeholder\nmacro that we can find and replace with the actual API level before each\nrelease.\n\nBug: http://b/28178111\nChange-Id: I667fe53ea1ac49b64135170fc30d5dbe9df94e29\n"
    },
    {
      "commit": "14adff1cfa06a3d4d3281a9bf7848b556d84c20d",
      "tree": "ce1fb2867f69e49f57d0bbe8a9099b09beda0c19",
      "parents": [
        "5a3d5cac642f9e58b2c510eab23789fb4fc3a753"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 12:00:55 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Apr 29 16:39:50 2016 -0700"
      },
      "message": "Add versioning information to symbols.\n\nBug: http://b/28178111\nChange-Id: I46bf95accd819f4521afb1173d8badcc5e9df31c\n"
    },
    {
      "commit": "3615a521265271acb02c30e2ab021969852b77c8",
      "tree": "f23916a9e4850b75d0787b6f605b9fb947f90ad5",
      "parents": [
        "671e6b20eabd0a1ab973f77dff272a00a4096ee7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 28 10:07:21 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 28 10:07:21 2016 -0700"
      },
      "message": "Remove declaration of pthread_cond_timeout_np.\n\nBug: http://b/27918161\nChange-Id: I61b5710dc394c155bdb4577a750b96195033251e\n"
    },
    {
      "commit": "96583dcf95ba51c3ac51ef65c2172be1b2696431",
      "tree": "7f4fca0fcf7d8d2f8c34a05c4f12f2c002cb44c2",
      "parents": [
        "2846ae70fb967269e8fcd2d854d04c9aeb5d01d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 30 10:33:54 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 30 10:33:54 2016 -0700"
      },
      "message": "Stop defining HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE.\n\nBug: http://b/27918161\nChange-Id: I21d4dfa4636aa06a93b3c8a215113f66f37f0bc7\n"
    },
    {
      "commit": "cc78b252d113229f44550b1158f0fc67439d0184",
      "tree": "4dae830d5cdbb3176c8820c3cd0fa22634d39b03",
      "parents": [
        "63322aa555d06bc961bfe419ba69471cdab2927b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 23 20:26:35 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 23 20:26:35 2016 -0700"
      },
      "message": "Remove the __USE_GNU guard from pthread_setname_np again.\n\nCaused build breakage, but not spotted by TreeHugger:\n\n  external/libnfc-nxp/Linux_x86/phDal4Nfc.c:737:5: error: implicit declaration of function \u0027pthread_setname_np\u0027 is invalid in C99 [-Werror,-Wimplicit-function-declaration]\n    pthread_setname_np(pthread_self(), \"reader\");\n    ^\n\nNice file name.\n\nChange-Id: I102e55718babf4e4f2f2c64066c6a83ed3ac86d3\n"
    },
    {
      "commit": "725b2a96a70c6570a1fb84562fe46348414752cd",
      "tree": "c6e4772eff6ea9ebb881ca579f14e6c4f87fc05d",
      "parents": [
        "68a2f12304e960f2045f3819c48311e7bf4d3126"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 23 11:20:47 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 23 17:40:25 2016 -0700"
      },
      "message": "Add pthread_getname_np.\n\nAlso guard both these GNU extensions with _GNU_SOURCE.\n\nAlso improve the tests to test each case on both the current thread and\nanother thread, since the code paths are totally different.\n\nBug: http://b/27810459\nChange-Id: I72b05bca5c5b6ca8ba4585b8edfb716a1c252f92\n"
    },
    {
      "commit": "5704c423c81790195161c1757ae79da188590c51",
      "tree": "66ebd378fb496400d35ad38a8c4eb25931ad30f2",
      "parents": [
        "ac67b4eb7c70ea668abb32298b0cb16920a32a66"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 25 18:06:24 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 11:09:44 2016 -0800"
      },
      "message": "Implement POSIX lockf.\n\nThis has been requested a few times over the years. This is basically\na very late rebase of https://android-review.googlesource.com/45470\nwhich was abandoned years ago. One addition is that this version has\n_FILE_OFFSET_BITS\u003d64 support.\n\nPOSIX puts this in \u003cunistd.h\u003e. glibc also has it in \u003cfcntl.h\u003e.\n\nBug: http://b/13077650\nChange-Id: I5862b1dc326e326c01ad92438ecc1578d19ba739\n"
    },
    {
      "commit": "fe3a83a9343f0e4ff654f09ef8ffc8a773c7c105",
      "tree": "092ca0be892463bc543eaaabc9feda130ad37fb1",
      "parents": [
        "b804b9d67b9e3a8c63471ff9892f6abea2a58684"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Nov 17 16:03:18 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Nov 18 17:51:21 2015 -0800"
      },
      "message": "Implement pthread spin.\n\nIn order to run tsan unit tests, we need to support pthread spin APIs.\n\nBug: 18623621\nBug: 25392375\nChange-Id: Icbb4a74e72e467824b3715982a01600031868e29\n"
    },
    {
      "commit": "e7c2fffa16eccecfd43d99516751a43776f5f609",
      "tree": "bceec6b32ce1159456b2b0bb7ea0ea320d0970cc",
      "parents": [
        "004fead6bc55d1e65b4fb9ca1ac36646b99e5fdd"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Nov 05 22:06:09 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Nov 16 14:02:26 2015 -0800"
      },
      "message": "Implement pthread barrier.\n\nBug: 24341262\nChange-Id: I5472549e5d7545c1c3f0bef78235f545557b9630\n"
    },
    {
      "commit": "2b028f5ce47b8d27ca6d3b86e135f7d9b0359547",
      "tree": "f0340cfddde5600b2d547eba9338b78f25ad4df1",
      "parents": [
        "d6d6c0c4f10c047b25b45289f5c30338cd1da239"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 23 09:14:16 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 23 09:14:16 2015 -0700"
      },
      "message": "Fix bad merge of 64e9e71cdb7d88397e510e1986d494b797ed3b45.\n\nBug: http://b/22029751\nChange-Id: I6245fe5f274c9af8a632da5eebe50cf9fe29dc4a\n"
    },
    {
      "commit": "fdcaeac1a91c3e0a1a13498b7d1d8b223e700a86",
      "tree": "10c7d9b090a71a9325d9a828cb984378e495131c",
      "parents": [
        "ae1e75458ad281f121116c8c5dfe9d8086e43a2b",
        "00cef82013c0826bb43c11651d25de8b99335618"
      ],
      "author": {
        "name": "Sharvil Nanavati",
        "email": "sharvil@google.com",
        "time": "Mon Jun 15 15:48:00 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 15 15:48:00 2015 +0000"
      },
      "message": "am 00cef820: am 64e9e71c: Define nonportable pthread mutex macros with the _NP suffix.\n\n* commit \u002700cef82013c0826bb43c11651d25de8b99335618\u0027:\n  Define nonportable pthread mutex macros with the _NP suffix.\n"
    },
    {
      "commit": "00cef82013c0826bb43c11651d25de8b99335618",
      "tree": "b320c2a3f0a3b0b50ac5aa146a9fbd32a2454e75",
      "parents": [
        "61b040a57094093cfb090ebb1c321d4a69c20b64",
        "64e9e71cdb7d88397e510e1986d494b797ed3b45"
      ],
      "author": {
        "name": "Sharvil Nanavati",
        "email": "sharvil@google.com",
        "time": "Fri Jun 12 20:13:46 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 12 20:13:46 2015 +0000"
      },
      "message": "am 64e9e71c: Define nonportable pthread mutex macros with the _NP suffix.\n\n* commit \u002764e9e71cdb7d88397e510e1986d494b797ed3b45\u0027:\n  Define nonportable pthread mutex macros with the _NP suffix.\n"
    },
    {
      "commit": "64e9e71cdb7d88397e510e1986d494b797ed3b45",
      "tree": "1355a7aebaf1ad0d877ee92b7368129cee617afe",
      "parents": [
        "ea248d9ca80d4ef731d821648711094aa03b0318"
      ],
      "author": {
        "name": "Sharvil Nanavati",
        "email": "sharvil@google.com",
        "time": "Fri Jun 12 10:56:17 2015 -0700"
      },
      "committer": {
        "name": "Sharvil Nanavati",
        "email": "sharvil@google.com",
        "time": "Fri Jun 12 10:56:17 2015 -0700"
      },
      "message": "Define nonportable pthread mutex macros with the _NP suffix.\n\nChange-Id: I1066352e5b2607f64daf6aeb0030d0bbe88ead8d\n"
    },
    {
      "commit": "511cfd9dc8cb41bca4920687c7d816ee916ee8e5",
      "tree": "802f0fa957f99a38068981600a7fc81f68f04950",
      "parents": [
        "26e663d4796e74fc40a62b3d2a438b726bbb056e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jun 09 18:46:15 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jun 09 18:46:15 2015 -0700"
      },
      "message": "Allow NULL in pthread_mutex_lock/unlock.\n\nThe pthread_mutex_lock and pthread_mutex_unlock were allowed to\nfail silently on L 32 bit devices when passed a NULL. We changed\nthis to a crash on 32 bit devices, but there are still games that make\nthese calls and are not likely to be updated. Therefore, once again\nallow NULL to be passed in on 32 bit devices.\n\nBug: 19995172\nChange-Id: If7e8860075ecd63c0064d80f64e226fad7bd3c26\n"
    },
    {
      "commit": "76615dae93c18ac890e167c547a08c0228709a33",
      "tree": "12a7e87c6fb332bebc087f43bcf29b2f7827571e",
      "parents": [
        "4bd8f9637daaada333ff35945b00cfe6cb822376"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Mar 17 14:22:09 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Apr 08 13:11:13 2015 -0700"
      },
      "message": "Provide writer preference option in rwlock.\n\nPrevious implementation of rwlock contains four atomic variables, which\nis hard to maintain and change. So I make following changes in this CL:\n\n1. Add pending flags in rwlock.state, so we don\u0027t need to synchronize\nbetween different atomic variables. Using compare_and_swap operations\non rwlock.state is enough for all state change.\n\n2. Add pending_lock to protect readers/writers waiting and wake up\noperations. As waiting/wakeup is not performance critical, using a\nlock is easier to maintain.\n\n3. Add writer preference option.\n\n4. Add unit tests for rwlock.\n\nBug: 19109156\n\nChange-Id: Idcaa58d695ea401d64445610b465ac5cff23ec7c\n"
    },
    {
      "commit": "377243b78c43ffc98a6c9f145a6cd27ab99c08f0",
      "tree": "af26d1303252310ad63ad94e8e13b3f1edc169a0",
      "parents": [
        "69847bc298de62917663d22b6733ef75b57124fa"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 25 19:59:00 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 25 21:02:36 2015 -0700"
      },
      "message": "Remove PTHREAD_RECURSIVE_MUTEX_INITIALIZER and PTHREAD_ERRORCHECK_MUTEX_INITIALIZER.\n\nThese macros are also not used in glibc. And we should use\nPTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP\nand PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP instead.\n\nChange-Id: I35195e2f499712dcde9305bbb93622d0f7ca874b\n"
    },
    {
      "commit": "17393b06bab9cb3e95d0f466a56c746de19b8eee",
      "tree": "fa260e58da8fe186bca7787e3d7645a86b2f79cb",
      "parents": [
        "fa3dcecc0fd7bbbf04234e41be690a5d33277870"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Sat Mar 21 15:08:25 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 25 17:54:17 2015 -0700"
      },
      "message": "Hide internal of pthread_mutex_t.\n\nBug: 19249079\nChange-Id: Iffb79c8d861b698d474f212dc80c638fc2cf1620\n"
    },
    {
      "commit": "b58457221364eaad039c2c49a42626b725e980d5",
      "tree": "a7a8d9b3de7c34bda99153ebae330b6d180b112e",
      "parents": [
        "4149dc944bbe3c5f1c14fc998106975e68bdd6bf"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 22:46:42 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 20 17:42:09 2015 -0700"
      },
      "message": "Add test for pthread types alignment check.\n\nBug: 19249079\nChange-Id: I83c4f0d11ec5d82a346ae0057d02a92bb1d519e8\n"
    },
    {
      "commit": "b5cd3c7a7503d8155ea17424c00f7e77603252c0",
      "tree": "2e956c25c0f32ac89a3d4e360e8a96c2d917ee0d",
      "parents": [
        "f14fe856b40afc38540988b408edc508298ec116"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 17:06:59 2015 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 16 17:06:59 2015 -0700"
      },
      "message": "Fix build: align pthread_cond_t to sizeof(long)\n\nChange-Id: Ieaee6d09089b161ec516ba22cafaee1ecb4342da\n"
    },
    {
      "commit": "eb8b122d67db501729ecde4fcb960336c87af4ce",
      "tree": "59b9b529198343d1135994ec25bbc749243ab2bd",
      "parents": [
        "0f3fcd12ddde0e10fbeab0a98cf0efb9d64bea76"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 16 16:21:08 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 16 16:28:54 2015 -0700"
      },
      "message": "Add alignment to opaque types.\n\nIf there is no alignment forced, then the compiler might put these\nstructures at any alignment.\n\nChange-Id: I6416db72433504e0ec1178bfae6f5b18b6e363fb\n"
    },
    {
      "commit": "32651b8e8e453391c7aaca47cd885e94d54d0bf4",
      "tree": "16c36165ce78fbc359bba222ee0744556c3ed4c4",
      "parents": [
        "d2cf59d4633d9e731d0342d4f94b6e925589ab1e"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 13 20:30:00 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Mar 16 11:09:52 2015 -0700"
      },
      "message": "Hide content of pthread_cond_t in pthread_cond_internal_t.\n\nBug: 19249079\nChange-Id: I6f55af30bcd6211ce71630c6cacbef0e1663dcee\n"
    },
    {
      "commit": "2fabea47ac9475bcc52aff0715819d18aa5bdf1d",
      "tree": "c0cad55497897c934661e49d2fc4c330b4d97cba",
      "parents": [
        "81c31bdd43e50538fa45f5e7783782a5ae5666e9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 13 14:22:05 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 13 19:35:05 2015 -0700"
      },
      "message": "Hide content of pthread_rwlock_t in pthread_rwlock_internal_t.\n\nBug: 19249079\nChange-Id: Ifbe634c716b6793bef897ec5134b55eb44c6b8d5\n"
    },
    {
      "commit": "08ee8d2030fbc73c4c144e819dd68806b0351cbe",
      "tree": "61c0f1027bd8967ff7eb8e95a128ee10e260ca32",
      "parents": [
        "ee17e8800418a74e21dba11658234363cf6f6032"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 11 17:04:36 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Mar 04 18:16:20 2015 -0800"
      },
      "message": "Switch pthread_rwlock_t to stdatomic.\n\nBug: 19099838\nChange-Id: Ie82967a60b5cec61a8bdd1e0e4a03738d01944f8\n"
    },
    {
      "commit": "e375ecaa39213ec01464dac9d0ffebaac70b4e9d",
      "tree": "1d0e274a6739befc3a27df4d135ea4b4740c20f5",
      "parents": [
        "a4fc89badf4ef4d42df0927340c6f0d02167a3d6",
        "e5f816c01780220880ee59a29f727c48b51365d3"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 10 00:10:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 10 00:10:45 2015 +0000"
      },
      "message": "Merge \"Switch pthread_cond_t to \u003cstdatomic.h\u003e.\""
    },
    {
      "commit": "e5f816c01780220880ee59a29f727c48b51365d3",
      "tree": "37454e7d27774bde02d5d28aee3d1aad3cbb6d73",
      "parents": [
        "7f17aea2fc21aaf657824a023a4b7582fb74a2d9"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 29 12:13:33 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Feb 09 15:54:22 2015 -0800"
      },
      "message": "Switch pthread_cond_t to \u003cstdatomic.h\u003e.\n\nBug: 17574458\nChange-Id: Ic7f79861df4fe751cfa6c6b20b71123cc31e7114\n"
    },
    {
      "commit": "86fc96f73311f43980df770f4ff8022f1e9b296a",
      "tree": "0eb94839231c5c19cd7b4bf0954083ba670d62bd",
      "parents": [
        "6a3ff01cd4f063556cf25706ddc9dff82c351aba"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 29 21:50:48 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Mon Feb 02 15:00:01 2015 -0800"
      },
      "message": "Switch pthread_mutex_t from bionic atomics to \u003cstdatomic.h\u003e.\n\nBug: 17574456\nChange-Id: I5ce3d3dc07e804e9ce55c42920f47531b56e04de\n"
    },
    {
      "commit": "80e6d6d825df4616808b22b5639114566c27af0e",
      "tree": "7cdb81c44f8eb5f5ffbd35f5e73f2c1198b3a8a0",
      "parents": [
        "385c07a74ca5438a6f7fe0ada2b461f880563073"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Jan 23 18:21:46 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 27 19:49:12 2015 -0800"
      },
      "message": "Switch pthread_once_t to stdatomic.h.\n\nBug: 17574610\n\nChange-Id: I653f2aa4b5b38dbdaffe4a6c3deccfe6ad3b0e74\n"
    },
    {
      "commit": "212e0e38248860b151b28877225629a988d95b58",
      "tree": "f43f3b8bc2472d2584750052171a0d6da5277e25",
      "parents": [
        "076f69d828cfa5d30360e1dd2f24acd751d4a461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:43:51 2014 -0800"
      },
      "message": "Build our benchmarks against glibc too.\n\nBug: 18556607\nChange-Id: I455ac8b93c0835836180e549486bc52d393ee6a6\n"
    },
    {
      "commit": "75ef63d6cf83787233d1c45489c4ec03b0a67d16",
      "tree": "af1358c723e21ebfbd48a4dfd2abc3f262cb309d",
      "parents": [
        "f6640348876cd1d4d43cc95cf63306fedb83d8b9"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 21 00:18:07 2014 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Nov 21 10:26:09 2014 -0800"
      },
      "message": "Move some pthread functions to signal.h.\n\nPOSIX specifies that pthread_kill(3) and pthread_sigmask(3) are\nsupposed to live in signal.h rather than pthread.h.\n\nSince signal.h now needs pthread_t and pthread_attr_t, I\u0027ve moved\nthose defintions into include/machine/pthread_types.h to keep the\nnamespace clean. I also sorted some includes. The combination of these\ntwo things seems to have exploded into a cascade of missing includes,\nso this patch also cleans up all those.\n\nChange-Id: Icfa92a39432fe83f542a797e5a113289d7e4ad0c\n"
    },
    {
      "commit": "3d773274ad6caaf7e0431c3d5eeb31f727b53d1a",
      "tree": "e1f6074157470da7a594f3f3d4300265332f271a",
      "parents": [
        "7d3f553f989f830976efa92ddc3c84661d4d42aa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 07 23:31:06 2014 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 07 23:31:06 2014 +0000"
      },
      "message": "Revert \"Work around a bug in Immersion\u0027s libImmEmulatorJ.so.\"\n\nThis reverts commit 7d3f553f989f830976efa92ddc3c84661d4d42aa.\n\nChange-Id: I8909b6aa1d97e9a61dbe95a2d91b9fbe336b58f0\n"
    },
    {
      "commit": "b5e7eba6d1b97e471996fcfe7dbde7cbba7512ef",
      "tree": "38170eef8024ca94bde932918a646b95d5b68cdb",
      "parents": [
        "ea8dea8cb7ca90569fa2fa0d2a560d0493e114ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 07 16:02:11 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 07 16:08:46 2014 -0700"
      },
      "message": "Work around a bug in Immersion\u0027s libImmEmulatorJ.so.\n\nThis library calls pthread_mutex_lock and pthread_mutex_unlock with a NULL\npthread_mutex_t*. This gives them (and their users) one release to fix things.\n\nBug: 17443936\n\n(cherry picked from commit 7d3f553f989f830976efa92ddc3c84661d4d42aa)\n\nChange-Id: Ie26bbecd3a74d61113b51c18832872499b97ee86\n"
    },
    {
      "commit": "7d3f553f989f830976efa92ddc3c84661d4d42aa",
      "tree": "cb8560d4abe6a37b4e45ca577e579d182d42aa6a",
      "parents": [
        "eeb9aa02b7f307a1d9b80731dd69ef9dd2f47e47"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 07 16:02:11 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 07 16:02:11 2014 -0700"
      },
      "message": "Work around a bug in Immersion\u0027s libImmEmulatorJ.so.\n\nThis library calls pthread_mutex_lock and pthread_mutex_unlock with a NULL\npthread_mutex_t*. This gives them (and their users) one release to fix things.\n\nBug: 17443936\nChange-Id: I3b63c9a3dd63db0833f21073e323b3236a13b47a\n"
    },
    {
      "commit": "a4831cb4a3f44b93788488db8ff9ea76613f0355",
      "tree": "eaa225c537d468307739bc48bbc86e241ada58e0",
      "parents": [
        "ea66004c4a051e40c49314d808e7359634f6c641"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 16:11:43 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 16:22:50 2014 -0700"
      },
      "message": "Add pthread_gettid_np and re-expose __get_thread for LP32.\n\nA lot of third-party code calls the private __get_thread symbol,\noften as part of a backport of bionic\u0027s pthread_rwlock implementation.\nHopefully this will go away for LP64 (since you\u0027re guaranteed the\nreal implementation there), but there are still APIs that take a tid\nand no way to convert between a pthread_t and a tid. pthread_gettid_np\nis a public API for that. To aid the transition, make __get_thread\navailable again for LP32.\n\n(cherry-pick of 27efc48814b8153c55cbcd0af5d9add824816e69.)\n\nBug: 14079438\nChange-Id: I43fabc7f1918250d31d4665ffa4ca352d0dbeac1\n"
    },
    {
      "commit": "27efc48814b8153c55cbcd0af5d9add824816e69",
      "tree": "348dc354388bab83e36f21d32f5d45788a25f563",
      "parents": [
        "9e833bf0cf2c5bc0e6b65e4d96aa4f2b33113771"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 16:11:43 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 11 16:11:43 2014 -0700"
      },
      "message": "Add pthread_gettid_np and re-expose __get_thread for LP32.\n\nA lot of third-party code calls the private __get_thread symbol,\noften as part of a backport of bionic\u0027s pthread_rwlock implementation.\nHopefully this will go away for LP64 (since you\u0027re guaranteed the\nreal implementation there), but there are still APIs that take a tid\nand no way to convert between a pthread_t and a tid. pthread_gettid_np\nis a public API for that. To aid the transition, make __get_thread\navailable again for LP32.\n\nBug: 14079438\nChange-Id: I43fabc7f1918250d31d4665ffa4ca352d0dbeac1\n"
    },
    {
      "commit": "b27a840f4b520bfa095db99b0a2e5205634b0003",
      "tree": "c27682ed0b5e301cbe0aa49dfd6ada3e1bef9eae",
      "parents": [
        "0ada9388e74693d990bdbb4af92c33bae8b34d4b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 10 20:47:49 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 11 16:32:10 2014 -0700"
      },
      "message": "Add __pure2 to a few more functions, most notably gettid and pthread_self.\n\nChange-Id: I7eee9f26f45130038af09d8285782b07f70a996f\n"
    },
    {
      "commit": "92687e41bcf108957944dafa80a9bfda219bfb0f",
      "tree": "ea0fc1323572eedebb34802ab97b24c17ec9b1ba",
      "parents": [
        "4f6ed4a10951cbd868fec1b0117a276918c60fa1"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 22 19:21:22 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 23 00:22:58 2014 +0100"
      },
      "message": "Cleaned up pthread rwlocks implementation.\n\n- used underscore_style_for_vars\n- extracted time related functionality into a function\n- cleaned up style\n- removed unused fields from pthread_rwlock_t on LP64\n- changed reservation in pthread_rwlock_t so that the size of the\nstructure equals glibc version\n\nBug: 8133149\n\nChange-Id: I84ad3918678dc7f5e6b3db9b7e9b0899d3abe9cd\n"
    },
    {
      "commit": "76f352eec12d8938101e5ae33429c72797c3aa23",
      "tree": "56eed6c22d5365278b4184921e70bbae4d0e7523",
      "parents": [
        "9b95ea936a72532c3124963312d348c6ee453d78"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon May 19 13:41:10 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 22 11:11:15 2014 +0100"
      },
      "message": "Mutex-free implementation of pthread_rwlock\n\nBug: 8133149\nChange-Id: Id6775010d95f2634b173daa55d87a59a3cf4131b\n"
    },
    {
      "commit": "ea5248ee1bc5d031e0b1e70a311f450a741c1e99",
      "tree": "90e29df35b37fe2f7d2d28132d427d4baa4b150b",
      "parents": [
        "8a8b0c9bfcd80c67154ed2aca1e60d815c822acb"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 14 17:58:29 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 14 18:02:11 2014 -0700"
      },
      "message": "Increase minimum thread size for 64 bit.\n\nBug: 14468519\nChange-Id: I642a5515acf5fbed46e77e176f6b5dd3b7c7bd45\n"
    },
    {
      "commit": "7c435f2415f4cdc97fbb7739f70ae5e84f2e2cb0",
      "tree": "a3825c75b8acc33445af83dfbcf54ec958f5f2f6",
      "parents": [
        "9b5ee4aa85cf55467eb9a749b6602f6f2ba1cfc6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 06 13:39:47 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 06 13:40:24 2014 +0100"
      },
      "message": "Leave more space for extensions in pthread_rwlockattr_t\n\nChange pthread_rwlockattr_t from int to long. On LP64 this gives us more\nroom for extensibility since longs are 8 bytes. glibc also reserves 8\nbytes for this.\n\nBug: 14582681\nBug: 12875898\nChange-Id: I55d599be0fdbbf0cb55957ec0ea62ab042bdee94\n"
    },
    {
      "commit": "b1cacd42454822a4a42b68bfed32b9538210aa25",
      "tree": "fb29aec9ef3930ba9885bb5ff9950375c617010d",
      "parents": [
        "08bfcff0d4a931a4ed5e2a46541dc8d223482f34"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 23 17:35:04 2014 +0100"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Apr 24 22:07:52 2014 +0000"
      },
      "message": "Reserve space in pthread structures for future extensibility.\n\nMake our structures equal in size with glibc structures. This should\ngive us plenty of space to implement any missing feature.\n\nBug: 13278744\nBug: 12875898\n(cherry picked from commit cf83fd77caa3128ecb6ac935e342cb0ea258b9ee)\n\nChange-Id: I76968d31024eb51bc73887687e5ac492eb02a27f\n"
    },
    {
      "commit": "6b64000ef0ac6e9476e5f0420b4c09844e65d51f",
      "tree": "395908c46cd0501bf91dcfc6170831c2e89ba459",
      "parents": [
        "cf83fd77caa3128ecb6ac935e342cb0ea258b9ee"
      ],
      "author": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Apr 24 18:11:23 2014 +0000"
      },
      "committer": {
        "name": "Greg Hackmann",
        "email": "ghackmann@google.com",
        "time": "Thu Apr 24 18:11:23 2014 +0000"
      },
      "message": "Revert \"Reserve space in pthread structures for future extensibility.\"\n\nThis reverts commit cf83fd77caa3128ecb6ac935e342cb0ea258b9ee.\n\nChange-Id: I4f69e86ffe1c267a9018eb489d909237534c6cf9\n"
    },
    {
      "commit": "cf83fd77caa3128ecb6ac935e342cb0ea258b9ee",
      "tree": "715a0486ad7b4b13602d82d08ec832c918545c59",
      "parents": [
        "26c2bb84dd5cbd9ab43a5f0ebc2635bc3b64be3d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 23 17:35:04 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Apr 23 18:46:50 2014 +0100"
      },
      "message": "Reserve space in pthread structures for future extensibility.\n\nMake our structures equal in size with glibc structures. This should\ngive us plenty of space to implement any missing feature.\n\nBug: 13278744\nBug: 12875898\nChange-Id: I980017fd5942411ebc5ac32b2673a10a20db68c8\n"
    },
    {
      "commit": "a4eafa6dbc98378f3fa759fec8590871e2b5ae29",
      "tree": "4b8a1a0a8c8070ae4845d9dfcaa88daab380ae68",
      "parents": [
        "10f6beb3eb46cb2488427f58dccdd7bbfab5a250"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 10 18:10:04 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 11 10:44:36 2014 +0000"
      },
      "message": "Removed pthread_attr_getstackaddr/pthread_attr_setstackaddr\n\nMoved existing definitions to ndk_cruft to preserve NDK compatibility.\n\nBug: 13281069\nChange-Id: I6f260de69afa55a6274f0d13145c19ac6517b9d5\n"
    },
    {
      "commit": "252ee1e1124ae8aef2bde0c365c9ac6d59282bc8",
      "tree": "52b9d6d31ed0467cb811ee6c7db1830c7dbbdf8c",
      "parents": [
        "bef5016491eed41521f514d5c5528e2274689948"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 04 16:16:43 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Mar 05 13:19:10 2014 +0000"
      },
      "message": "Stop defining HAVE_PTHREAD_COND_TIMEDWAIT_MONOTONIC.\n\nNo code is using this definition.\n\nChange-Id: I188db63f38d62baf1cb57d0a36fcda540ad98492"
    },
    {
      "commit": "0e714a5b41451e84c5ded93a42c9a4b0a9440691",
      "tree": "86e6519cc723fb66a9432193da16b380255c22f7",
      "parents": [
        "8e541b12237f597c186820b9e18b059b620bef54"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 03 16:42:47 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 10:27:58 2014 -0800"
      },
      "message": "Implement POSIX pthread_mutex_timedlock.\n\nThis replaces the non-standard pthread_mutex_lock_timeout_np, which we have\nto keep around on LP32 for binary compatibility.\n\nChange-Id: I098dc7cd38369f0c1bec1fac35687fbd27392e00\n"
    },
    {
      "commit": "51e6cb33e3d7c2f44864d356a2a8e66317688f55",
      "tree": "48863111f16d659bbc0456662d67f5fc8ff3bef2",
      "parents": [
        "2c7c79e6e5e730553281b6d42e734ee2c532a660"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 03 15:38:51 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 04 11:17:13 2014 +0000"
      },
      "message": "Implement pthread_condattr_{get,set}clock.\n\nWe only support CLOCK_REALTIME and CLOCK_MONOTONIC for now,\nso we us a single bit from pthread_cond_t-\u003evalue to denote\nthe clock type. Note that this reduces the width of the counter\nto 30 bits, but this should be large enough for all practical\npurposes.\n\nbug: 13232338\n\nChange-Id: I857e7da64b3ecbb23eeac7c9f3fbd460f60231bd\n"
    },
    {
      "commit": "c3f114037dbf028896310609fd28cf2b3da99c4d",
      "tree": "e463aeb3604177cd93cea8a58936a8dce4b34ee5",
      "parents": [
        "d0d0b52da375bfa85947a4257198791f615f18a8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 30 14:40:09 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 12:31:16 2013 -0700"
      },
      "message": "\u003cpthread.h\u003e fixes and pthread cleanup.\n\n\u003cpthread.h\u003e was missing nonnull attributes, noreturn on pthread_exit,\nand had incorrect cv qualifiers for several standard functions.\n\nI\u0027ve also marked the non-standard stuff (where I count glibc rather\nthan POSIX as \"standard\") so we can revisit this cruft for LP64 and\ntry to ensure we\u0027re compatible with glibc.\n\nI\u0027ve also broken out the pthread_cond* functions into a new file.\n\nI\u0027ve made the remaining pthread files (plus ptrace) part of the bionic code\nand fixed all the warnings.\n\nI\u0027ve added a few more smoke tests for chunks of untested pthread functionality.\n\nWe no longer need the libc_static_common_src_files hack for any of the\npthread implementation because we long since stripped out the rest of\nthe armv5 support, and this hack was just to ensure that __get_tls in libc.a\nwent via the kernel if necessary.\n\nThis patch also finishes the job of breaking up the pthread.c monolith, and\nadds a handful of new tests.\n\nChange-Id: Idc0ae7f5d8aa65989598acd4c01a874fe21582c7\n"
    },
    {
      "commit": "9d23e04c43dbb8480bea8be28b8a2f37423bec49",
      "tree": "e403288cf01ce40d6f330da09a317c7ad6dc2cb2",
      "parents": [
        "081318e3550b1a8d8384d98d7c94527681691120"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 15 19:21:51 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 19 12:21:41 2013 -0800"
      },
      "message": "Fix pthreads functions that should return ESRCH.\n\nimgtec pointed out that pthread_kill(3) was broken, but most of the\nother functions that ought to return ESRCH for invalid/exited threads\nwere equally broken.\n\nChange-Id: I96347f6195549aee0c72dc39063e6c5d06d2e01f\n"
    },
    {
      "commit": "f8a2c51bf3b85bf86bff905dd1232299d333dafe",
      "tree": "d80d0045d50a9c5c775dbfb574f0635520ab104c",
      "parents": [
        "fcf901d5c0924a71a1405a2535051663281da048"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Sep 13 17:14:00 2012 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Mon Oct 15 18:52:55 2012 +0200"
      },
      "message": "LONG_LONG_MIN/MAX: Move declarations to \u003climits.h\u003e\n\nLONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX are\nGLibc-specific macros that are better defined in \u003climits.h\u003e\ninstead of the current exotic location (\u003cpthread.h\u003e).\n\nNote that GCC\u0027s \u003climits.h\u003e only defines these macros\nwhen __GNU_LIBRARY__ is also defined. This is only the\ncase when building against GLibc, so manually redefine\nthe macros here.\n\nNote that using LLONG_MIN/LLONG_MAX/ULLONG_MAX is the\nC99-compliant way to get these values, but it\u0027s easier\nto define these compatibility macros for the sake of\nporting existing code.\n\nChange-Id: I8023918d73b4685238054932f94a4006c1ca7d03\n"
    },
    {
      "commit": "9831ad3ce6bd5b22da16a275ed67e7236eae3d1f",
      "tree": "2f5152add91760c209361fb918ad83a4f24b3502",
      "parents": [
        "4b469eae40368913b2841b390dada6c58296c602"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Aug 29 21:43:46 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 15 13:16:42 2011 +0100"
      },
      "message": "libc: speed-up flockfile()/funlockfile()\n\nFor Honeycomb, we added proper file thread-safety for\nall FILE* operations. However, we did implement that by\nusing an out-of-band hash table to map FILE* pointers\nto phtread_mutex_t mutexes, because we couldn\u0027t change\nthe size of \u0027struct _sFILE\u0027 without breaking the ABI.\n\nIt turns out that our BSD-derived code already has\nsome support code to extend FILE* objects, so use it\ninstead. See libc/stdio/fileext.h\n\nThis patch gets rid of the hash table, and put the\nmutex directly into the sFILE extension.\n\nChange-Id: If1c3fe0a0a89da49c568e9a7560b7827737ff4d0\n"
    },
    {
      "commit": "847b183f631ccbaa363a15c24195c00cad9529f9",
      "tree": "9d8f7ed7a141f94903192df2eb2398b38e5abc14",
      "parents": [
        "dfe6eda57e1e463427f941d5d71f8ccb5297d6d2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Fri Mar 11 14:51:19 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Fri Mar 11 14:51:19 2011 +0100"
      },
      "message": "libc: \u003cpthread.h\u003e: Replace \u0027#if __cplusplus\u0027 by \u0027#ifdef __cplusplus\u0027\n\nSee http://code.google.com/p/android/issues/detail?id\u003d15221\n\nChange-Id: Ia7b6668c28737810d6c4941604c6adf232a27c61\n"
    },
    {
      "commit": "ca4462d76c65ebfbc20328ee283ac2f19efca732",
      "tree": "2b796a9fa101f59eadc6977d9c3ad6705c5fcf06",
      "parents": [
        "1ed86fa491929e3f46e9ad692773dec80defa3f8"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Mar 10 10:22:55 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Mar 10 10:23:44 2011 +0100"
      },
      "message": "libc: Fix PTHREAD_RWLOCK_INITIALIZER\n\nThe macro definition was incorrect and resulted in a compile error\nwhen used.\n\nFixes http://code.google.com/p/android/issues/detail?id\u003d15306\n\nChange-Id: I8fa6047b63e7f56b53653774327099822c469cd1\n"
    },
    {
      "commit": "9aac38249b579282ae8eaa630de3deaf97c4edff",
      "tree": "ac5ce44da7390aa18e21f8a090135d0699302521",
      "parents": [
        "8120a8df848e6dec31ef5f00bc0b41ed95ce1310",
        "bd8d987b3c3aa6d9d00cede2cb091f00bdb42204"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Sep 28 00:13:43 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 28 00:13:43 2010 -0700"
      },
      "message": "am bd8d987b: libc: remove C++ comments from public headers.\n\nMerge commit \u0027bd8d987b3c3aa6d9d00cede2cb091f00bdb42204\u0027 into gingerbread-plus-aosp\n\n* commit \u0027bd8d987b3c3aa6d9d00cede2cb091f00bdb42204\u0027:\n  libc: remove C++ comments from public headers.\n"
    },
    {
      "commit": "bd8d987b3c3aa6d9d00cede2cb091f00bdb42204",
      "tree": "cdc35d78d1da7fa4d2b5cd6212b559fb7722f87d",
      "parents": [
        "b9e49ad56e5776ace7c6eab2e997d5b7acb16792"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sun Sep 26 23:00:36 2010 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Sep 27 17:35:26 2010 +0200"
      },
      "message": "libc: remove C++ comments from public headers.\n\nChange-Id: I4af84f912062cd2ff34711c25122fb323f20c032\n"
    },
    {
      "commit": "6d4d8cb79c5578d33ab17806d67b1e53a730fbc3",
      "tree": "9642a50962a867b9cf1a37a53e7485bfad00f256",
      "parents": [
        "4e69dfed0b0fe672e366bb84d5c3feaedc61d630",
        "4f086aeb4aa06e13079b7fec71a8178ceeacf318"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 23 13:53:19 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 23 13:53:19 2010 -0700"
      },
      "message": "resolved conflicts for merge of 4f086aeb to gingerbread-plus-aosp\n\nChange-Id: Ice2a6d41a7e9d04eca02e15ed189d648d61b5801\n"
    },
    {
      "commit": "4f086aeb4aa06e13079b7fec71a8178ceeacf318",
      "tree": "a6b0fbce5c6d0f507a244ef4f87ec648b7c35a76",
      "parents": [
        "e73a571fd9b60315681eacbef5857f0f0b1ece18"
      ],
      "author": {
        "name": "Matt Fischer",
        "email": "matt.fischer@garmin.com",
        "time": "Fri Jun 25 14:36:39 2010 -0500"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 23 13:10:16 2010 -0700"
      },
      "message": "Implemented pthread_atfork()\n\nChange-Id: Ie6c0bf593315d3507b3c4a6c8903a74a1fa053db\n"
    },
    {
      "commit": "a8a21488630980c1d2a2152d0ac39bd7978879e2",
      "tree": "aa2c3da5f3cfb2eb44933b5126984940b2c02e59",
      "parents": [
        "fcd00ebbdf3e7f4e1e7782a65ae10fb0fc03a1aa",
        "7b6e6fa57240466c2728d553be136f800600dd71"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jun 03 15:05:04 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jun 03 15:05:04 2010 -0700"
      },
      "message": "resolved conflicts for merge of 7b6e6fa5 to kraken\n\nChange-Id: I2b9b80a7fa32c56be2b85ff8be0d6e7ac1848afe\n"
    },
    {
      "commit": "7b6e6fa57240466c2728d553be136f800600dd71",
      "tree": "5744295128fa6b7b03377c8c7ab3c2df5af16cf5",
      "parents": [
        "8e1ee7fd01986825074ececd39e8c2a5ebc907e0",
        "f982f038329f7da7de5853c9d789ab138a4bcf16"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 03 14:39:20 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 03 14:39:20 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: Ib7fc9c6f79f9b13e2175da137005d8968ea85eaf\n"
    },
    {
      "commit": "78c1c04ced772298be8bdb5a94b6ce491bb9b3e1",
      "tree": "31881f9114a2e6975f262200685d39141a144013",
      "parents": [
        "1297428e89ead45849068989d334d8b7eae2f602"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Wed May 19 23:17:16 2010 -0300"
      },
      "committer": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Wed May 19 23:17:16 2010 -0300"
      },
      "message": "pthread: introduce pthread_setname_np() as a mean to give names to threads\n\n... so that each cloned process at the kernel level can be named\nindependently. Tools like \u0027top\u0027 can display the CPU/memory statistics\nfor each process\u0027s thread if \"Show Threads\" mode is on.\n\nWith this function in place, we can convert dalvik/Thread.c setThreadName()\nfunction over this function. This feature ought to be provided by the\nunderlying C library and not coded directly in Dalvik.\n\nChange-Id: Ifa997665dbaa114e0b126f8c667708be9a4137fd\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "8a1d2cf1422e35257c160ac5bb12dd3ee481c433",
      "tree": "6307e0ed69c9b22cb49d7702f71d43d1d910e0bf",
      "parents": [
        "8e1ee7fd01986825074ececd39e8c2a5ebc907e0"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue May 11 16:39:22 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 19 14:53:18 2010 -0700"
      },
      "message": "Add pthread_rwlock_t implementation to the C library (DO NOT MERGE)\n\nChange-Id: I756d8c26afc37cd7b71117ddbaa02a2cb40fdecb\n"
    },
    {
      "commit": "ee7b077abf1d99503b986489ad93374a057cb354",
      "tree": "2f424373469e9e040312951e59a9627cb17d6a8d",
      "parents": [
        "40e6b822866ee59f7823000384321bb899416cb1"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 14:07:42 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 14:07:42 2010 -0700"
      },
      "message": "Add pthread_condattr_init/destroy/setpshared/getpshared\n\nNote that this does not change the implementation of conditional variables\nwhich still use shared futexes, independent on the flags being selected.\n\nThis will be fixed in a later patch, once our system is modified to use\npthread_condattr_setpshared(attr, PTHREAD_PROCESS_SHARED) properly.\n\nChange-Id: I935de50964cd41f97a13dbfd6626d3407b0406c3\n"
    },
    {
      "commit": "8641833b62e3b319796dc80ea16eb1592c05edf6",
      "tree": "f0b9b778513da0e049ce1b4c706ae5000848d7c1",
      "parents": [
        "ba9c6f0989ae94778ba2b9f597adc827c9dc81e8"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Mar 11 14:47:47 2010 -0800"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu Mar 11 14:47:47 2010 -0800"
      },
      "message": "Revert \"bionic: pthread: use private futexes by default for mutexes and condvars\"\n\nThis reverts commit ba9c6f0989ae94778ba2b9f597adc827c9dc81e8.\n"
    },
    {
      "commit": "ba9c6f0989ae94778ba2b9f597adc827c9dc81e8",
      "tree": "2376f2a87f6ac304bd93beca7c8139b890a6227f",
      "parents": [
        "1cfbda826ce66e9bd1507a31b7e6df62e0dbcc6e"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Mar 10 16:44:08 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 11 11:48:38 2010 -0800"
      },
      "message": "bionic: pthread: use private futexes by default for mutexes and condvars\n\nPrivate futexes are a recent kernel addition: faster futexes that cannot be\nshared between processes. This patch uses them by default, unless the PROCESS_SHARED\nattribute flag is used when creating a mutex and/or conditional variable.\n\nAlso introduces pthread_condattr_init/destroy/setpshared/getpshared.\n\nChange-Id: I3a0e2116f467072b046524cb5babc00e41057a53\n"
    },
    {
      "commit": "3f56b7f65adb9ee35cd0f878ca00b92011eec427",
      "tree": "94c29385b9f2afa873c61ddad29b12f7e9b8432a",
      "parents": [
        "916edf2a3fc60e08a5f29cd322d9f2a04d15cb49"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Sep 22 12:40:22 2009 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Sep 22 15:17:50 2009 -0700"
      },
      "message": "Add pthread_mutex_lock_timeout_np\n\nThis is used to perform a mutex lock for a given amount of\nmilliseconds before giving up. Using the _np prefix since this\nis absolutely not portable.\n\nAlso remove a compiler warning in pthread_attr_getstackaddr\n"
    },
    {
      "commit": "a2f5e212448f36f0b35cf695d13bb4defdb4472e",
      "tree": "6c5fe5b6f2c8134de44af2f271505445d63750a2",
      "parents": [
        "733f7deeb72c38e4d83e1b1fc9f237712fa84d52"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 15:00:46 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 18:37:40 2009 -0700"
      },
      "message": "added pthread_cond_timedwait_relative_np()\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "9f65adf2ba3bb15feb8b7a7b3eef788df3fd270e",
      "tree": "c06064fc9022ef63a40f83a91292103784f49780",
      "parents": [
        "d37527501c85edcb3a6a7c8a0b6297d52d434897"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:43:56 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "4e468ed2eb86a2406e14f1eca82072ee501d05fd",
      "tree": "4e05b3c66eef86531e464521a3bf96a1864d4bf5",
      "parents": [
        "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
