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 29 capabilities KILL DAC_READ_SEARCH 30 writepid /dev/cpuset/foreground/tasks 31 32# Daemon run state: 33# * initially off 34# * |persist.traced_perf.enable| forces daemon to run unconditionally 35# * if kernel doesn't have perf_event_open LSM hooks, daemon is stopped 36# * otherwise, follow |traced.lazy.traced_perf| as an on-demand service 37on property:persist.traced_perf.enable=1 38 start traced_perf 39on property:persist.traced_perf.enable="" && property:sys.init.perf_lsm_hooks="" 40 stop traced_perf 41on property:persist.traced_perf.enable="" && property:sys.init.perf_lsm_hooks=1 && property:traced.lazy.traced_perf=1 42 start traced_perf 43on property:persist.traced_perf.enable="" && property:sys.init.perf_lsm_hooks=1 && property:traced.lazy.traced_perf="" 44 stop traced_perf 45 46on property:persist.traced_perf.enable=0 47 setprop persist.traced_perf.enable "" 48