)]}'
{
  "log": [
    {
      "commit": "2ea60ff0b415ad5b135f498a38c4b56ea75215aa",
      "tree": "71bfc0770b8d21119829467a723e07743b47ba41",
      "parents": [
        "0b10ffb40f3b426a7b5e734f90c41f56351729a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 10:49:16 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 22 11:00:21 2014 -0700"
      },
      "message": "Remove unnecessary #includes of \u003csys/atomics.h\u003e.\n\nBug: 14903517\nChange-Id: I7b5bcebe58774a441da986cc02376dd88e00ea0e\n"
    },
    {
      "commit": "b676aafad04f88e36658d4468054375158dbd3c1",
      "tree": "ba44c6f2c480d3078c2c7b5508f39848009af668",
      "parents": [
        "b64868a50715cfdb5c71d97144ba00acf78e2a76"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 17:50:06 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 17:50:06 2014 -0700"
      },
      "message": "Remove unnecessary #includes.\n\nChange-Id: Ie7e0c9ea03f35517c7dcf09fc808c12e55262bc1\n"
    },
    {
      "commit": "f0870c3bfeba99482392fafe6d5f49615393c2b1",
      "tree": "1890250f9c08baa19ddd7b0a6fccaab1f95dc3d4",
      "parents": [
        "bef5016491eed41521f514d5c5528e2274689948"
      ],
      "author": {
        "name": "Halton Huo",
        "email": "halton.huo@intel.com",
        "time": "Fri Feb 21 18:05:29 2014 +0800"
      },
      "committer": {
        "name": "Halton Huo",
        "email": "halton.huo@intel.com",
        "time": "Wed Mar 05 16:34:20 2014 +0800"
      },
      "message": "Fix some pthread symbols build as C++ symbol under x64 lunch.\n\nFunctions protected with !defined(__LP64__) will be get build as C++\nsymbols for X64 build. This is not the desired work. So protect the\nimplementation with !defined(__LP64__) as well.\n\nChange-Id: I4ef50ec36e46289ab308063e24f6c5ac61a6ca8d\n"
    },
    {
      "commit": "39b644a0e270df453c53d6060cd364391bb1c512",
      "tree": "fc937b2b00e2efe603ac0bd48fc0a1c832b46456",
      "parents": [
        "a0bf9bdea24164db96ec1d5dfa2cd327942671b6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 10:55:39 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 04 10:55:39 2014 -0800"
      },
      "message": "Remove dead NULL checks from pthread code.\n\nGCC is removing these checks anyway because it knows the arguments\nmust be non-null, so leaving this code around is just confusing.\n\nWe know from experience that people were shipping code with locking\nbugs because they weren\u0027t checking for error returns. Failing hard\nlike glibc does seems the better choice. (And it\u0027s what the checked\nin code was already doing; this patch doesn\u0027t change that. It just\nmakes it more obvious that that\u0027s what\u0027s going on.)\n\nChange-Id: I167c6d7c0a296822baf0cb9b43b97821eba7ab35\n"
    },
    {
      "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": "9e79af3b61b5a617c537862ebe72248beff58f19",
      "tree": "5901c5b3dd3eb00353ac1233f1506aa266a92221",
      "parents": [
        "611b903ca7ba9d604a9e2ebc1efa5a66f7ccc049"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 18 10:05:42 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 18 10:05:42 2013 -0800"
      },
      "message": "Small style cleanup.\n\nChange-Id: Ib45a4a2296232968296f9bd7cc3592ba46fd412d\n"
    },
    {
      "commit": "36d6188f8cd8b948fb797f11d9620d63d0c2215a",
      "tree": "86b3162cac031151b2ae44b4d554fce4f9456147",
      "parents": [
        "318e86ed887e04e593f3db9b84b402d5501ced9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 13:31:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 19 14:08:54 2013 -0800"
      },
      "message": "Clean up forking and cloning.\n\nThe kernel now maintains the pthread_internal_t::tid field for us,\nand __clone was only used in one place so let\u0027s inline it so we don\u0027t\nhave to leave such a dangerous function lying around. Also rename\nfiles to match their content and remove some useless #includes.\n\nChange-Id: I24299fb4a940e394de75f864ee36fdabbd9438f9\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"
    }
  ]
}
