# 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.
    capabilities KILL DAC_READ_SEARCH

on property:persist.heapprofd.enable=1
    start heapprofd

on property:traced.lazy.heapprofd=1
    start heapprofd

on property:persist.heapprofd.enable="" && property:traced.lazy.heapprofd=""
    stop heapprofd

on property:persist.heapprofd.enable=0
    setprop persist.heapprofd.enable ""
