| # Copyright (C) 2018 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| service heapprofd /system/bin/heapprofd |
| class late_start |
| disabled |
| socket heapprofd stream 0666 root root |
| user nobody |
| group nobody readproc |
| # By default, this daemon is idle. When profiling an app, we should unwind |
| # as fast as possible in the interest of the app being profiled. |
| writepid /dev/cpuset/foreground/tasks |
| onrestart exec_background - nobody shell -- /system/bin/heapprofd --cleanup-after-crash |
| # DAC_READ_SEARCH is denied by SELinux on user builds because the SELinux |
| # permission is userdebug_or_eng only. |
| # This is fine as this is not needed for central heapprofd in fork mode. |
| # SYS_ADMIN and SYS_PTRACE will be denied unless SELinux enforcement is |
| # off. They are needed to implement the idle page tracking feature, which |
| # only works without SELinux enforcement on. |
| capabilities KILL DAC_READ_SEARCH DAC_OVERRIDE SYS_ADMIN SYS_PTRACE |
| |
| on property:persist.heapprofd.enable=1 |
| start heapprofd |
| |
| on property:traced.lazy.heapprofd=1 |
| start heapprofd |
| |
| on property:persist.heapprofd.enable=0 && property:traced.lazy.heapprofd=0 |
| stop heapprofd |