)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
