#
# Copyright (C) 2020 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.
#
on property:sys.boot_completed=1
    # Create mm_event trace point.
    # Currently, only mm_event is using this trace instance.
    # If others want to put more,it should get hard review from pixel-perf-team.
    mkdir /sys/kernel/tracing/instances/pixel-trace 0755 system system
    chown system system /sys/kernel/tracing/instances/pixel-trace/trace
    chmod 0660 /sys/kernel/tracing/instances/pixel-trace/trace
    chown system system /sys/kernel/tracing/instances/pixel-trace/tracing_on
    chmod 0660 /sys/kernel/tracing/instances/pixel-trace/tracing_on
    write /sys/kernel/tracing/instances/pixel-trace/buffer_size_kb 64
    write /sys/kernel/tracing/instances/pixel-trace/events/mm_event/enable 1
    write /sys/kernel/tracing/instances/pixel-trace/events/f2fs/f2fs_iostat/enable 1
    write /sys/kernel/tracing/instances/pixel-trace/events/ufs/ufs_stats/enable 1
    write /sys/kernel/tracing/instances/pixel-trace/events/ufs_pixel/ufs_stats/enable 1
    chmod 444 /sys/kernel/debug/page_owner

# turns off tracing right before bugreporting to keep more traces
on property:init.svc.dumpstatez=running
    write /sys/kernel/tracing/instances/pixel-trace/tracing_on 0

on property:init.svc.dumpstatez=stopped
    write /sys/kernel/tracing/instances/pixel-trace/tracing_on 1

on property:init.svc.bugreport=running
    write /sys/kernel/tracing/instances/pixel-trace/tracing_on 0

on property:init.svc.bugreport=stopped
    write /sys/kernel/tracing/instances/pixel-trace/tracing_on 1

on property:init.svc.bugreportd=running
    write /sys/kernel/tracing/instances/pixel-trace/tracing_on 0

on property:init.svc.bugreportd=stopped
    write /sys/kernel/tracing/instances/pixel-trace/tracing_on 1
