)]}'
{
  "log": [
    {
      "commit": "5c8c00a95a6cdcd74ac32dadedf0cea2b1661169",
      "tree": "fafdb4a207ac0dad61b0abd831fe2f0f97b7643b",
      "parents": [
        "be5755969d70668bbab0e0c0ed75ebd867189723"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 20 15:58:06 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 20 15:58:06 2010 +0100"
      },
      "message": "libc: Fix the definition of SIGRTMAX\n\nAfter this change, SIGRTMAX will be set to 64 (instead of 32 currently).\nNote that this doesn\u0027t change the fact that our sigset_t is still defined\nas a 32-bit unsigned integer, so most functions that deal with this type\nwon\u0027t support real-time signals though.\n\nChange-Id: Ie1e2f97d646f1664f05a0ac9cac4a43278c3cfa8\n"
    },
    {
      "commit": "95d751feacdb58d3fbc36f3f21a895a3ec2f065b",
      "tree": "fc598e3e60c32a6bb576e224d27f37905769f0e8",
      "parents": [
        "4a7f31fad74417696ce740b1f5c14e4de0740e33"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Dec 16 16:47:14 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Dec 16 17:04:41 2010 +0100"
      },
      "message": "libc: Add ftruncate64 and improve 64-bit parameter syscall handling.\n\nThis patch improves the handling of 64-bit parameters in syscalls on ARM.\nThe ARM EABI mandates that 64-bit quantities be passed in even/odd register\npairs, which requires special treatment.\n\nThis allows us to simplify our implementations of pread() and pwrite()\nand remove the C stubs for pread64() and pwrite64().\n\nAlso add ftruncate64() to \u003cunistd.h\u003e\n\nChange-Id: I407e2fd223ba0093dd2d0b04c6152fadfc9ce3ef\n\nBug 3107933\n"
    },
    {
      "commit": "72e6fd42421dca80fb2776a9185c186d4a04e5f7",
      "tree": "322fe185cb1e6bee163cb5c99ed5e1d545ae3c33",
      "parents": [
        "6481b91520150e9664a3c4abc5d2aebdce422f93"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Dec 03 18:04:01 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 13:42:54 2010 +0100"
      },
      "message": "\u003csched.h\u003e: Add sched_getcpu() and cpu_set_t\n\nThis adds the cpu_set_t type definition and related functions\nand macros used to handle CPU thread affinity.\n\n  sched_getcpu()\n  sched_setaffinity()\n  sched_getaffinity()\n\nChange-Id: If382ecafde8926341a88478062b275553645065b\n"
    },
    {
      "commit": "6481b91520150e9664a3c4abc5d2aebdce422f93",
      "tree": "8fadb7aadcc6002a7053da60d50b49704423a5f9",
      "parents": [
        "23d24394e72715ddf580726655c8ba3fbcf11bfe"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:23:16 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:25:52 2010 +0100"
      },
      "message": "\u003ctime.h\u003e: Add timegm(), timelocal() and others.\n\nAdd timegm(), timelocal(), time2posix() and posix2time() to the\nC library.\n\nChange-Id: I34d5771ed83dd994870a5ca58a511d01898b1ffb\n"
    },
    {
      "commit": "23d24394e72715ddf580726655c8ba3fbcf11bfe",
      "tree": "66d28b315a0891c1ea5e99e870ca03e511d3186c",
      "parents": [
        "9962cef7c6ba20bcb4d4f5e6a4c923aa335d9107"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:05:11 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:05:11 2010 +0100"
      },
      "message": "libc: Add \u003candroid/api-level.h\u003e\n\nAdd a new header that defines __ANDROID_API__ as a constant integer\ncorresponding to the current native API level. This header is included\nby \u003csys/cdefs.h\u003e\n\nChange-Id: Ib4774e247b395991266245815a24292afc919848\nNOTE: This header is already provided by the NDK\u0027s platform headers.\n      for levels 3 to 9.\n"
    },
    {
      "commit": "994b68f5c7d637d2945c06260fe35b266c10379d",
      "tree": "6fa41d8b762ca971f2cc7bb11fe2396082245eee",
      "parents": [
        "41e533af4a2720c1dc228ba40b6582ca53085c3a",
        "6a51defa034a1c033ed01f7de444c0a4fc615249"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sun Aug 29 17:41:36 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sun Aug 29 17:41:36 2010 -0700"
      },
      "message": "resolved conflicts for merge of 6a51defa to gingerbread-plus-aosp\n\nChange-Id: I0367bcffe9179904ca820e3b824dddfa47594f63\n"
    },
    {
      "commit": "6a51defa034a1c033ed01f7de444c0a4fc615249",
      "tree": "87b93dbfe8ab9c61d80d4a6036c66b0982b72c73",
      "parents": [
        "22f1e3d4fae7d45cc439da94690d786ed44756fb"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Aug 27 08:19:19 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Aug 27 08:19:19 2010 -0700"
      },
      "message": "Fix __get_tls() in static C library to use kernel helpers.\n\nThis is needed to fix gdbserver\u0027s handling of threaded programs,\namong other things.\n\nChange-Id: I823387c602cef9891532da946a01db14be780ab0\n"
    },
    {
      "commit": "0291b0cada30c1c8eaaa346577969ff9b4eb5195",
      "tree": "b1545ee6fa3184dc1524a5f9e1fe9d460765f1b3",
      "parents": [
        "6d4d8cb79c5578d33ab17806d67b1e53a730fbc3",
        "6774809b6249d9d4efd982b6e3ca377c84482d9a"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jul 26 12:18:37 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jul 26 12:18:37 2010 -0700"
      },
      "message": "resolved conflicts for merge of 6774809b to gingerbread-plus-aosp\n\nChange-Id: I633c3067c874c215da0c6ede00af41d8e3587d8b\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": "6774809b6249d9d4efd982b6e3ca377c84482d9a",
      "tree": "2604b1ff619cc69aea02ac37c39c61d9b0c8c7c2",
      "parents": [
        "9d1f5afc34efb8c10672f765704941036fd40da8"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 21 16:18:21 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 23 12:16:15 2010 -0700"
      },
      "message": "linker: Support dlopen(NULL, ...) properly.\n\nChange-Id: Icba37823cb350c34848cc466d144c3a0af87c94c\n"
    },
    {
      "commit": "cb7e8c5ef3f5f60a848e469ed40610c8946fe7ac",
      "tree": "57f834d14915d4a63edf62aa0026676064baba8f",
      "parents": [
        "ab8b54101eed0a4b92ebf8fa6994cd1b4f22d8f4"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 17:19:07 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 17:20:29 2010 -0700"
      },
      "message": "libc: update alarm() implementation to return 0 on error.\n\nThis matches the GLibc behaviour, and allows alarm(0xFFFFFFFF) to return 0.\n\nChange-Id: I419aa71b27d6bb2015d15ba6b6112bf62eadcbb8\n"
    },
    {
      "commit": "ab8b54101eed0a4b92ebf8fa6994cd1b4f22d8f4",
      "tree": "938dc20fe75d7fcedb7c11c7c44f68aa783463e7",
      "parents": [
        "d466780c7cedb41edcf13f28ad900556c6aaa5b2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 16:52:27 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 08 16:52:27 2010 -0700"
      },
      "message": "libc: fix fstatfs() implementation.\n\nThe syscall expects the size of the buffer as the second argument.\n\nChange-Id: I99ede2fec7fcd385ca03ff022c2cffa4297bea8d\n"
    },
    {
      "commit": "519763265ec0b634bd9c264a0aca034882458ecc",
      "tree": "263dc7f4fa4256869cea19e6ea8a077d29bd95ad",
      "parents": [
        "a02b93bd75a9d156117264d88069566e447397e2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 28 14:10:14 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 02 15:09:57 2010 -0700"
      },
      "message": "libc: Fix sem_post() implementation to wake up all waiting threads.\n\nThis also allows us to optimize the case where we increment an\nuncontended semaphore (no need to call futex_wake() then).\n\nChange-Id: Iad48efe8551dc66dc89d3e3f18c001e5a6c1939f\n"
    },
    {
      "commit": "a02b93bd75a9d156117264d88069566e447397e2",
      "tree": "82f11630b57fc7a9defa24b8e2955a5614275d1c",
      "parents": [
        "0621a279adfb981ea1f0564e7fc8280cda78e043"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 28 14:20:22 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 28 14:20:22 2010 -0700"
      },
      "message": "libc: add sanity checks to pthread_mutex_destroy()\n\nChange-Id: Iddb2204fa792fa9aca5f19838926dddbb09b74a2\n"
    },
    {
      "commit": "50ace4fec5e8cb5afcbc656a4556fa528adfd760",
      "tree": "04647e039a457f69ba48a8301bebdd605fda7fca",
      "parents": [
        "6a9b888d7c4b246f6f66360789c72b754ff85021"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 16 16:36:41 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 22 17:51:41 2010 -0700"
      },
      "message": "Remove compiler warnings when building Bionic.\n\nAlso add missing declarations to misc. functions.\nFix clearerr() implementation (previous was broken).\nHandle feature test macros like _POSIX_C_SOURCE properly.\n\nChange-Id: Icdc973a6b9d550a166fc2545f727ea837fe800c4\n"
    },
    {
      "commit": "3527fd6f0df794207215790321824b7844cc712d",
      "tree": "bf295d17cdd7dfccd75ec314e02f93d3e1cd125a",
      "parents": [
        "da3019b55305ce51b1b483d8727641e791ce0941"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jun 14 17:18:35 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 15 07:04:41 2010 -0700"
      },
      "message": "wchar.h: improve wchar_t support in Bionic\n\nChange-Id: Iffd41046fd0933c66542abf7627a1569522dfcb2\n"
    },
    {
      "commit": "da3019b55305ce51b1b483d8727641e791ce0941",
      "tree": "c9bd76c757d8689bc2367bb0fdf318fbe3c7d060",
      "parents": [
        "ecb6d4133477fef90c2fa23a40637d3c62681ee0"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 11 14:37:34 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 11 14:40:02 2010 -0700"
      },
      "message": "libc: add missing truncate() declaration\n\nChange-Id: Icb3601bbc9365b75b05ff443a39192f9cd3cbfb7\n"
    },
    {
      "commit": "ecb6d4133477fef90c2fa23a40637d3c62681ee0",
      "tree": "d2053e198f32b1a389534ca6d019d1c75fdb8088",
      "parents": [
        "6c8a2f2a5bc8d612ee953f528f2b5eb35983656a"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 11 13:30:25 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 11 14:39:39 2010 -0700"
      },
      "message": "libc: Add missing \u003ctermio.h\u003e header\n\nChange-Id: Id4e020ed330b3eabf09324f9b6d44d3a0f336d87\n"
    },
    {
      "commit": "038fbae518e904c7aba64779714a22dbeeb90887",
      "tree": "713fecf819f653c56c3f8b2bae0e8e86a7afa2e6",
      "parents": [
        "9205fdf8c689a9cb27cfb33aeb58789c7da75788"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 18:15:57 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 18:15:57 2010 -0700"
      },
      "message": "sysconf(): Fix line parser for /proc files.\n\nChange-Id: I2678010ee95933de19c8a8e3b2fe65ceb9b86400\n"
    },
    {
      "commit": "410b2ae7fbff36db1d35e5765b2c79b8b6b7ad5b",
      "tree": "196db252e67e890c2d324da02df773a05d604efe",
      "parents": [
        "506b13d910a1a603b29fbc5a9ba41ba4c533b14c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 14:35:29 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 14:35:29 2010 -0700"
      },
      "message": "Add sincosl() function to bionic. So that sincos optimization can - DO NOT MERGE\nbe enabled.\n\nChange-Id: I672cb319689aa4fb3f1f7cd868dda76842bebae9\n"
    },
    {
      "commit": "b8e6c50cfa2d4c4b73e071d0e836a2667db010b1",
      "tree": "f9226eca1f1bce43e0e483a2a4713af2f414911f",
      "parents": [
        "aa4b1d042927872224e4bf5d22e4db5367e389fa"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 25 09:54:33 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 13:18:29 2010 -0700"
      },
      "message": "Fix setjmp()/longjmp() to save FP registers on ARMv7. - DO NOT MERGE\n\nChange-Id: I3a0c2c05e295ac05ed51a531dabda668be204ca0\n"
    },
    {
      "commit": "aa4b1d042927872224e4bf5d22e4db5367e389fa",
      "tree": "de40a80b8f9d1d2dd6a75b45901927378a1aed45",
      "parents": [
        "6304d8b21891fd0cb7b5a4c25159a3d3b1709d62"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu May 20 10:55:45 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 09 13:12:15 2010 -0700"
      },
      "message": "Add missing sysinfo() implementation (already declared in \u003csys/sysinfo.h\u003e) - DO NOT MERGE\n\nChange-Id: Iac4eb5911ffe4a7ab72b84df44e907685ac816af\n"
    },
    {
      "commit": "6304d8b21891fd0cb7b5a4c25159a3d3b1709d62",
      "tree": "8ab9c2bf6022f139b7af2eabda11846abf684171",
      "parents": [
        "a8a21488630980c1d2a2152d0ac39bd7978879e2"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 02 18:12:12 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 08 17:04:49 2010 -0700"
      },
      "message": "Use private futexes for semaphores, unless they are initialized with pshared !\u003d 0.\n\nChange-Id: I534e36a7171cd37037ae03b910ba71ea6968286d\nNote: previously, sem_init() would return an error if pshared !\u003d 0.\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": "b5e4a416060aa7f0a1e2a9ad5b8e318d59986852",
      "tree": "39115a2ef1c6c4084763687a312a67a52c9597c1",
      "parents": [
        "377d4c979dee3dcb5929e8f7a68a53c2407259ab"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Mar 19 17:59:23 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 22 17:31:50 2010 -0700"
      },
      "message": "pthread: Use private futexes by default in condition variables\n\nNow that the system properly uses shared condvars when needed, we\ncan enable the use of private futexes for them too.\n\nChange-Id: Icf8351fc0a2309f764cba45c65bc3af047720cdf\n"
    },
    {
      "commit": "88f06cd84a70f8a5212cb03272ec2c7cf0017afa",
      "tree": "4ff0a88177cd5fb2ca9c0e6df9a331cea7ecad1c",
      "parents": [
        "ee7b077abf1d99503b986489ad93374a057cb354"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 17:13:41 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Mar 18 17:13:41 2010 -0700"
      },
      "message": "Use private futexes for pthread_mutex_t.\n\nThis does not change the implementation of conditional variables\nsince we\u0027re waiting for other system components to properly use\npthread_condattr_init/setpshared before that.\n\nAlso remove an obsolete x86 source file.\n\nChange-Id: Ia3e3fbac35b87a534fb04d4381c3c66b975bc8f7\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": "d378c68d74cb4fdac450650fe816c9d649c8edaf",
      "tree": "0d5c15b4606982f26009bdc5c572415ac9dd18d3",
      "parents": [
        "d7ed1ae98249af8a58ce97784a29f048d77789a9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 08 15:13:04 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 08 15:22:13 2010 -0800"
      },
      "message": "Fix spurious DNS lookups in the C library.\n\nThe problem was that the \u0027defdname\u0027 field of res_state structure\nwas not properly initialized in __res_vinit(). This field is used\nto store the default domain name, which is normally build from\ncalling gethostname() (see line 549 of res_init.c).\n\nUnfortunately, in the typical Android case, gethostname() returns\nan error (the hostname is configured) and a random stack string is\nused later to build the DNS search list (see lines 556+ in res_init.c)\n\nFor the sake of illustration, let\u0027s say the search list is set to\na random value like \u0027xWLK\u0027.\n\nThe end result is that when trying to result an unknown domain name\n(e.g. \u0027www.ptn\u0027), the query fails then the resolver tries to make a\nnew query with the DNS search list path(s) appended (e.g. \u0027www.ptn.xWLK\u0027).\n\nThe patch simply initializes \u0027defdname\u0027 to an empty string to avoid\nthis when the net.dns.search system property is not set.\n\nAlso contains whitespace/formatting fixes\n"
    },
    {
      "commit": "d7ed1ae98249af8a58ce97784a29f048d77789a9",
      "tree": "0effedac191d00aadd7ceb7887a7eab62b95bfb7",
      "parents": [
        "cb58a8221c678299a6be9403136c6f348bd9dbdc"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Mar 05 14:17:35 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Mar 05 14:17:35 2010 -0800"
      },
      "message": "Fix timezone management in the C library\n\nDefine \u0027timezone\u0027 and \u0027daylight\u0027 global variables that are already\ndefined in \u003ctime.h\u003e\n\nProperly update the \u0027tm_gmtoff\u0027 field in \u0027struct tm\u0027 values.\n"
    },
    {
      "commit": "eb9d5ed3477ef8cd9ccfa424ea585541ea3af84a",
      "tree": "57860bc44d54d743b05f8a7680267170af3f3069",
      "parents": [
        "8f8b5310d2c3fe8782377bd66b65ed14dc6511a4"
      ],
      "author": {
        "name": "Andrei Popescu",
        "email": "andreip@google.com",
        "time": "Thu Feb 25 13:27:46 2010 +0000"
      },
      "committer": {
        "name": "Andrei Popescu",
        "email": "andreip@google.com",
        "time": "Tue Mar 02 11:43:24 2010 +0000"
      },
      "message": "add sigaltstack syscall\n"
    },
    {
      "commit": "8f8b5310d2c3fe8782377bd66b65ed14dc6511a4",
      "tree": "1cd0c6e85535467a0ffd973991aef7bccb499473",
      "parents": [
        "1f6f49396335d88c577c16304b1989d0d1468e5c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 01 11:30:40 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Mar 01 11:30:40 2010 -0800"
      },
      "message": "Fix pthread_sigmask() to return correct error values.\n\nBefore that, it returned -1 on error and set errno (not Posix)\nAfter the patch, it returns the error code and leaves errno untouched.\n"
    },
    {
      "commit": "9ab75d4cc803e91b7f1b656ffbe2ad32c52a86f9",
      "tree": "7f0451638ba549b39cb81ae45e570e7a0534de9e",
      "parents": [
        "b55462328f7f7468bb8c0cb44ad1069af30415a3"
      ],
      "author": {
        "name": "Steinar H. Gunderson",
        "email": "sesse@google.com",
        "time": "Thu Feb 11 15:44:55 2010 +0100"
      },
      "committer": {
        "name": "Steinar H. Gunderson",
        "email": "sesse@google.com",
        "time": "Wed Feb 24 11:49:17 2010 +0100"
      },
      "message": "Implement support for RFC 3484 (address selection/sorting) in bionic.  (The\nJava changes required not to mess up the ordering from bionic will arrive in a\nlater commit.) In particular, this will give us more correct behavior when on a\n6to4 network, in that IPv4 will usually be preferred over 6to4.\n\nMost of RFC 3484 is implemented -- what\u0027s not is rule 3 (avoid deprecated\naddresses), 4 (prefer home addresses) and 7 (prefer native transport) as they\nrequire low-level access to the kernel routing table via netlink. (glibc also\nstarted out this way, and these rules are primarily useful in pretty obscure\ncircumstances, so we should be fine for the time being.)\n\nAlso, rule 9 (use longest matching prefix) has been modified so it does not try\nto sort IPv4 addresses; given current IPv4 addressing practice these rules are\npretty much meaningless. Finally, I\u0027ve added support for Teredo as a separate\nlabel, with slightly lower preference than 6to4. (Vista puts the preference\nbelow IPv4 by default. glibc puts the preference together with non-tunneled\nIPv6.)\n\nNote that this patch removes support for the \"sortlist\" directive in\nresolv.conf; I\u0027ve never seen it in actual use, it\u0027s irrelevant for Android\n(since we don\u0027t use resolv.conf anyway), and it\u0027s not clear how it would be\nimplemented alongside RFC 3484.\n"
    },
    {
      "commit": "4f920f685bb4af8400c70383eecf347a35353778",
      "tree": "b48d0f32e745f252a4ad5781e8da60f45415f7de",
      "parents": [
        "294dd0b86b1484aec7549663aff5b19c98a4b7fd"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:50:32 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:50:32 2010 -0800"
      },
      "message": "Fix sem_post() behaviour to wake up multiple waiting threads.\n"
    },
    {
      "commit": "294dd0b86b1484aec7549663aff5b19c98a4b7fd",
      "tree": "9a54351833b806c3f31f0b8400c10bd746938254",
      "parents": [
        "1dcf07a84c93a0095875f2d2087bfe7bfb66a413"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:18:37 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Feb 12 12:18:37 2010 -0800"
      },
      "message": "Fix sem_trywait() implementation + update changelog.\n"
    },
    {
      "commit": "97cf7f3394780d524038fc083e2c134031b54728",
      "tree": "40b61956bbe4d28babe839c3be40e9f114810e5f",
      "parents": [
        "1a2917ca954f575cc9698c99e54bd93087793c8f"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 22 18:59:05 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jan 25 11:18:30 2010 -0800"
      },
      "message": "Implement clone() C library function properly.\n\nOnly provide an implementation for ARM at the moment, since\nit requires specific assembly fragments (the standard syscall\nstubs cannot be used because the child returns in a different\nstack).\n"
    },
    {
      "commit": "d6bf8f92298aa46ee045f30ed5146eb05af16ced",
      "tree": "95fa5af1e9a8fc8a1d348b5a095fa8aaab4bf7fb",
      "parents": [
        "fc10b24accd082fb33c8f92ff8b92481c22fe3dc"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jan 21 15:03:26 2010 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jan 21 16:25:38 2010 -0800"
      },
      "message": "Add Bionic Changelog in libc/docs/CHANGES.TXT\n"
    },
    {
      "commit": "4cab53af779783c811cca6d2705c48b9d081fcda",
      "tree": "1fb39cf7eb0f5a8b8c83ff0fec25c097dc2dad07",
      "parents": [
        "1ff2ee440bddc84e3216de3c9965943e0b2f020a",
        "cdb68bf8ce26448cfe173d86f1c074e167c3420f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 27 03:31:12 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed May 27 03:31:12 2009 -0700"
      },
      "message": "am cdb68bf8: Merge change 2470 into donut\n\nMerge commit \u0027cdb68bf8ce26448cfe173d86f1c074e167c3420f\u0027\n\n* commit \u0027cdb68bf8ce26448cfe173d86f1c074e167c3420f\u0027:\n  Fix getservent() so that it returns s_port in network byte order.\n"
    },
    {
      "commit": "2735b33519595da5d51b79757ccce730021a9228",
      "tree": "7839125a9beb3a38e33950d22b5495a3ab66c19d",
      "parents": [
        "8215679b355efe3829bab571bd566dc818ea4ccc"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue May 26 23:54:37 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed May 27 00:01:11 2009 +0200"
      },
      "message": "Fix getservent() so that it returns s_port in network byte order.\nAlso add a new document detailing known issues in the C library.\n"
    },
    {
      "commit": "edbe7fc97bab7ff0684053d1be564330689bf3ad",
      "tree": "271db0992a091d68f17f073ba9573c4698f97ce1",
      "parents": [
        "78bf5fc677a2d25d50598b01781eafacdb5e6afe"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 18 22:20:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 18 22:20:24 2009 -0700"
      },
      "message": "auto import //branches/master/...@140412\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": "6f04a0f4c72acff80dad04828cb69ef67fa609d1",
      "tree": "915db7d93cb742f72b5d3819e69f48cb29c40a15",
      "parents": [
        "2489551343aa89fc539f369f7689c941b78c08d1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:29 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Feb 19 10:57:29 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@132276\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"
    }
  ]
}
