# 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 iorapd /system/bin/iorapd
    class main
    disabled
    user iorapd
    group iorapd
    capabilities DAC_READ_SEARCH
    writepid /dev/cpuset/system-background/tasks
# TODO: should this be something else like performance/tasks?
# the main 'activity hint' thread needs to be fairly high priority to kick off
# tracing or prefetching asap.

on property:ro.iorapd.enable=false
    stop iorapd

on post-fs-data
    # Create directory for iorapd (see iorapd_data_file in selinux file_contexts).
    mkdir /data/misc/iorapd/ 0750 iorapd system

# Start iorapd when either prefetching or tracing is enabled.
on property:persist.device_config.runtime_native_boot.iorap_perfetto_enable=true && property:ro.iorapd.enable=true
    start iorapd

on property:persist.device_config.runtime_native_boot.iorap_readahead_enable=true && property:ro.iorapd.enable=true
    start iorapd
