)]}'
{
  "log": [
    {
      "commit": "911109c4149a2fca140cdf471d15deb38ebdcdcb",
      "tree": "ca7cab7309d291108b69339d4c2614f41ee9518e",
      "parents": [
        "c7b92ea120a963e85e5aa0257aab050ad64c124e"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Feb 13 17:28:00 2020 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Feb 14 01:42:11 2020 +0000"
      },
      "message": "libprocessgroup: Prevent SetProcessProfiles from using cached fd\n\nBecause we cache file descriptors associated with cgroup \"tasks\" file it\nshould not be used with SetProcessProfiles API which operates on entire\nprocesses rather than tasks. Change SetProcessProfiles API to prevent\ncache fd usage, modify ExecuteForProcess to not attempt to use cached\nfd. Also fix unconditional calls to EnableResourceCaching from\nExecuteForTask which should be called only when SetTaskProfiles is used\nwith use_fd_cache set to true.\n\nBug: 149524788\nChange-Id: I880efaf8217a4dd7ccfbb4fb167b2295cefc057a\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "20b2f1e0abfabf6b19a9c011b7f99fd7de4e8b91",
      "tree": "56c0643e6288e28cfc9899c1e213bc97624bd4a1",
      "parents": [
        "955601beb42c7c57526e35853d5c8b3a06d13450"
      ],
      "author": {
        "name": "Quentin Perret",
        "email": "qperret@google.com",
        "time": "Tue Feb 04 13:10:31 2020 +0000"
      },
      "committer": {
        "name": "Quentin Perret",
        "email": "qperret@google.com",
        "time": "Tue Feb 04 13:10:31 2020 +0000"
      },
      "message": "task_profiles.json: Fix uclamp attribute\n\ntask_profiles.json currently uses attributes of a defunct version of\nuclamp, which was used for testing.\n\nLet\u0027s use the attributes that actually got merged upstream instead.\n\nBug: 143710295\nChange-Id: Ic6a14f52e14efeefc91f6e6bf580c15e2eded82e\nSigned-off-by: Quentin Perret \u003cqperret@google.com\u003e\n"
    },
    {
      "commit": "cee468fb793891fafd40bddc41384a229c2d6c57",
      "tree": "4088a413111567d40c5616e289c50eb96234bfae",
      "parents": [
        "20610c3082f864733fd60ba2d10ad44297361d7d"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Jan 23 16:18:13 2020 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 29 17:24:06 2020 +0000"
      },
      "message": "Revive ACgroupController_getFlags LLNDK function to detect missing cgroups\n\nACgroupController_getFlags was reverted due to LLNDK breakage, however\nit allows detection of cgroups that failed to mount in a more efficient\nway. Revive the function as a weakly linked symbol to allow for it to\nbe missing in case older LLNDK library is being used with the new\nsystem software. This effectively reverts the commit\naa1d54f0ccbb \"Remove ACgroupController_getFlags to fix API breakage\"\u0027\nexcept it declares ACgroupController_getFlags function as weak and\ntargets it for API level 30. If LLNKD library does not contain\nACgroupController_getFlags the behavior falls back to the current\nway of identifying cgroups that failed to mount.\n\nTest: build and verify correct operation with a missing cgroup\nChange-Id: I9158ef53aba97972d41d71dd3396ac43796a7004\nMerged-In: I9158ef53aba97972d41d71dd3396ac43796a7004\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "8438595f21db4d83700ef6f86b5a51de35f56d65",
      "tree": "b79a6e9ac8afc9587b92289267fc4c51cff0a525",
      "parents": [
        "347d6406f09f8bbb914a34e83bd01d3bee4de6c7"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 24 16:36:10 2020 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Mon Jan 27 21:07:27 2020 +0000"
      },
      "message": "libprocessgroup: Prevent aggregate profiles from referencing stale ones\n\nCurrently when vendor overrides a profile the profile object is being\nreplaced with a new one. However the old profile might have been\nreferenced by an aggregate profile and with such profile replacement\nthe aggregate profile is left referencing a stale object. Fix this by\nreplacing the content of the old profile with the content from the new\none instead of replacing the object itself.\n\nBug: 148311066\nTest: override profiles referenced in aggregate profile and verify\nTest: correct replacement\nChange-Id: Iabddbf3580455e5263fedad6665cf52fb323e50a\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "64811b7b13f6a52f6603132323f23dcc57b45ff1",
      "tree": "022cdd29142c769c5f46bb3dae9fa476e3ea484a",
      "parents": [
        "d66e442c21cf5d0b06524551f7bf5db94487033b"
      ],
      "author": {
        "name": "Quentin Perret",
        "email": "qperret@google.com",
        "time": "Tue Jan 14 12:55:57 2020 +0000"
      },
      "committer": {
        "name": "Quentin Perret",
        "email": "qperret@google.com",
        "time": "Mon Jan 27 11:04:03 2020 +0000"
      },
      "message": "libprocessgroup: ensure schedboost_enabled is true with uclamp\n\nIn the current state, schedboost_enabled() is true if and only if\nschedtune is in use. As a result, all tests conditioned by\nschedboost_enabled() will be skipped on devices using uclamp since it is\nand extension of the CPU controller.\n\nFix this by making schedboost_enabled() return true if either schedtune\nor the CPU controller is enabled.\n\nBug: 44953631\nChange-Id: Idaadf252c9cf411a176180ab8988d559ca8a1332\nSigned-off-by: Quentin Perret \u003cqperret@google.com\u003e\n"
    },
    {
      "commit": "d89ed132a0ee1a57046286b83e64a35b71774952",
      "tree": "4fe3434c71c6baadc53c11f719252a430247caba",
      "parents": [
        "7d16aedc47552bbb67563ef6754a77c88b5821ea"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Nov 19 14:19:40 2019 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Nov 19 15:13:17 2019 -0800"
      },
      "message": "init: always kill oneshot services\u0027 process groups.\n\n~2007 a change was added that would allow oneshot services to\ndaemonize by not killing their process group.  This was a hack at the\ntime, and should certainly not be needed now.  I\u0027ve resisted removing\nthe behavior however, as it hadn\u0027t caused any issues.\n\nRecently, it was detected that the cgroups that these processes belong\nto, would exist forever and therefore leak memory.  Instead of simply\nremoving the cgroups when empty, this provides a good opportunity to\ndo the right thing and fix this behavior once and for all.\n\nThe new (correct) behavior only happens for devices with vendor images\nbuilt for Android R or later.  Init will log a warning to dmesg when\nit detects this difference in behavior has occurred.\n\nBug: 144545923\nTest: boot CF/Coral and see no difference in behavior.\nTest: boot CF with a service that daemonizes and see the warning.\nChange-Id: I333a2e25a541ec0114ac50ab8ae7f1ea3f055447\n"
    },
    {
      "commit": "726a68cb401538da8843ee3521e7bd8f81823e48",
      "tree": "4b02609c6510602fe70e4aa24fc4af7eb24355ed",
      "parents": [
        "e91c76b2104792d839b2bd3036e7e265427dcdc1"
      ],
      "author": {
        "name": "Marco Ballesio",
        "email": "balejs@google.com",
        "time": "Tue Oct 08 09:12:22 2019 -0700"
      },
      "committer": {
        "name": "Marco Ballesio",
        "email": "balejs@google.com",
        "time": "Wed Nov 13 20:21:07 2019 +0000"
      },
      "message": "Add support for freezer cgroup\n\nAdds the freezer cgroup to process groups\n\nChange-Id: Ib7a8dbe776ff156ff3827b9a659365384f3e6ac8\nBug: 143308662\nTest: manual - frozen processes aren\u0027t scheduled for execution until\nunfrozen\n"
    },
    {
      "commit": "cf8a5b0e0e025d4067c4d1728ba6076bf6261d83",
      "tree": "ea4b767384d5424f1615017648dac687df671deb",
      "parents": [
        "56b266686ad5d846ff78c6c8cade1612a50650a6"
      ],
      "author": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Fri Nov 08 12:15:11 2019 -0800"
      },
      "committer": {
        "name": "Haibo Huang",
        "email": "hhb@google.com",
        "time": "Sun Nov 10 04:08:25 2019 +0000"
      },
      "message": "Fix build with new googletest\n\nThe new googletest requires prefix to be non-empty.\n\nExempt-From-Owner-Approval: fix test\nChange-Id: Ic039cb657b455919e429a3ec2107893b1734e8a1\n"
    },
    {
      "commit": "ee2f2602230c56e02673188985b086bced4e1020",
      "tree": "e53d8dd003b7366342b83d75068a61d8f0a6373c",
      "parents": [
        "5cd5da9e54c49693b368554ee803fa2e9ae90110"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Fri Oct 11 15:09:09 2019 -0700"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Mon Oct 14 20:03:06 2019 -0700"
      },
      "message": "sched_policy: add get_cpuset/sched_policy_profile_name\n\nExpose API to return name of task profile for cpuset/sched policy so\nthat libprocessgroup clients using SetTaskProfiles directly don\u0027t have\nto maintain the mapping. This reduces the risk of inconsistency and saves\nmemory.\n\nBug: 139521784\nTest: atest libcutils_test:SchedPolicy\nChange-Id: I414312a038613913fb6a827bdcefceb3dec21264\n"
    },
    {
      "commit": "0b211fa8b352d02d532f21a8cd2ad2674407f1f7",
      "tree": "a3d5c7d1a525b049f1526310b4da39c5b01bdc30",
      "parents": [
        "4b45eab15b298fb35c72296108355984e58d44dd"
      ],
      "author": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Mon Sep 16 19:07:17 2019 +0800"
      },
      "committer": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Mon Sep 30 08:35:28 2019 +0000"
      },
      "message": "libprocessgroup: add support to set aggregate profiles\n\nTo support setting multiple profiles with one call. The json format\nis as below example.\n\n  \"AggregateProfiles\": [\n    ...\n    {\n      \"Name\": \"SCHED_SP_BACKGROUND\",\n      \"Profiles\": [ \"HighEnergySaving\", \"LowIoPriority\", \"TimerSlackHigh\" ]\n    },\n    ...\n  }\n\nBug: 139521784\nTest: SetProfile works as expected\nChange-Id: Ibe14ed57d5169cafcbcbbdb054df3ed171a2f6a2\n"
    },
    {
      "commit": "73f5b65ed439a2484f408ee426dcdff3c538706b",
      "tree": "718cc493b98cd116b0a6a8e38fb12d99e6f26276",
      "parents": [
        "cf4845b153edf7f3da9ab529b0d74d11a2c24c3f"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 17 08:49:35 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Sep 17 08:50:04 2019 -0700"
      },
      "message": "Add surenb@ to libprocessgroup OWNERS\n\nTest: n/a\n\nChange-Id: Ia671384e4202f618d0ae08bc33f0ca8bbd9e53c1\n"
    },
    {
      "commit": "73e355409a7ff004cc86c312b2d5362d9423d621",
      "tree": "3c64534cf24812f744db38a46f381583e7b38fb3",
      "parents": [
        "8c8ce02e2eb2dc0671518423f2e6b0661013a514"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Tue Aug 27 20:19:36 2019 -0700"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Thu Aug 29 03:51:32 2019 +0000"
      },
      "message": "Let blkio cgroup follow sched_policy\n\nThis reverts commit e8678cf883ee78ab9fe5ea47e6d9b24ef7c8d4f7.\n\nWith b/131214885 resolved, we should reland the change for bg sched group.\nIf a thread explicitly calls set_sched_policy to set a thread to background, it should not be latency sensitive.\n\nThis would help background I/O impacting foreground I/O e.g. b/65727988\n\nTest: build and boot\nBug: 140209629\nChange-Id: I218db084fb733cad57af8a5eae926818a6a2cdb8\n"
    },
    {
      "commit": "25eb1bfadf0dc1ed1245e4e57f20cf816f4555c3",
      "tree": "ee598a74f0abf8630df3298b4fbe42d40b096e75",
      "parents": [
        "c0349199db745ee53e8d1133ddfce57fccc69cc7"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jun 26 11:08:50 2019 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jun 26 11:35:11 2019 -0700"
      },
      "message": "Fix IsUsable to check for each controller separately\n\nCgroupController::IsUsable is using a global static variable to store the\nexistence of the controller. That means the first controller existence\ncheck would affect all other controllers. Fix this by making this variable\nto be a member of CgroupController class so that each controller can check\nfor its existence independently of other controllers.\n\nFixes: aa1d54f0ccbb (\"Remove ACgroupController_getFlags to fix API breakage\")\nBug: 136020193\nTest: adb shell cat /proc/$pid/task/*/cgroup\" prints \"cpuset:/top-app\"\nTest: for new launched activity process\nChange-Id: I4741a9126ea494122d5b2b1a0c4d7252bff6025c\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "a6abd821d5dc50fbaaf921354d66fe5477a2f201",
      "tree": "4aacd18b973181030b7ba5b4b3d6b6686b8badfa",
      "parents": [
        "ad6f656be2854aa15d42902abc6277253165bf62"
      ],
      "author": {
        "name": "Riddle Hsu",
        "email": "riddlehsu@google.com",
        "time": "Tue Jun 18 15:53:53 2019 -0600"
      },
      "committer": {
        "name": "Riddle Hsu",
        "email": "riddlehsu@google.com",
        "time": "Tue Jun 18 15:53:53 2019 +0800"
      },
      "message": "Allow to drop existing fd cache of cgroup path\n\nA process can give up the permission to set cgroup. If we still\nkeep the fd that was cached before losing the permission, when\nthe process sets scheduling group, it will write to the cached\nfd without checking if is accessible and lead to sepolicy denied.\n\nBug: 123043091\nTest: Build and boot.\nTest: A new process from zygote set cgroup and drop fd cache, and\n      then specializes to app domain. There is no sepolicy denied\n      when the process creates new thread.\n      (android::thread_data_t::trampoline)\n\nChange-Id: I285ee91424ea965ea9c670fc0f6662948e3e2ce5\n"
    },
    {
      "commit": "ad6f656be2854aa15d42902abc6277253165bf62",
      "tree": "95c3cb8df859bfdb71482ba530cd3040689be9ea",
      "parents": [
        "716ba5d91d72f047c2bd017842b0a0a88e2b88ae",
        "338260a4674b1ba5ed9264475821dbe2e8984313"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 18 01:26:31 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 18 01:26:31 2019 +0000"
      },
      "message": "Merge \"Remove ACgroupController_getFlags to fix API breakage\""
    },
    {
      "commit": "b495b0d403b578ec7c441d633256762ef80bc862",
      "tree": "890b6ca9557210b720dc8279004ac2f268fb2055",
      "parents": [
        "548218961299fb5a96f2ba8f6fbec09b4756a893"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jun 17 12:44:39 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jun 17 12:48:06 2019 -0700"
      },
      "message": "libprocessgroup: move native_bridge_support\n\nTo avoid merge conflict.\n\nBug: 135293492\nBug: 135298384\nTest: N/A\nChange-Id: I034b989c7e0f8a477b29ef7ca40bba8f2dc929e5\n"
    },
    {
      "commit": "338260a4674b1ba5ed9264475821dbe2e8984313",
      "tree": "91f531c2d0f617788a2da57da0a66c6e07bba699",
      "parents": [
        "7f34035f08b9433922279857357a209cf82cab3b"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jun 12 06:43:20 2019 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Mon Jun 17 16:46:23 2019 +0000"
      },
      "message": "Remove ACgroupController_getFlags to fix API breakage\n\nSince ACgroupController_getFlags was introduced after LLNDK freeze it\ncauses media crashes due to missing symbol. Remove the new function and\nre-implement cgroup controller detection to not require flags field but\ninstead check for its existence on the first access.\n\nBug: 135049992\nTest: libcutils_test with and without CONFIG_CPUSETS enabled\nChange-Id: I0220d6a926884dc22a7424d7d0a980c379c6f4eb\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "53f79e6861302ed58118b9a5624e97183b4dc3e0",
      "tree": "90e19e59e28dfe86ac4862b12ab2e01a915ed610",
      "parents": [
        "1d7f3b4f4e4bda94cc1a9b6e4291b414b97a3180"
      ],
      "author": {
        "name": "mtk16036",
        "email": "squall.ko@mediatek.com",
        "time": "Fri May 31 19:05:22 2019 +0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Jun 11 10:52:25 2019 -0700"
      },
      "message": "race condition in libprocessgroup\n\nwhile enable fdsan (file descriptor sanitizer),\nfdsan report use-after-close error after boot complete (sedom).\n\nBecause, in SetCgroupAction::EnableResourceCaching() currently has a data race against all the\nuse fd_ functions like SetCgroupAction::ExecuteForProcess(uid_t uid, pid_t pid) etc.\n\nThreadA                                     | ThreadB\n-------------------------------------------------------------------------------------------------\nin SetCgroupAction::EnableResourceCaching() | in SetCgroupAction::ExecuteForProcess(...)\n-------------------------------------------------------------------------------------------------\n                                            | in SetCgroupAction::AddTidToCgroup(int tid, int fd)\n-------------------------------------------------------------------------------------------------\nfd_ \u003d std::move(fd); /*modified fd_ value*/ |\n-------------------------------------------------------------------------------------------------\n                                            | write(fd)  /* crash here, fd is closed by ThreadA*/\n-------------------------------------------------------------------------------------------------\n\nSo, add mutex lock to protect fd_ data race.\n\nBug: 134120826\nTest: auto test, run the adb reboot test 100 times and no fdsan error report on libprocessgroup\nChange-Id: Iccf2f705e030f79324f1164509e715dc5be825de\n"
    },
    {
      "commit": "fa7a05fe5f7a166baefb07298b4908ebc9b90075",
      "tree": "f2c98c45fa117e7857a3ad85a65ee92488f33f50",
      "parents": [
        "7dc7c3a9c66cc5f934e57a57415dae33c4830841"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed May 08 17:59:55 2019 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue May 21 10:03:21 2019 -0700"
      },
      "message": "libprocessgroup: add flags to indicate when a controller failed to mount\n\nControllers listed in cgroups.json file might fail to mount if kernel is\nnot configured to support them. We need a way to indicate whether a\ncontroller was successfully mounted and is usable to avoid logging errors\nand warnings when a controller that failed to mount is being used. Add\nflags bitmask to cgrouprc controller descriptor and use a bit to indicate\nthat controller is successfully mounted. Modify cpusets_enabled() and\nschedboost_enabled() functions to use this bit and report the actual\navailability of the controller.\n\nBug: 124080437\nTest: libcutils_test with cpuset and schedtune controllers disabled\nChange-Id: I770cc39fe50465146e3205aacf77dc3c56923c5d\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "49c1f6efea5267ec40343a8dc6445b9c594a72ec",
      "tree": "1bc5677abf25979dc28c99d23a6de712f6ed9e48",
      "parents": [
        "051d5cba801ada2130159cbe6fa56104e76e1c8b"
      ],
      "author": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu May 16 14:19:09 2019 +0200"
      },
      "committer": {
        "name": "dimitry",
        "email": "dimitry@google.com",
        "time": "Thu May 16 14:19:09 2019 +0200"
      },
      "message": "Enable native_bridge_support for libprocessgroup\n\nAndroid build system added support for building translated binaries\nused on natively bridged targets (arm on x86 for example).\n\nHowever in order to avoid building unnecessary binaries and libraries\nfor such architectures most modules do not support native bridge by default.\n\nAll needed modules have to explicitly indicate if they may be used as part\nof translated binary build.\n\nThis change enabled native bridge support for libprocessgroup modules\nneeded by libutils greylisted library (available for apps targeting\nAndroid version \u003c N).\n\nBug: http://b/77159578\nTest: make\nChange-Id: I8d6f33e95e9f7424f5fa12f6fbabafa1d6c37413\n"
    },
    {
      "commit": "d167cb2958bcea8977d6ed43f98022f36388eee6",
      "tree": "50043cf018e37be49f5d9d6bcdb0104f4a8720d8",
      "parents": [
        "72fe284022888fb72e35763dc63bb0eef5638863"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed May 08 12:50:56 2019 -0700"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Wed May 08 20:29:44 2019 -0700"
      },
      "message": "Static link libjsoncpp in libprocessgroup\n\nThe majority of libjsoncpp use is due to libprocessgroup.  Static\nlinking reduces relocations required at runtime as well as compacts the\npages dirtied by relocations.  On a 32-bit system, where this matters\nthe most, this reduces 8KB of dirty pages per libprocessgroup load.\nOverall, the dirty page reduction on 32-bit cuttlefish is ~500KB.\n\nBug: 132275636\nTest: Boot on cuttlefish.  Calculate total amount of dirty memory used\n      for libprocessgroup and libjsoncpp.\nChange-Id: I1135bb45a3764f96a4a3a47c98fbcdee3913c988\n(cherry picked from commit b562e685037e395b0526a9262977bb73318ff994)\n"
    },
    {
      "commit": "3bdf315eaec91ee7c41232baf63eaddc43e0a48f",
      "tree": "baefe966ee3aaea5c8fb0f6cdaa96fbccc2317a5",
      "parents": [
        "1a043459a93192d52ef03ca730cfafccda1d227d"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Mon Apr 22 13:12:13 2019 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Mon Apr 22 20:13:13 2019 +0000"
      },
      "message": "libprocessgroup: limit libprocessgroup\u0027s VNDK API surface\n\nLimit libprocessgroup VNDK API to the minimum set required for task\nprofiles usage. This API allows vendors to use cgroups without accessing\ncgroup files directly, therefore allowing Android to change cgroup\narrangement details without breaking vendor code.\n\nBug: 131098932\nTest: build and boot\nChange-Id: I92463dfb44a108a133bafd2fe52237b6b1d50a69\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "8a315d2a3eb65d39f98f639565f7a29196f5e7bd",
      "tree": "cffced21a6fea2b6d820c029a55649ea422fcad9",
      "parents": [
        "72d8d2f2c605375643e396da1d67c7a5f0735775"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Feb 14 14:40:41 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sat Apr 20 00:11:21 2019 +0000"
      },
      "message": "Re-enable file descriptor caching and add option to skip caching\n\nThis reverts commit bee9f5718bd2dfedb615767bbd25147b4f3eed15\n\"libprocessgroup: Disable file descriptor caching temporarily\" and adds\noption to use SetTaskProfiles and SetProcessProfiles without file caching.\nThis option is used from JNI to avoid access denials because cached files\nare not whitelisted for JNI usage.\n\nBug: 123868658\nBug: 123043091\nTest: boot using svelte target\nChange-Id: I76b9d6af8a1dd4464cb3cf3e6dc327980efdf361\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "5c421695f0d6139632692645f755c79d9f163fc1",
      "tree": "f7801cc5ee148714f0516450b65efe5036e7f4d1",
      "parents": [
        "371180bb7279747f9cd3edb36e22247d36c76ae5",
        "e8678cf883ee78ab9fe5ea47e6d9b24ef7c8d4f7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 17 01:51:33 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 17 01:51:33 2019 +0000"
      },
      "message": "Merge \"Let blkio cgroup follow cpuset cgroup only\""
    },
    {
      "commit": "e8678cf883ee78ab9fe5ea47e6d9b24ef7c8d4f7",
      "tree": "f39eef3cbff582b8a470891d6546c9de1c362cc9",
      "parents": [
        "0a887aa14c5bd187859c7558259df3901fee2342"
      ],
      "author": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Fri Mar 29 20:03:47 2019 +0800"
      },
      "committer": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Tue Apr 16 22:20:58 2019 +0000"
      },
      "message": "Let blkio cgroup follow cpuset cgroup only\n\nSome app may have different cgroup settings in cpuset and schedtune for its\nthreads, so let blkio follow cpuset only, which represents the app\u0027s current\nstate more accurately. Otherwise, if that thread is doing IO, then its\nperformance will be affected because its blkio group is in lower priority\ngroup as schedtune.\n\nex: an app is now in top-app, but some thread of it set schedtune group to\nbackground, and blkio follows schedtune because it is called later.\n\nMain thread:\n6:schedtune:/top-app\n5:memory:/\n4:cpuset:/top-app\n3:cpuacct:/uid_1000/pid_8766\n2:cpu:/\n1:blkio:/\n0::/\n\nSome thread:\n6:schedtune:/background\n5:memory:/\n4:cpuset:/top-app\n3:cpuacct:/uid_1000/pid_8766\n2:cpu:/\n1:blkio:/background\n0::/\n\nBug: 124727032\nTest: blkio has same settings with cpuset\nChange-Id: I9a140c7d9d93e1dd43c34c8cf066f4a62e2bf604\n"
    },
    {
      "commit": "cc5e2dc2e8c00145dd1def0183cad31b73a4529e",
      "tree": "80352072049824d9f89c7b6e21f26f0663c00a7b",
      "parents": [
        "744677aaf516e2af60647297db6c0fe2e17cf330",
        "8df75fc30482727ff08f4ef11592723bad9c563d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 04 17:27:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 04 17:27:27 2019 +0000"
      },
      "message": "Merge \"CgroupSetupCgroups: don\u0027t leak fd.\""
    },
    {
      "commit": "5ece395328163dba5c903dbbd84231b994ee58b7",
      "tree": "2ea2d2e1987f38fc6a3e4b242af92f5b4a07351e",
      "parents": [
        "73bb342956f8c55592edf8c93e5c1d217810576d"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Apr 03 14:44:10 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Apr 03 14:44:46 2019 -0700"
      },
      "message": "libcgrouprc: version script: linux only\n\nmac builds doesn\u0027t support version script.\nThis fixes the build.\n\nTest: pass\n\nChange-Id: Ia3d06e4eff05b41982b3dfbb946efa41358b2c76\n"
    },
    {
      "commit": "8df75fc30482727ff08f4ef11592723bad9c563d",
      "tree": "e3698077f86fd462e5361859a03c7ae9eac9b358",
      "parents": [
        "25d42eeaa6ace4fc57be6580dfcf45c4785fdb6f"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 15:07:48 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Apr 03 12:13:26 2019 -0700"
      },
      "message": "CgroupSetupCgroups: don\u0027t leak fd.\n\n- If file is unlinked, the mmapped region is still there.\n- If file is truncated, a SIGBUS will be seen, and holding\n  the fd doesn\u0027t help.\n\nTest: boots (sanity)\nBug: 123664216\nChange-Id: I6683804bc795fab6798891a4471e5fe58fbffe13\n"
    },
    {
      "commit": "9d7b89abeacca936aadf94e920caf3987ff1ba48",
      "tree": "56b7819bb8d7cda800f263b4fba29c2d731d8d83",
      "parents": [
        "063b6beef05ae3bed6d6ca2e4b13c642503ff2b4"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 15:10:40 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 22:31:57 2019 -0700"
      },
      "message": "CgroupSetupCgroups -\u003e CgroupSetup\n\nTest: builds\nBug: 123664216\nChange-Id: I47c46ca9ba5c1fbf3f9f7a1b185dc48b058b1e32\nMerged-In: I47c46ca9ba5c1fbf3f9f7a1b185dc48b058b1e32\n"
    },
    {
      "commit": "53e0deb7b287df2f59ca765a845bcca1fb45f5e4",
      "tree": "94daa7533820b226fd2fcdbc1b845a68f82f0500",
      "parents": [
        "d8ce1fb1d1b93f2d67e5b786484a82bf42d15bd6"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Mar 22 17:01:08 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 22:31:57 2019 -0700"
      },
      "message": "libprocessgroup: use libcgrouprc to read cgroup.rc\n\nUse the LL-NDK library to read cgroup.rc.\n\nAs a side-effect, the CgroupController class is changed\nto a wrapper of ACgroupController* from the library. The\nclass itself essentially becomes the pointer, and can be\ntrivially copied. Modify all client code for this change.\n\nTest: builds and boots\nBug: 123664216\n\nChange-Id: I635d9885db62e82f37421f6d20f59c84a6f4cbb2\nMerged-In: I635d9885db62e82f37421f6d20f59c84a6f4cbb2\n"
    },
    {
      "commit": "d8ce1fb1d1b93f2d67e5b786484a82bf42d15bd6",
      "tree": "3a9beb8bd00b46a1d5c8571de882172ca341946c",
      "parents": [
        "6f9ce2e548e4a583392b212ca9017f6debdeebc0"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Mar 22 17:21:58 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 22:31:57 2019 -0700"
      },
      "message": "libprocessgroup_setup: use libcgrouprc_format\n\nUse CgroupController definition from libcgrouprc_format, not\nlibprocessgroup, because the wire format will be removed\nfrom libprocessgroup later.\n\nBug: 123664216\nTest: builds\nChange-Id: If5e2301a1b65c3f6a51a1661cfeeed4e299f634e\nMerged-In: If5e2301a1b65c3f6a51a1661cfeeed4e299f634e\n"
    },
    {
      "commit": "6f9ce2e548e4a583392b212ca9017f6debdeebc0",
      "tree": "50eb02285f05ef0b655b0b04bbadc9675f3a82e2",
      "parents": [
        "098323ba5bf4f5e585337369146fd52f032baeec"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Mar 05 15:47:16 2019 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 22:31:57 2019 -0700"
      },
      "message": "libprocessgroup: Move CgroupSetupCgroups() to libprocessgroup_setup\n\nOnly init uses SetupCgroups. This functionality is\nmoved from libprocessgroup to its own library, and only\ninit links to it.\n\nAlso, merge CgroupSetupCgroups() with CgroupMap::SetupCgroups()\nbecause the former is just an alias of the latter, and\nCgroupMap does not belong to libcgrouprc_setup.\n\nTest: boots\nBug: 123664216\nChange-Id: I941dc0c415e2b22ae663d43e30dc7a464687325e\nMerged-In: I941dc0c415e2b22ae663d43e30dc7a464687325e\n"
    },
    {
      "commit": "098323ba5bf4f5e585337369146fd52f032baeec",
      "tree": "3adef3db70a669e4552e965fa1d54d3ecb744c43",
      "parents": [
        "c4b3ab4edcdd879d0f0a36bdbd4b764792de4d45"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Mar 04 18:20:02 2019 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 22:31:57 2019 -0700"
      },
      "message": "libprocessgroup: Add libcgrouprc\n\nThis module is an LL-NDK library that can be loaded by\nmodules that link to libprocessgroup (which is in VNDK).\nThis module defines APIs that reads cgroups.rc file\nprogramatically. Internally, it uses libcgrouprc_format to\ndo so.\n\nTest: builds\nBug: 123664216\n\nChange-Id: I9c13c0528461758154e23cbab3a94ade7fb351ee\nMerged-In: I9c13c0528461758154e23cbab3a94ade7fb351ee\n"
    },
    {
      "commit": "c4b3ab4edcdd879d0f0a36bdbd4b764792de4d45",
      "tree": "eee92eb8382c8b0a5c6728ae9149daf061a937c5",
      "parents": [
        "b7080aab9d728d4ae2f2c09f36f5d812838a3c9c"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Mar 22 15:24:46 2019 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Apr 02 22:31:57 2019 -0700"
      },
      "message": "libprocessgroup: Add libcgrouprc_format\n\nThis module defines the wire format of the mmap()ed cgroup.rc\nfile.\n\nTest: builds\nBug: 123664216\n\nChange-Id: Iaf6199f759a6264590b13ca7ba6d7f576c3ed56a\nMerged-In: Iaf6199f759a6264590b13ca7ba6d7f576c3ed56a\n"
    },
    {
      "commit": "5b5357367163a6238c45c020c9e5ff0dbaa31f59",
      "tree": "748900a5bbdd1b926b2aeea326430d018882e80c",
      "parents": [
        "7f43e9fa40d5440f77a9a0b46edaad9d1b69bd8a"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Mar 26 20:34:32 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Mar 28 01:25:22 2019 +0000"
      },
      "message": "libprocessgroup: restrict SetupCgroups to one-time usage and only by init\n\nSetupCgroups is called by init process during early-init stage and is not\nsupposed to be called again by anyone else. Ensure that the caller is the\ninit process, make sure cgroup.rc file is written only one time, keep the\nfile descriptor to cgroup.rc file open by the init process to ensure all\nits further mappings stay valid even if the file is deleted.\n\nBug: 124774415\nTest: build, run, verify no errors or warning in the logcat\n\nChange-Id: Ib8822cf0112db7744e28d442182d54dcf06f46f2\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "be87d447b40ee471ae0fdc8efde2c33d4bcc68b0",
      "tree": "bf16d90103a4a9dc09c57a0a4cb8850a992e9f2e",
      "parents": [
        "f959fffc1c8ce9fcf1665a2e39ab6add986d9e6e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 26 18:50:22 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 26 18:50:22 2019 -0700"
      },
      "message": "libprocessgroup: add -Wexit-time-destructors.\n\nExit time destructors already caused trouble (see\ndba6d44376a3301acfb8fd7e7c5159b25736b09e), and without this warning,\nit\u0027s too easy to reintroduce issues.\n\nBug: 129023204\nTest: builds\nChange-Id: If5fb4d0c11c74ba4971bb218059c6d37edeaf4df\n"
    },
    {
      "commit": "c8ac3b9152d112fbda89d712369e7c51f14f6314",
      "tree": "5ae613691cec9d7fce51f00db4b71c581f0ded8d",
      "parents": [
        "eedd5f68558a57443d6d210d2d190c70f4af54d7"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Mar 26 02:21:31 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Mar 26 02:49:13 2019 +0000"
      },
      "message": "Revert \"libprocessgroup: make sure SetupCgroups is called once and only by init\"\n\nThis reverts commit 798e80571527d98292ba7f477c6353b6cdfc01b5.\n\nReason for revert: causes SELinux policy denials when vold calls KillProcessesWithOpenFiles.\n\nBug: 129298168\nChange-Id: Ie00bfc2b743757209b40b55d2ee038d7d20c73ff\n"
    },
    {
      "commit": "798e80571527d98292ba7f477c6353b6cdfc01b5",
      "tree": "61dc11a1e11da71e04542b7b8b749f91ea9ccfa0",
      "parents": [
        "443fdb2fdc3769f9ae770425c1a1cf4912ff5b56"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Mar 21 17:10:09 2019 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Mon Mar 25 16:22:10 2019 +0000"
      },
      "message": "libprocessgroup: make sure SetupCgroups is called once and only by init\n\nSetupCgroups is called by init process during early-init stage and is not\nsupposed to be called again by anyone else. Ensure that the caller is the\ninit process, make sure cgroup.rc file is written only one time, keep the\nfile descriptor to cgroup.rc file open by the init process to ensure all\nits further mappings stay valid even if the file is deleted.\n\nBug: 124774415\nTest: build, run, verify no errors or warning in the logcat\n\nChange-Id: I70ccec551fc07c380333566f618b969667dcf783\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "dba6d44376a3301acfb8fd7e7c5159b25736b09e",
      "tree": "52c1f2e309a511bd2cfd8ec053d5530926f64e2c",
      "parents": [
        "c3e96512c0e6243531f092e706ba002fd77997c6"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Mar 20 21:09:46 2019 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Mar 21 17:00:48 2019 +0000"
      },
      "message": "libprocessgroup: Deliberately leak TaskProfiles and CgroupMap instances.\n\nThis avoids a race between destruction on process exit and concurrent\naccess from another thread.\n\nBug: 129023204\nChange-Id: Iecafa67a78e2cce53687156e7f91547b4a23ec13\n"
    },
    {
      "commit": "830f8372317f017e10c62c05d521eed556a6e012",
      "tree": "4ebc5b4098f2b4b341459bb1b5ee9fc0bda21456",
      "parents": [
        "9555bd40cec95e94ea5152f4191c0bf6c4e1f75a",
        "e8e2756f938a8e825955ed9527671ea92e2c9afb"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Mar 18 16:53:47 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 18 16:53:47 2019 +0000"
      },
      "message": "Merge changes from topic \"libprocessgroup\"\n\n* changes:\n  libprocessgroup: Add VTS tests for vendor JSON files\n  libprocessgroup_proto_test split into multiple files\n"
    },
    {
      "commit": "e8e2756f938a8e825955ed9527671ea92e2c9afb",
      "tree": "7cf39647c1c719be13dd0ee43174431f27de3ab1",
      "parents": [
        "28a44eb6f66c3d7246251b069213423b0b1c1884"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Mar 04 15:23:34 2019 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Mar 15 16:28:42 2019 -0700"
      },
      "message": "libprocessgroup: Add VTS tests for vendor JSON files\n\nTest: vts_processgroup_validate_test\nBug: 123664216\nChange-Id: I5518e34cde6fc30195fc99133f86cb23ae3be92f\n"
    },
    {
      "commit": "28a44eb6f66c3d7246251b069213423b0b1c1884",
      "tree": "94929236ec6f910b96eba3fcdd26c1faa15dfa5d",
      "parents": [
        "d458066bc76af47da1f6be9d0f37fd45bce0e79e"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Mar 04 15:22:37 2019 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Mar 15 12:34:42 2019 -0700"
      },
      "message": "libprocessgroup_proto_test split into multiple files\n\n... so that they can be reused later.\n\nAlso, removed test to strull and inline static constexpr variable.\n\nBug: 123664216\nTest: libprocessgroup_proto_test\nChange-Id: Ia6b93c6689d7531e6f597d1387434aed1b3efb0a\n"
    },
    {
      "commit": "08b4d32139709989e41940a9e4f158cc2276c732",
      "tree": "c44023ac4a5630d9113ab41ebbf715176363f58c",
      "parents": [
        "9d3310c019839ec342b5c0712f3ba59cfd5ca4a0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 20:06:36 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 20:06:36 2019 -0700"
      },
      "message": "libprocessgroup: PLOG already includes strerror(errno).\n\nTest: builds\nChange-Id: Ic1fe6b46144f7dbeb7ffba5534d94b4dae192d5c\n"
    },
    {
      "commit": "d71d30179ca14991c22f65a0d23ddc6686735477",
      "tree": "0942ec22b31c8a23a40aecd864f83869b4f9339e",
      "parents": [
        "2ba61b775a568e15153e443a58e66217152792e1"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Thu Mar 07 11:59:12 2019 -0800"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Fri Mar 08 10:18:06 2019 -0800"
      },
      "message": "Set cg_file_data_ to null when initialization failed\n\nCannot really do calls if initialization failed.\nAlso fix LOG usage.\n\nBut: 124774415\nTest: Build\nChange-Id: Ifd7db90cfee51ba5830e1d4db8f8d19b5bc9feba\n"
    },
    {
      "commit": "8dcd839158ac28c4b1fda2652a9adffa0da59334",
      "tree": "4a0b8332f6fd1813af9e8cfead81c9df205785de",
      "parents": [
        "6ad4eb35199a2ddb9e3ca960d388172661c7bd7b",
        "858f3e53430207daea8eb3ccf6b3b9df40eaa5b6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 01 22:11:15 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 01 22:11:15 2019 +0000"
      },
      "message": "Merge \"Reduce log spam from libprocessgroup\""
    },
    {
      "commit": "e681df44eb7f77854402ce6d05e88573da479020",
      "tree": "6b53cfa0bbcc537dc76f52d1e5001b4af0f43ea1",
      "parents": [
        "05da67c3909b51305522c89055ac07b1e86b4694"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Feb 20 16:17:22 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Mar 01 00:29:49 2019 +0000"
      },
      "message": "libprocessgroup: convert Json::Value to const refs\n\nConvert Json::Value to const refs to prevent creation of a null member\nif specified element does not exist. Fix variable naming in the parser\nwhile we are at it.\n\nChange-Id: I7dabfd1c73983b465984dd6c411c9fe48743a348\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "05da67c3909b51305522c89055ac07b1e86b4694",
      "tree": "8a1d17206bbca3f929659fcc110fe522656b42ff",
      "parents": [
        "949a561cfaf96840101901c6c9448dd3e859a4bd"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Feb 19 15:01:28 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Mar 01 00:29:37 2019 +0000"
      },
      "message": "Add vendor cgroups and task_profiles support\n\nVendors should be able to specify additional cgroups and task profiles\nwithout changing system files. Add support for /vendor/etc/cgroups.json\nand /vendor/etc/task_profiles.json files which will augment cgroups and\ntask profiles specified in /etc/cgroups.json and /etc/task_profiles.json\nsystem files.\n\nBug: 124960615\nChange-Id: I548c2e866b65c19856a3617d75b75dcd06f7d5b7\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "e9d149fd7e59ae6b53252bf33e531926bfe319dd",
      "tree": "91dd3f9a209fc4b40cf10bbe52236c51045f49ff",
      "parents": [
        "d5345f58fdb11f9f362b00bbfd9d7b19ca659fcc"
      ],
      "author": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Wed Feb 27 15:47:12 2019 +0800"
      },
      "committer": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Wed Feb 27 21:08:19 2019 +0800"
      },
      "message": "Unify some text format in task_profiles.json\n\nBug: 111307099\nTest: cgroup function is normal\nChange-Id: Id992b875720ff67a5d1a2b052072ee7ea7b16a9a\n"
    },
    {
      "commit": "d5345f58fdb11f9f362b00bbfd9d7b19ca659fcc",
      "tree": "11c2e2524c9cc94b8088b4b6f0fa0dfcf5d90ab3",
      "parents": [
        "55d36240dcb1795cf7e05310520cd4005663d554",
        "2b3bf84373665e10d96c6b1680e5e53039505325"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 27 13:04:00 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 27 13:04:00 2019 +0000"
      },
      "message": "Merge \"Add blkio cgroup to libprocessgroup\""
    },
    {
      "commit": "1770566de63db0bb4847725bdf86fc05cfc7c946",
      "tree": "a226e241b49f412990da4693e1e8fa69be164909",
      "parents": [
        "df3f38f6c9546cf3553a38d8d5dc7497c8c540f0"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Tue Feb 26 14:43:51 2019 -0800"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Wed Feb 27 06:04:13 2019 +0000"
      },
      "message": "Fix string reference usage\n\nBug: 124774415\nTest: Build\nChange-Id: Ic0e5ee4f3375c2fa21fbc2ce3796b7368e9e289c\n"
    },
    {
      "commit": "2b3bf84373665e10d96c6b1680e5e53039505325",
      "tree": "bcaccd28b5a5e7f32c08e81656a00b78abeeee35",
      "parents": [
        "df3f38f6c9546cf3553a38d8d5dc7497c8c540f0"
      ],
      "author": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Thu Feb 21 14:37:36 2019 +0800"
      },
      "committer": {
        "name": "Rick Yiu",
        "email": "rickyiu@google.com",
        "time": "Wed Feb 27 11:23:14 2019 +0800"
      },
      "message": "Add blkio cgroup to libprocessgroup\n\nTo differentiate IO priority for different groups.\n\nBug: 111422845\nBug: 117857342\nTest: tasks are assigned to the group as expected\nChange-Id: Ibb108d1b8e0f720f7ac4cab248b3c33d35e5483d\n"
    },
    {
      "commit": "858f3e53430207daea8eb3ccf6b3b9df40eaa5b6",
      "tree": "fcd908d7a6e84dca4e4e72c86e1e3d0936764acc",
      "parents": [
        "8954d0bc9876b6fbe15f480ad0eae359f317a076"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Thu Feb 21 11:25:16 2019 -0800"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Thu Feb 21 12:54:07 2019 -0800"
      },
      "message": "Reduce log spam from libprocessgroup\n\nEBUSY is expected when removing process group path if process is still\nactive. ESRCH is expected when kill if process died already. ENOENT is\nalso expected when opening cgroup path if process died already.\nThis CL also skip removing parent path if child failed when remove\nprocess group.\n\nBug: 125340804\nTest: Build and boot\nChange-Id: Ief3b9cb913035a4050f6cf79c8b1e2f098e18244\n"
    },
    {
      "commit": "4bb7b18fe1c00b965d4d4445f06f0047096f3304",
      "tree": "83b2d2cfe6731094bd83e21b18e4af659703ed22",
      "parents": [
        "4e47753338eb80a5e8d11e7bdc0b5f3dea816992",
        "72ff585bd04a458d68516e5b0af676cbe4c2264e"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Feb 20 20:35:47 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 20 20:35:47 2019 +0000"
      },
      "message": "Merge changes from topic \"libprocessgroup_json\"\n\n* changes:\n  Add schema for task profiles\n  Move rootdir/*.json to libprocessgroup\n"
    },
    {
      "commit": "ab8d6ab62dfd72e8f5112afdd6e6e3dd6eca19e2",
      "tree": "6d8f1caa47619be0302bc207c2c0d4766d8f3cd4",
      "parents": [
        "7e6dc56b8543346c0e27699eb856406033b80e71"
      ],
      "author": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Tue Feb 19 14:09:00 2019 -0800"
      },
      "committer": {
        "name": "Vic Yang",
        "email": "victoryang@google.com",
        "time": "Tue Feb 19 14:09:00 2019 -0800"
      },
      "message": "libprocessgroup: Fix memcg path for apps\n\nThe expected memcg path for apps is\n/dev/memcg/apps/uid_\u003cuid\u003e/pid_\u003cpid\u003e.  Right now we are missing the\n\"apps\" component.  Fix it.\n\nBug: 124776663\nTest: Boot on a Go device and does not see error from lmkd anymore.\nChange-Id: I0e4c1d8520463fabb171ff4e61479034b6446548\n"
    },
    {
      "commit": "72ff585bd04a458d68516e5b0af676cbe4c2264e",
      "tree": "8b9453fc1eea0be1853e790ff8a3531025e995e3",
      "parents": [
        "98a61dd583ab7f78b2de0fb38a2edb453d6e208a"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Wed Feb 13 14:32:34 2019 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Feb 19 13:26:46 2019 -0800"
      },
      "message": "Add schema for task profiles\n\n- Add proto3 files as schema for JSON task profiles / cgroups\n  files.\n\n- Add tests to ensure the JSON files (on the device) conforms\n  the schema. (libprocessgroup_proto_test)\n\nTest: libprocessgroup_proto_test\n\nBug: 123664216\nChange-Id: I1cab73bd0d3852ff8827fee0be22373da8a6fc5b\n"
    },
    {
      "commit": "98a61dd583ab7f78b2de0fb38a2edb453d6e208a",
      "tree": "c5f458945033483a44737581e98c22a202039919",
      "parents": [
        "cb13a7766e8eb8393a6ffc6813e7d7686fc9bd4a"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Fri Feb 08 12:34:48 2019 -0800"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Thu Feb 14 16:06:49 2019 -0800"
      },
      "message": "Move rootdir/*.json to libprocessgroup\n\nThey are installed to /system/etc, not /. Hence, move\nout of rootdir/ and move into the code that parse these\nfiles (i.e. libprocessgroup).\n\nAlso, Android.mk-\u003ebp.\n\nTest: builds\n\nChange-Id: I1763c26f81ae51ee159552e39d252fd643c35b94\n"
    },
    {
      "commit": "d032a92c04c31490ff172d511a60a958f021a311",
      "tree": "5f5421f2ccfba072ba2cfde7bca1a267bf9297a9",
      "parents": [
        "612a6d6ba328a56c927875d44c3d3b04e032c3dd"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Feb 12 18:20:38 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Feb 14 17:08:40 2019 +0000"
      },
      "message": "Fix cgroup support for recovery mode\n\nIn recovery mode a separate set of cgroups should be mounted. Add a\ncgroups.recovery.json file to describe cgroups mounted during recovery.\nChange cgroups descriptor parset to allow cgroups and cgroups2 sections\nto be omitted.\n\nBug: 124270406\nTest: \"adb reboot sideload; adb devices\" shows \u0027sideload\u0027 as expected\n\nChange-Id: Ic32bd2b4612ec8390064f87d4655d1bd1183d741\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "2bc522878d6c6b9a17cce0dd6bae32147864c23b",
      "tree": "560c395fd244852eee4b0c0bdcc6e3a887cb854c",
      "parents": [
        "4ecbe76354ead216279d1d682ea263e39790a564"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Feb 12 17:30:26 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Feb 14 03:51:17 2019 +0000"
      },
      "message": "Suppress error log when timerslack_ns write fails for already dead process\n\nlmkd uses set_sched_priority to expedite killing of its victims and this\nsometimes results in timerslack_ns writes for an process which is already\ndead. These messages are detrimental during troubleshooting and do not\nindicate a real problem, therefore need to be suppressed.\n\nBug: 124324891\nTest: lmkd_unit_test\n\nChange-Id: I5bc071b47d386c279dd9a56eee51dba7797f4520\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "3a22225ac6908ab74c5399e4fbba7e7880346e02",
      "tree": "34db0d464e05eeda9da259500b99640bb48ba02a",
      "parents": [
        "40673c9250e3e541ecb97201fdd8fb14eee7f89f",
        "c760231891489d845b936b30db4f66af1b6aab0d"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu Feb 07 04:54:28 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 07 04:54:28 2019 +0000"
      },
      "message": "Merge \"libprocessgroup: Fix file mode parsing that requires octal values\""
    },
    {
      "commit": "e3ad8880110bbc46d47d4c8bc69473cb7e1cc193",
      "tree": "88218077923fcc5a3ab453d45be4899826225a9f",
      "parents": [
        "bece53e515db3fd7d8f401c040ca4a4bff7d86c8"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Feb 06 13:25:29 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Feb 06 14:28:23 2019 -0800"
      },
      "message": "libprocessgroup: Fix cgroup directory ownership setup\n\nWhen cgroup directory is created its user and ownership gets set, however\nbecause previous code was storing getpwnam() return value the second\ninvocation would effectively override the previous ones result. Fix this\nby copying necessary results. Also change getpwnam() to getgrnam() when\ngroup name is converted into gid. getpwnam() works because of the way\nAndroid uses these ids, however more generally this is incorrect and\ngetgrnam() should be used instead.\n\nBug: 111307099\nTest: verified user/group membership of the cgroup directories\nChange-Id: I78668bc1a36a74f53d8e9825e2d06e3e09501e7a\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "c760231891489d845b936b30db4f66af1b6aab0d",
      "tree": "ede6eb0fd15b4c12d10dec88e9c0ac66ff564649",
      "parents": [
        "bece53e515db3fd7d8f401c040ca4a4bff7d86c8"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sat Feb 02 16:09:17 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Feb 06 21:01:41 2019 +0000"
      },
      "message": "libprocessgroup: Fix file mode parsing that requires octal values\n\nJSON supports only decimal values and therefore file mode which should\nuse octal values has to be represented as strings. Fix the implicit\noctal-to-decimal conversion and convert from string to octal in the code.\n\nBug: 111307099\nTest: confirmed by verifying correct file permissions\n\nChange-Id: I3ef9de0aea259f93bf74efeffca72d37d4740e15\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "bee9f5718bd2dfedb615767bbd25147b4f3eed15",
      "tree": "4a02dc0ae7a5b7d32757e56eceb06c5fd2ab3f44",
      "parents": [
        "5bccd33e0bd66b1e53e5ebebe07d3c8f8dbdf50b"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Feb 05 16:44:22 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Feb 06 02:15:37 2019 +0000"
      },
      "message": "libprocessgroup: Disable file descriptor caching temporarily\n\nFile descriptor caching breaks boot on Android Go and Svelte targets.\nDisable it temporarily to fix the builds and investigate the root cause\nfurther.\n\nBug: 123868658\nTest: Android Go device boots after this change\n\nChange-Id: Idd0209029cde8454ea99b9de030f7a317c2988d7\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "5c5ed9c85604bb48af17cc5443ed744f4c855091",
      "tree": "a9b034f5458e8527974e02e11f907078a7248f91",
      "parents": [
        "faa6c4894d76a4b173f2161bcd22603489331545"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Feb 04 06:33:26 2019 -0800"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Feb 04 06:33:26 2019 -0800"
      },
      "message": "libprocessgroup: Fix return values\n\nWe want our default implementations to fail, but \u0027-1\u0027 is implicitly\ncast to \u0027true\u0027, since it\u0027s non-zero.  We explicitly use \u0027false\u0027 to\nfix this.\n\nTest: TreeHugger\nChange-Id: I369897b519601ce1a887cf6acd5f2cb9a6113a9a\n"
    },
    {
      "commit": "ff25a5f5845c810384f3a9532f426751668c38f3",
      "tree": "6d87004536c0819df19dcfacfa92615ffcc0fda5",
      "parents": [
        "eca87cb9ca18e7aa82ab240c3161d562152262af"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sat Feb 02 23:12:01 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sun Feb 03 17:55:59 2019 +0000"
      },
      "message": "Disable SetupCgroup for non-Android targets\n\nNon-android targets should not mount cgroups described in cgroup map\nfile. When used on non-Android targets SetupCgroup will fail. When\nSetupCgroup is called via SetupCgroups a warning will be generated for\neach cgroup that fails to mount.\n\nBug: 111307099\nChange-Id: I213a5f9b02f312ba1dd7dc91c89b67334fb939b9\nMerged-In: I213a5f9b02f312ba1dd7dc91c89b67334fb939b9\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "eca87cb9ca18e7aa82ab240c3161d562152262af",
      "tree": "d75b9b9e5cb74bd4d1fc440a38779f77699a3f2b",
      "parents": [
        "e01ae8deca817c6128427c09b6fb0cfc0e00ec36"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Sat Feb 02 14:19:41 2019 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sun Feb 03 16:49:28 2019 +0000"
      },
      "message": "Fix non-Android build targets\n\nNon-Android build targets are missing sys/prctl.h header and functionality\nshould be disabled for them like it was done previously inside\nsched_policy.cpp. Also make the set_sched_policy/get_sched_policy\nfunctionality backward compatible by creating stubs for non-Android\ntargets.\n\nBug: 111307099\nTest: built sdk_gphone_x86-sdk_addon_mac target using forrest\n\nChange-Id: I1c195267e287a84a21c588bd61d7c452bff6cfbe\nMerged-In: I1c195267e287a84a21c588bd61d7c452bff6cfbe\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "82b72a566761b8379fd2964ed801696803867510",
      "tree": "d6183b112c31fc4dc3c391924e7651c1d77f6354",
      "parents": [
        "503cf84f76a3f65d3a2a02f97a6510f7fe3502a6"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Dec 21 11:41:50 2018 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sun Feb 03 16:48:35 2019 +0000"
      },
      "message": "libprocessgroup: Add support for task profiles\n\nAbstract usage of cgroups into task profiles that allows for changes\nin cgroup hierarchy and version without affecting framework codebase.\nRework current processgroup and sched_policy API function implementations\nto use task profiles instead of hardcoded paths and attributes.\nMount cgroups using information from cgroups.json rather than from init.rc\n\nExempt-From-Owner-Approval: already approved in internal master\n\nBug: 111307099\nTest: builds, boots\n\nChange-Id: If5532d6dc570add825cebd5b5148e00c7d688e32\nMerged-In: If5532d6dc570add825cebd5b5148e00c7d688e32\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "949107830044b8eaa58b7fca57bd0e0737646c1d",
      "tree": "a57411d663713e5d654d4456a94390979ee08f8c",
      "parents": [
        "1bd127b72ebcca808b1e8eba2ed9facd9991a210"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:32:52 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 16:49:18 2019 +0000"
      },
      "message": "DO NOT MERGE: Revert \"Revert \"Add dependencies on libprocessgroup for sched_policy users\"\"\n\nThis reverts commit 1bef8c550c6c9118969a93f14d9c5933cb7b2811.\n\nReason for revert: AOSP is fixed with new vendor image\n\nChange-Id: Ib341ac80e2f88c13a7815a490ea2d9422ebdf55f\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "1bd127b72ebcca808b1e8eba2ed9facd9991a210",
      "tree": "c6a4829481c8d6ad196a918b4edfc9df94bb3867",
      "parents": [
        "7bf4381a82d9462f6df6c47b046c05e934464a4d"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:30:52 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 16:49:09 2019 +0000"
      },
      "message": "DO NOT MERGE: Revert \"Revert \"libcutils: Move sched_policy functions into libprocessgroup\"\"\n\nThis reverts commit b5394db682fff34e7357672527a6a2cde1a49a49.\n\nReason for revert: AOSP is fixed with new vendor image\n\nChange-Id: Ie1a2e0200600214a65f4fe2250c903c8e8ce0a29\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "7bf4381a82d9462f6df6c47b046c05e934464a4d",
      "tree": "68f7354962718e02db575cc2b4e6b48b75331f90",
      "parents": [
        "1420c1371f39ef686eb3ed4b87343dd0aac32781"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 05:29:55 2019 +0000"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Jan 25 16:48:58 2019 +0000"
      },
      "message": "DO NOT MERGE: Revert \"Revert \"Add libprocessgroup into VNDK\"\"\n\nThis reverts commit c4a02d25a96f4fbf29ed92976715accc2256367d.\n\nReason for revert: AOSP is fixed with new vendor image\n\nChange-Id: Ifc1c4d51aa1b168ef62cf58275b908d98b9a04bf\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "c4a02d25a96f4fbf29ed92976715accc2256367d",
      "tree": "5d3ed3ccf131150d2858f0deb9373f740b8ef5cc",
      "parents": [
        "b5394db682fff34e7357672527a6a2cde1a49a49"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:44:21 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:44:47 2019 -0800"
      },
      "message": "DO NOT MERGE: Revert \"Add libprocessgroup into VNDK\"\n\nThis reverts commit dad4749731b6796e34fa239739caf0a4e643889f.\n\nReason for revert: Broke AOSP\n\nChange-Id: I019e1226a65b31495984cf47ad471771b4880c45\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "b5394db682fff34e7357672527a6a2cde1a49a49",
      "tree": "0ea2f463801e30bbc9b211ca36faabd2be71b54b",
      "parents": [
        "1bef8c550c6c9118969a93f14d9c5933cb7b2811"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:43:46 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:44:09 2019 -0800"
      },
      "message": "DO NOT MERGE: Revert \"libcutils: Move sched_policy functions into libprocessgroup\"\n\nThis reverts commit facd40d0e1dc681f7a483810cc1e72448f270cf6.\n\nReason for revert: Broke AOSP\n\nChange-Id: Id333417d4970ced800ab801bddfed880cafa056d\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "1bef8c550c6c9118969a93f14d9c5933cb7b2811",
      "tree": "207bd17d5bc2622ee0acb37a3a7cbd120d964661",
      "parents": [
        "c98b1efd4c8ea8e4b7a93c8bd58b3eb6f1c129bd"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:43:03 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed Jan 23 20:43:28 2019 -0800"
      },
      "message": "DO NOT MERGE: Revert \"Add dependencies on libprocessgroup for sched_policy users\"\n\nThis reverts commit 02843339f998f05c712549658c9f8f8bc14ff57d.\n\nReason for revert: Broke AOSP\n\nChange-Id: I62f91c0adf440b5da0a145862b04dd27a7016faf\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "02843339f998f05c712549658c9f8f8bc14ff57d",
      "tree": "ae1f7ffe78d0ef28c4974b8bf6349fa8243adb1d",
      "parents": [
        "facd40d0e1dc681f7a483810cc1e72448f270cf6"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Dec 21 12:30:16 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Jan 22 18:19:45 2019 +0000"
      },
      "message": "Add dependencies on libprocessgroup for sched_policy users\n\nAfter moving sched_policy functions into libprocessgroup its users require\nadditional dependency and inclusion of sched_policy_ctrl.h header.\n\nExempt-From-Owner-Approval: janitorial\n\nBug: 111307099\nTest: builds, boots\n\nMerged-In: Icc052080e1bce46ce06f7264446950cab0490a95\nChange-Id: Icc052080e1bce46ce06f7264446950cab0490a95\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "facd40d0e1dc681f7a483810cc1e72448f270cf6",
      "tree": "1d9739572987ece340b020a687d65642d47cf4e4",
      "parents": [
        "dad4749731b6796e34fa239739caf0a4e643889f"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Fri Dec 21 11:34:23 2018 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Jan 22 18:18:48 2019 +0000"
      },
      "message": "libcutils: Move sched_policy functions into libprocessgroup\n\nMove functions operating on cgroups from sched_policy.h in libcutils\ninto sched_policy_ctrl.h under libprocessgroup. This consolidates\ncgroup-related functionality inside libprocessgroup.\n\nBug: 111307099\nTest: builds, boots\n\nMerged-In: Iba75f33281162b889989214d0325a5973d53ed2d\nChange-Id: Iba75f33281162b889989214d0325a5973d53ed2d\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "dad4749731b6796e34fa239739caf0a4e643889f",
      "tree": "97dc002126ec0f59a218059e11d03a5069a8265f",
      "parents": [
        "5d7439ff5be06d74a05da1fb7986af0e4404c644"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Mon Jan 14 16:57:55 2019 -0800"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Tue Jan 22 18:18:22 2019 +0000"
      },
      "message": "Add libprocessgroup into VNDK\n\nInclude libprocessgroup into vndk in preparation for sched_policy\nfunctions to be moved into it.\n\nBug: 111307099\nTest: builds, boots\nMerged-In: I09a528cac8821df3201c2428b151fd2eaece3ccb\nChange-Id: I09a528cac8821df3201c2428b151fd2eaece3ccb\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "d7157c22afd3fef378d0105287ae0b60deef9665",
      "tree": "a14d2d46cb587a6b32adc222521022371b578a07",
      "parents": [
        "e94eb5140c9cdeac370b50208ba9a00ba059bafa"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Oct 30 15:49:33 2018 -0700"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Oct 31 17:09:59 2018 -0700"
      },
      "message": "Introduce additional service options for controlling memory cgroups.\n\nThe memcg.limit_percent option can be used to limit the cgroup\u0027s\nmax RSS to the given value as a percentage of the device\u0027s physical\nmemory. The memcg.limit_property option specifies the name of a\nproperty that can be used to control the cgroup\u0027s max RSS. These\nnew options correspond to the arguments to the limitProcessMemory\nfunction in frameworks/av/media/libmedia/MediaUtils.cpp; this will\nallow us to add these options to the rc files for the programs that\ncall this function and then remove the callers in a later change.\n\nThere is also a change in semantics: the memcg.* options now have\nan effect on all devices which support memory cgroups, not just\nthose with ro.config.low_ram or ro.config.per_app_memcg set to true.\nThis change also brings the semantics in line with the documentation,\nso it looks like the previous semantics were unintentional.\n\nChange-Id: I9495826de6e477b952e23866743b5fa600adcacb\nBug: 118642754\n"
    },
    {
      "commit": "8485d5979008fa91f8036dbda8c3cc5160a01138",
      "tree": "c5031d01d7aaec7b12ba5894c10c511f2426455c",
      "parents": [
        "0799f44497088b838c679604292f6d56d1fa44ab",
        "b1cb37b077648477f40c32f2ef7dcf201b80ecb0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 14 21:08:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 14 21:08:32 2018 +0000"
      },
      "message": "Merge \"Add OWNERS for libprocessgroup\""
    },
    {
      "commit": "b1cb37b077648477f40c32f2ef7dcf201b80ecb0",
      "tree": "940157034f58f06924e1d00545872e516b7a936f",
      "parents": [
        "6590255dbbcbd35c527b3a2e6871275ec88fee64"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Sep 14 11:11:35 2018 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Sep 14 11:13:22 2018 -0700"
      },
      "message": "Add OWNERS for libprocessgroup\n\nTest: n/a\nChange-Id: I7c069e439cf1d9d26fd5274647567fb1c5575a72\n"
    },
    {
      "commit": "950f6f367e4725d5d5cb72f63301f2f9d5813de9",
      "tree": "0d3b57d24ad8ec6214c9485b090787b5f0643d73",
      "parents": [
        "4cd979fe67f72d5420374076f7aeb28207252fda"
      ],
      "author": {
        "name": "fengshaobo",
        "email": "sbfeng.cn@gmail.com",
        "time": "Thu Sep 13 14:57:07 2018 +0800"
      },
      "committer": {
        "name": "fengshaobo",
        "email": "sbfeng.cn@gmail.com",
        "time": "Thu Sep 13 15:13:13 2018 +0800"
      },
      "message": "Fixed the can not kill some process using libprocessgroup\n\nIn DoKillProcessGroupOnce function, if process has a child process, pids set\nwill be clear probability and initialPid will not be killed, when the pid\nis equal to initialPid.\n\nTest: manual - start duomi app and remove it use recent apps key\nChange-Id: Ifb9f4acacd725d2c367e547d2b5512807bb44fec\n"
    },
    {
      "commit": "1151d15be5df5d8df699688abc05fbbcfa98edf5",
      "tree": "c091111c945d795d06f94dfaac7df74bd8160a6d",
      "parents": [
        "1d2b29a9022ae9910bda2e1371066179bbd176d6"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Jul 24 13:45:09 2018 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Jul 24 13:45:50 2018 -0700"
      },
      "message": "Add recovery_available: true to init dependencies\n\nInit needs this in order to be built in Android.bp\n\nTest: build\nChange-Id: I695438d69cc71b739b7648c4008ff3760da58ef0\n"
    },
    {
      "commit": "dc803126283444431c0d06f0386eddada0fe6b77",
      "tree": "1ea923034a483bc3b935d7a6a1eeb85712eea244",
      "parents": [
        "54be246a1f916a9be409b59ceaebf7a564170d2c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 18:00:39 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 18:04:31 2018 -0700"
      },
      "message": "libbase: add host properties support.\n\nMove init and libprocessgroup away from their existing hacks.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ifabdd38e0cc4ab2582f1ea59d32159d386f48eb6\n"
    },
    {
      "commit": "bc131c3244a6aa4961092ba08285f9d0435a8882",
      "tree": "8fc79f4c24531bedf8240e68ba7f77fe40cfb5a4",
      "parents": [
        "6e9289013560484e17b995dbe51bd4d3ba61ab34"
      ],
      "author": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Wed May 23 12:30:44 2018 -0700"
      },
      "committer": {
        "name": "Suren Baghdasaryan",
        "email": "surenb@google.com",
        "time": "Thu May 24 15:13:00 2018 -0700"
      },
      "message": "Make per-application memcg hierarchy configurable via a property\n\nIntroduce ro.config.per_app_memcg Android property to enable/disable\nper-application memcg hierarchy.\nOn low-ram devices (ro.config.low_ram\u003dtrue) ro.config.per_app_memcg\ndefaults to true, otherwise it defaults to false.\n\nBug: 80201565\nTest: set ro.config.per_app_memcg\u003dtrue and verify /proc/\u003capp_pid\u003e/cgroup\nmembership (memory:/apps/uid_xxx/pid_xxx)\nTest: set ro.config.per_app_memcg\u003dfalse and verify /proc/\u003capp_pid\u003e/cgroup\nmembership (memory:/)\nChange-Id: Iabd3ef6c9c16c774b9da959a7f43b5f66df120a3\nMerged-In: Iabd3ef6c9c16c774b9da959a7f43b5f66df120a3\nSigned-off-by: Suren Baghdasaryan \u003csurenb@google.com\u003e\n"
    },
    {
      "commit": "574a0816238748be8cbd35cf1009a8ebced6e75b",
      "tree": "a3139e3af91e5a60274fc9d01d81b1665ac43e50",
      "parents": [
        "cdf778f5d92ab8748897a4d95693524d3273c23a"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Feb 23 13:04:40 2018 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Feb 27 14:12:19 2018 -0800"
      },
      "message": "libprocessgroup: remove legacy C string handling and build for host\n\nBug: 36970783\nTest: kill zygote and see that its children die correctly\nChange-Id: I1b0e9a9cdb834a000fec82323d690e3bd288692d\n"
    },
    {
      "commit": "d485226951013247dbb502fef7edbc6cf83acb0f",
      "tree": "abfe2cbf07709c996d492e40ecc77396cd57d8af",
      "parents": [
        "d1c73b57b5106a6a3f0c6cd2ab51677670e99e66"
      ],
      "author": {
        "name": "Robert Benea",
        "email": "robenea@google.com",
        "time": "Sun Jul 16 19:38:11 2017 -0700"
      },
      "committer": {
        "name": "Robert Benea",
        "email": "robenea@google.com",
        "time": "Tue Jul 18 15:58:40 2017 -0700"
      },
      "message": "Add memcg related configs to init.\n\nAllow configuring memory.swappiness, memory.soft_limit_in_bytes\nand memory.limit_in_bytes by init; by doing so there is better\ncontrol of memory consumption per native app.\n\nTest: tested on gobo branch.\nbug: 63765067\nChange-Id: I8906f3ff5ef77f75a0f4cdfbf9d424a579ed52bb\n"
    },
    {
      "commit": "3280e48847e5dd16521ad7040d53eb30b66bf740",
      "tree": "28496ac5091fbd565260e587d68d329a3f3db0be",
      "parents": [
        "896297b2ef10a58fc614aebce8724d342d81f85e"
      ],
      "author": {
        "name": "Robert Benea",
        "email": "robenea@google.com",
        "time": "Tue Jun 27 23:09:03 2017 -0700"
      },
      "committer": {
        "name": "Robert Benea",
        "email": "robenea@google.com",
        "time": "Tue Jul 11 12:48:10 2017 -0700"
      },
      "message": "Use mem cgroups in libprocessgroup if they\u0027re available\n\nUse mem cgroups if the kernel is built with CONFIG_MEMCG\u003dy,\nadditionally add system group.\n\ntest: verified on both kernel with/without memcg enabled\nChange-Id: Ia2ae89efa3905e9da68fa77adac1225c667864d1\n"
    },
    {
      "commit": "fc10e3d5e5385081853b7d1b3cc41f882ac6325d",
      "tree": "2b53434afe8c0775a0f13d75b17544e463939e24",
      "parents": [
        "32375c23284704a7d044ed79060c4431468b4b4e"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Sat Jul 08 00:04:04 2017 +0000"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Sat Jul 08 00:04:42 2017 +0000"
      },
      "message": "Revert \"Use mem cgroups in libprocessgroup if they\u0027re available\"\n\nThis reverts commit 32375c23284704a7d044ed79060c4431468b4b4e.\n\nbug 63164307\n\nChange-Id: I3336bbf7c2f3297b231c5b0a1ef538faff9513fd\n"
    },
    {
      "commit": "32375c23284704a7d044ed79060c4431468b4b4e",
      "tree": "2466fa92a68b85a30b945666a2955102a2a5100b",
      "parents": [
        "5d6d932a60c77bda7f796db2679bd806e2e8633d"
      ],
      "author": {
        "name": "Robert Benea",
        "email": "robenea@google.com",
        "time": "Tue Jun 27 23:09:03 2017 -0700"
      },
      "committer": {
        "name": "Robert Benea",
        "email": "robenea@google.com",
        "time": "Thu Jun 29 23:49:00 2017 +0000"
      },
      "message": "Use mem cgroups in libprocessgroup if they\u0027re available\n\nUse mem cgroups if the kernel is built with CONFIG_MEMCG\u003dy,\nadditionally add system group.\n\ntest: verified on both kernel with/without memcg enabled\nChange-Id: Ib9d1c8e3c797e75f160e0e92edf3f11c9d8e9f17\n"
    },
    {
      "commit": "70a5ed49ef82d0d87508080563ec10b994bf4f9e",
      "tree": "e45114dcfa5f6b0ad2dd317044e3baf50c431f22",
      "parents": [
        "d105aa8496a3ba26a9f3a3126aa2163d9bfdac16"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Mon Jun 05 19:20:17 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Jun 07 13:20:21 2017 -0700"
      },
      "message": "init: move killing of process groups to libprocessgroup\n\nlibprocessgroup kills the cgroup associated with a given pid and uid,\nbut not the POSIX process group associated with it.  This means that\nto kill both, two of the same signals must be sent, which may cause\nsome issues.\n\nThis change kills all POSIX process groups whose group leaders are\nfound within a cgroup.  It only then kills processes in the cgroup\nthat are not part of the POSIX process groups that have been killed.\n\nBug: 37853905\nBug: 62418791\nTest: Boot, kill zygote, reboot\nChange-Id: Id1d96935745899b4c454c36c351ec16a0b1d3827\n"
    },
    {
      "commit": "efa81080fda2591bcc7411053c7a560ff32df1b7",
      "tree": "e1ea59d94efa52c9d1d55063f3d8bb7d31f7d105",
      "parents": [
        "46bb1ffa8ad3a4cb3d2fe31f6f7baee418b5df6e"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue May 09 17:44:49 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu May 11 17:55:04 2017 -0700"
      },
      "message": "Enable libprocessgroup on host bionic\n\nBug: 31559095\n\nTest: Build\nChange-Id: I1ee9fb492137c6c16f0d02586393837616127972\n"
    },
    {
      "commit": "20514c4411923e03df4a5057ef43bf9716983e14",
      "tree": "5499aee12ffcfd7bada6bf84cc8282b625f6a53e",
      "parents": [
        "3d7ee068e0a0ce707965835f58abce65189abda4"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Fri Apr 21 13:48:49 2017 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu May 04 12:18:57 2017 -0700"
      },
      "message": "Better logging in libprocessgroup and make resources clean up themselves\n\nBug: 36661364\nBug: 36701253\nBug: 37540956\n\nTest: Reboot bullhead\nTest: Start and stop services\nChange-Id: I97b6e17a7350850db733bee9fc83bdd296d88c61\n"
    },
    {
      "commit": "419ce36c7d3911002e8cbabffe5e8addc1388a0c",
      "tree": "9bb85c1d94f2b3ada542a70e8847d02850347972",
      "parents": [
        "8b318d0c26c89acd7c716fb571bfd08d4393d12f"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Apr 19 14:12:52 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Apr 19 14:29:08 2017 -0700"
      },
      "message": "libprocessgroup: Android.mk -\u003e Android.bp\n\nTest: links\nTest: (sanity) boot marlin in recovery + to system UI\nBug: 37512442\nChange-Id: Ie19c02bda9df7c0cfdeeaf34c48f251b2b93961d\n"
    },
    {
      "commit": "fac4b63effee6c69908f559fd5e260bc95f1893a",
      "tree": "9aa1286d118ea25cc2b280e0c84727e4ac3fbbca",
      "parents": [
        "6fb2ef1d03ffad5b9253647daf0fcc6888b2aac4"
      ],
      "author": {
        "name": "Keun-young Park",
        "email": "keunyoung@google.com",
        "time": "Tue Mar 28 17:25:24 2017 -0700"
      },
      "committer": {
        "name": "Keun-young Park",
        "email": "keunyoung@google.com",
        "time": "Wed Mar 29 16:33:15 2017 -0700"
      },
      "message": "add killProcessGroupOnce\n\n- killProcessGroup retries if it fails while\n  killProcessGroupOnce only tries once.\n- useful for sending signal like SIGTERM once.\n\nbug: 36696408\nTest: will add usage to init\nChange-Id: Ia1e3d4ec848e785a3238f262b02914695cded4c7\n"
    },
    {
      "commit": "290a228fdca935ab2e702db77516758314900c3a",
      "tree": "bdb1606d717b50aded201e69bb2f29daa451b73e",
      "parents": [
        "f77d8b04528775e7a2e22255bb9a46b0e1df8ef1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 14 17:08:47 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 14 17:08:47 2016 -0800"
      },
      "message": "Switch fastboot/init/libprocessgroup to std::this_thread::sleep_for.\n\nBug: http://b/32878766\nTest: boots\nChange-Id: Ie0ddfb7e60f2da5f6eefbb10c83a92e88c137ae3\n"
    },
    {
      "commit": "9f206938edc2243e4e4f5de74d67e15befd95576",
      "tree": "4e7ad8abe0b1546704777a902ac1bc441ad22440",
      "parents": [
        "dfd30c4a169e6b9e3da132769f0ad2b626703cd2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 13:29:54 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 28 14:04:12 2016 -0700"
      },
      "message": "Use readdir instead of readdir_r.\n\nhttp://elliotth.blogspot.com/2012/10/how-not-to-use-readdirr3.html\n\nTest: boots.\nChange-Id: If75532e24fe4d17743bf8e8c9590156dee378a63\n"
    },
    {
      "commit": "b6e1d15056f2a9c136a640336d78d36ab58a719d",
      "tree": "5de391aecdda2209bed566b67f5b3d5fbb591a78",
      "parents": [
        "7e74e816460f0c130b6870f5251b03d4218c80da",
        "ed3596aadfe5727752a2e93a8fa2a981dce5e8e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 03 13:29:04 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 03 13:29:04 2016 -0700"
      },
      "message": "resolve merge conflicts of ed3596a to stage-aosp-master\n\nChange-Id: I3c41782e2bf3563d3e3d6232d39eff3da94843fc\n"
    },
    {
      "commit": "171df0a092157deb2cdf868beecc2ca3dcbeb548",
      "tree": "034f8fff3cefd3cd9877e428fdf82e2949f6a9ef",
      "parents": [
        "c97b73aa83fc7b80b60d88d856675d4ab502296d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 02 13:30:30 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 03 09:11:04 2016 -0700"
      },
      "message": "Switch libprocessgroup to libbase logging.\n\nThis lets us see what\u0027s going on in init.\n\nBug: http://b/29751426\nMerged-In: I73432dc7608ca0dc8e421a2f3a750b37c6743f62\nChange-Id: I73432dc7608ca0dc8e421a2f3a750b37c6743f62\n"
    },
    {
      "commit": "8d532e47376859e2ea8f953ebe75d24560e80464",
      "tree": "ea9edc7539e6d0e7ce9515efa57a73a6e93e63e7",
      "parents": [
        "27a68ef007734929a6cfb46c233c5b1757f7786c",
        "cea1d0465b400f25db6a85547381713746d39e36"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 06 21:19:55 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 06 21:19:55 2016 -0700"
      },
      "message": "resolve merge conflicts of cea1d04 to nyc-dev-plus-aosp\n\nChange-Id: I41cdca717664a16f00fd1b28076dd752fa96653d\n"
    },
    {
      "commit": "f7e79b99c1e9e3128dd9921871f7740bebb755e6",
      "tree": "10367b6bcba6ad7061c1362efbc4ef53f0e672b9",
      "parents": [
        "605628d325b003251155b5c5b425028106bf8f29"
      ],
      "author": {
        "name": "Collin Mulliner",
        "email": "collinrm@squareup.com",
        "time": "Wed Jun 01 21:03:55 2016 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 06 16:31:01 2016 -0700"
      },
      "message": "use process groups for processes started by init\n\nPut every service into a process group, kill the process group\nand all child processes created within the group when killing the\nservice. Removed libutil dependency in libprocessgroup.\n\nBug: 25355957\nChange-Id: Ieed60ec41579f638ab9b1e66a7e6330ed578ab05\nSigned-off-by: Collin Mulliner \u003ccollinrm@squareup.com\u003e\n"
    },
    {
      "commit": "c4248ae9a1a3a59d5ef5838a850d7e7898dbe52e",
      "tree": "b9be8bb6db32e03a6fd26758064f72d43ad8eb8e",
      "parents": [
        "b9ce0f10f38c74b468c4bc512b3cc82c4bba0e1b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 30 09:10:07 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 30 09:10:07 2016 -0700"
      },
      "message": "Remove useless #include.\n\nBug: http://b/28432688\nChange-Id: I8982f42b2bf2305168a4ba167e422173f35c69c2\n"
    },
    {
      "commit": "d89cd41bc7f3515133e18231e8f84065f1a9a133",
      "tree": "2efb6e03f310dfe8c92d649a61cda16f4b399b8a",
      "parents": [
        "f50b165a4e64f38b89f1987afa5a7b7776420987",
        "e9ea8db617f52ddaa51e3b6fb9663e2f9b069425"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Fri Mar 18 15:54:12 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Mar 18 15:54:12 2016 +0000"
      },
      "message": "Merge \"Don\\\u0027t use mem cgroups for pid accounting.\" into nyc-dev\nam: e9ea8db\n\n* commit \u0027e9ea8db617f52ddaa51e3b6fb9663e2f9b069425\u0027:\n  Don\u0027t use mem cgroups for pid accounting.\n"
    }
  ],
  "next": "5bb91ab5530dd002f6021b2177dc2bcf5467eebd"
}
