# 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.
    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=0 && property:traced.lazy.heapprofd=0
    stop heapprofd
