)]}'
{
  "log": [
    {
      "commit": "440fd870b20b4720e11c9ea71d2a3284f8cf2f59",
      "tree": "104d72391ed281ca7093a0ec374705387dcedc94",
      "parents": [
        "deba00ca2ec735b2a2286edec656262b70a2677e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 18 17:55:03 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 18 18:13:57 2010 -0700"
      },
      "message": "Ensure that binder incalls to the system process keep the fg cgroup\n\nOn binder incalls, the handler thread is given the caller\u0027s priority by the\ndriver, but not the caller\u0027s cgroup.  We have explicit code that sets the\nhandler\u0027s cgroup to match the caller\u0027s, *except* that the system process\nexplicitly disables this behavior.  This led to a siuation in which we were\nrunning binder incalls to the system process at nice\u003d10 but cgroup\u003dfg.\n\nThat\u0027s fine as far as it goes, except that if a GC happened in the handler\nthread, it would be promoted to foreground priority and cgroup both, to avoid\nhaving the GC take forever.  Then, when GC finished, the original priority\nis reset, and the cgroup set *based on that priority*.  This would push the\nhandler thread into nice\u003d10 cgroup\u003dbg_non_interactive -- which matches the\ncaller, but is supposed to be impossible in the system process.\n\nThe end result of this was that we could be running \"lengthy\" operations in\nthe system process in the background.  Unfortunately, some of the operations\nthat wound up like this would hold important global system locks for up to\ntwenty seconds as a result, making the entire device unresponsive to input\nfor that period.\n\nThis CL fixes the binder incall setup to ensure that within the system process,\na binder incall is always begun from the normal foreground priority as well\nas cgroup.  In practice now the device still becomes laggy/sluggish when the\noffending lock-holding time-consuming incall occurs, but since it still runs\nas a foreground task it is able to proceed to completion within a short time\nrather than taking 20 seconds.\n\nFixes bug #2403717\n\nChange-Id: Id046aeabd0e80c48eef94accc37842835eab308d\n"
    },
    {
      "commit": "98e71ddaede9a0bfb681fd237bec1f66c6c53193",
      "tree": "b99491347832c92e1e5af62d11d3a9baf946dd18",
      "parents": [
        "e4f5055ad281096e5b89c4240be29d2c95a43b65"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 17:30:52 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Feb 21 23:27:25 2010 -0800"
      },
      "message": "remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).\n\nAdd a Flattenable interface to libutils which can be used to flatten\nan object into bytestream + filedescriptor stream.\nParcel is modified to handle Flattenable. And GraphicBuffer implements\nFlattenable.\n\nExcept for the overlay classes libui is now independent of libbinder.\n"
    },
    {
      "commit": "0dd0d2944a0a7b985db162dec8b49b77d689d171",
      "tree": "dde15fc2105fbf0aa8af4df71f5d73a16688a3f2",
      "parents": [
        "10e6d20fb3083693fc3e0378b982d08cfd9ce034"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 25 19:00:00 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 29 14:51:06 2010 -0800"
      },
      "message": "Simplify the MemoryDealer implementation\n\nAt some point the implementation became complicated because of\nSurfaceFlinger\u0027s special needs, since we are now relying on gralloc\nwe can go back to much simpler MemoryDealer.\n\nRemoved HeapInterface and AllocatorInterface, since those don\u0027t need\nto be paramterized anymore. Merged SimpleMemory and Allocation.\nMade SimplisticAllocator non virtual.\n\nRemoved MemoryDealer flags (READ_ONLY, PAGE_ALIGNED)\n\nRemoved a lot of unneeded code.\n"
    },
    {
      "commit": "8c6cedc9bc9a4b69616a79a95449f6f6b08c7bf1",
      "tree": "b1bbc3748af558bc7a56d7ac4fb96ca059cc845b",
      "parents": [
        "d56352bddd717d2e45f1f3ee7fb52ef7f593f950"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 17:59:37 2009 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Dec 07 19:11:14 2009 -0800"
      },
      "message": "Propagate background scheduling class across processes.\n\nThis is a very simply implementation: upon receiving an IPC, if the handling\nthread is at a background priority (the driver will have taken care of\npropagating this from the calling thread), then stick it in to the background\nscheduling group.  Plus an API to turn this off for the process, which is\nused by the system process.\n\nThis also pulls some of the code for managing scheduling classes out of\nthe Process JNI wrappers and in to some convenience methods in thread.h.\n"
    },
    {
      "commit": "c0c1092183ceb38dd4d70d2732dd3a743fefd567",
      "tree": "103ea3734dae9b26cbfd872cb65cdabf833e8dc0",
      "parents": [
        "ad55651fe7a0525bbf38efe47000a56685b6e81a"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Fri Oct 30 18:39:55 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Thu Nov 12 16:31:12 2009 -0800"
      },
      "message": "Modify the binder to request 1M - 2 pages instead of 1M.  The backing store\nin the kernel requires a guard page, so 1M allocations fragment memory very\nbadly.  Subtracting a couple of pages so that they fit in a power of\ntwo allows the kernel to make more efficient use of its virtual address space.\n\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    },
    {
      "commit": "07d69893e1677bd59a3461a0c4fcd3541563144d",
      "tree": "204e09917226ac8ad93f1552749697f5b525ecb5",
      "parents": [
        "f84570e7afdfebb00546e87cbd54539a69aee675"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Sun Nov 08 14:29:02 2009 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@android.com",
        "time": "Sun Nov 08 14:29:02 2009 -0800"
      },
      "message": "Reset binder service threads\u0027 cgroup/priority after command completion\n\nTo prevent buggy command implementations from poisoning binder threads\u0027\nscheduling class \u0026 priority for future command execution, we now reset the\ncgroup and thread priority to foreground/normal when a binder service thread\nfinishes executing the designated command.\n\nChange-Id: Ibc0ab2485751453f6dc96fdb4eb877fd02796e3f\n"
    },
    {
      "commit": "6dfe8f1ffad455363fff4fe69ced6da386970fbc",
      "tree": "f86255f2a58669ee9924e8dba8e0ecdc4745eef7",
      "parents": [
        "1ef5d4730b354843abcc1a5ebe8b53bc09ff28f9"
      ],
      "author": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Fri Nov 06 11:25:23 2009 -0800"
      },
      "committer": {
        "name": "Evan Millar",
        "email": "emillar@google.com",
        "time": "Fri Nov 06 11:25:23 2009 -0800"
      },
      "message": "Revert jparks code from IPCThreadState.\n"
    },
    {
      "commit": "b5c41353337b3db2dc0ca0df163d5294af8281bc",
      "tree": "7ffd7d27c1a8f695b9c1f25dfa9aff4baf0ad404",
      "parents": [
        "a6052978975fbc77db923cc34622dc24467b2534"
      ],
      "author": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Wed Nov 04 14:25:26 2009 -0800"
      },
      "committer": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Wed Nov 04 14:25:26 2009 -0800"
      },
      "message": "When a thread is about to be put back onto the thread pool ensure that it is in the foreground cgroup.\n"
    },
    {
      "commit": "dcd3958c5086f757dc09472700ae7384efea7fc8",
      "tree": "425e5932fd6373a663caebf468b113d553f11d5a",
      "parents": [
        "f29a0aa698ba61d4a9de886c6077233d594ad78c"
      ],
      "author": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Tue Nov 03 12:14:38 2009 -0800"
      },
      "committer": {
        "name": "Jason Parks",
        "email": "jparks@google.com",
        "time": "Tue Nov 03 13:10:15 2009 -0800"
      },
      "message": "Add a warning when we leave threads in the binder thread pool in the background scheduling group.\n"
    },
    {
      "commit": "d7f53e1945be8db145a5f1be038ed223d25a8edf",
      "tree": "45e96379b248e75f7a0d0251530ccbe6bf41b04b",
      "parents": [
        "dbeb4d37d7154f30b11254a4fa1a801e894f8e98"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Nov 02 16:02:43 2009 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Nov 02 16:36:45 2009 -0800"
      },
      "message": "libbinder: MemoryHeapPmem: honor the NO_CACHING flag when creating a client heap\n\nChange-Id: Ia7beb800f5a24beaa4b7f3032b486d4ed1991b23\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "0db1a8931bb24b4f240c19210e70844af8c1e9ff",
      "tree": "b45e2140c8dd6ebde5b6173f4f71b2da1e2daea1",
      "parents": [
        "db95a9e824f51c39a40833ee3c80daf6b6af3247"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Oct 29 22:55:00 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Oct 30 18:35:47 2009 -0700"
      },
      "message": "libbinder: add a NO_CACHING flag to MemoryHeapBase\n\nThe NO_CACHING flag translates to opening a memory region with O_SYNC.\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "d4851d74ac9c737acda85f1fdbc028c68f481a36",
      "tree": "74e5f73442fdbe503aa82e751af1ddf9bb3e7691",
      "parents": [
        "8039e6edac4754113b31d6ed748b6a377874c65e"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Mon Aug 17 15:28:30 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 20 03:55:20 2009 -0700"
      },
      "message": "Add offset handling in MemoryHeapBase class\n"
    },
    {
      "commit": "84a6d041e2c69d4d0b69269a0b59e725c9f119a3",
      "tree": "6841d5b1d696e27f66c30ede34c73d30cf5cc5c3",
      "parents": [
        "7f87b14a5b569b5526725fcf2d942156948d064c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 13:33:27 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 15:31:25 2009 -0700"
      },
      "message": "Support for marshalling pointers / intptr_t in Parcel.\n\nSome refactoring to eliminate code duplication in Parcel implementation.\n"
    },
    {
      "commit": "1d0a95b12a9194f64dd436224ec3bf8e0622d678",
      "tree": "bbc967726cbe12bd9e3e193df480941de5b38734",
      "parents": [
        "cf81c84e43eb33931b950fa2c9b4c6f51afe7197"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:12:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:18:16 2009 -0700"
      },
      "message": "don\u0027t crash in Parcel when given a null (and therfore invalid) native_handle_t\n"
    },
    {
      "commit": "d43b194b69fca6c81023effc921fcc7576bad496",
      "tree": "2620a6fb34aa32a0f802838e7c9cfae5e72821ed",
      "parents": [
        "007a4a26e48eb16aa10b83d58a7ced1766b62de9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 17 07:59:17 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 17 10:48:09 2009 -0700"
      },
      "message": "Instead of using -1 for pid and uid in the simulator, and then having\nto special-case the simulator case all over the framework, just use\ngetuid and getpid, and intercept those in the simulator wrapper.\n"
    },
    {
      "commit": "375f56363a8737119ce2222dcfaacbe1cf733fc0",
      "tree": "5cdf2be415ef2668b6d4179b00b61e5a57f5c077",
      "parents": [
        "5e78e0965169790111f01354e78b0f8d34c94840"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 15 18:24:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 15 21:56:51 2009 -0700"
      },
      "message": "new Permission class used to improve permission checks speed (by caching results)\n"
    },
    {
      "commit": "83c0446f27b9542d6c2e724817b2b2d8d1f55085",
      "tree": "a5a1a310070cad89ee8aaa86d3b1b874f9d29610",
      "parents": [
        "5f2397488ab700674d059a001e917de28a1b0a0c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 19:00:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 16:12:20 2009 -0700"
      },
      "message": "some work to try to reduce the code size of some native libraries\n\n- make sure that all binder Bn classes define a ctor and dtor in their respective library.\n  This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.\n  This is also cleaner, should we want these ctor/dtor to do something one day.\n\n- same change as above for some Bp classes and various other non-binder classes\n\n- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.\n\n- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere\n\n- IBinder::getInterfaceDescriptor() now returns a \"const String16\u0026\" instead of String16, which saves calls to String16 and ~String16\n\n- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.\n  The cache makes BpBinder bigger, so we need to figure out if we need this method at all.\n"
    },
    {
      "commit": "4e97f8c62f3eb3c51343e9f4bbd898992a13903d",
      "tree": "20a0c65ae3db8898fb6328aeacf1212a63a6ecac",
      "parents": [
        "19fbae088ea8063346c0aff687a07a9fca61bab2",
        "b6333b34a2d6e265edf2a052646b07c0b1456ab6"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 22 14:53:18 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 22 14:53:18 2009 -0700"
      },
      "message": "am d50a458b: Merge change 2351 into donut\n\nMerge commit \u0027d50a458bb291801ab9fdc119301bc7b84b42a6e3\u0027\n\n* commit \u0027d50a458bb291801ab9fdc119301bc7b84b42a6e3\u0027:\n  Fix a major bug in Bundle when unparcelling from AIDL.\n"
    },
    {
      "commit": "a47f02afb1e1f2c4abd9379c13903a5dde89d354",
      "tree": "8a0f2d2172c27aa2dba4eae77a4420433af84294",
      "parents": [
        "a498449e2b11ed5f15e8c8fda9a429850f891434"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 21 16:29:38 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 21 16:29:38 2009 -0700"
      },
      "message": "change 2115 wasn\u0027t merged properly into master. this fixes that.\n\nMerge change 2115 into donut\n\n* changes:\n  bring the native_handle stuff back from master_gl\n\nConflicts:\n\n\tlibs/binder/Parcel.cpp\n"
    },
    {
      "commit": "c5b2c0bf8007562536b822eb060fc54a01f8e08b",
      "tree": "da6084f542177972cf72a985b5d2c10330f87de3",
      "parents": [
        "208059f67ed2dd9fa025e07fcb6954d3cb61c79e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "208059f67ed2dd9fa025e07fcb6954d3cb61c79e",
      "tree": "b2fde632a7c9abf4137751ffe779318c0a89bd96",
      "parents": [
        "501c6179e158b2d5bfc67cb8b7180c02ac301f97"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 18 15:08:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:02 2009 -0700"
      },
      "message": "checkpoint: split libutils into libutils + libbinder\n"
    }
  ]
}
