1# Copyright (C) 2020 The Android Open Source Project 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15# Notes: 16# * socket used for receiving /proc/pid/{maps,mem} file descriptors 17# * readproc group to stat(/proc/pid) to find out UID of processes, and read 18# /proc/pid/cmdline. 19# * KILL capability for sending BIONIC_SIGNAL_PROFILER. 20# * DAC_READ_SEARCH capability for stack unwinding and on-device symbolization (requires 21# opening libraries/executables for sections not already mapped in). 22# * foreground task group as unwinding based on minidebug info is a heavyweight action. 23service traced_perf /system/bin/traced_perf 24 class late_start 25 disabled 26 socket traced_perf stream 0666 root root 27 user nobody 28 group nobody readproc readtracefs 29 capabilities KILL DAC_READ_SEARCH 30 task_profiles ProcessCapacityHigh 31 shared_kallsyms 32 33# Daemon run state: 34# * initially off 35# * |persist.traced_perf.enable| forces daemon to run unconditionally 36# * if kernel doesn't have perf_event_open LSM hooks, daemon is stopped 37# * otherwise, follow |traced.lazy.traced_perf| as an on-demand service 38on property:persist.traced_perf.enable=1 39 start traced_perf 40on property:persist.traced_perf.enable="" && property:sys.init.perf_lsm_hooks="" 41 stop traced_perf 42on property:persist.traced_perf.enable="" && property:sys.init.perf_lsm_hooks=1 && property:traced.lazy.traced_perf=1 43 start traced_perf 44on property:persist.traced_perf.enable="" && property:sys.init.perf_lsm_hooks=1 && property:traced.lazy.traced_perf="" 45 stop traced_perf 46 47on property:persist.traced_perf.enable=0 48 setprop persist.traced_perf.enable "" 49