1*61046927SAndroid Build Coastguard Worker /* 2*61046927SAndroid Build Coastguard Worker * Copyright © 2020 Collabora, Ltd. 3*61046927SAndroid Build Coastguard Worker * Author: Antonio Caggiano <[email protected]> 4*61046927SAndroid Build Coastguard Worker * 5*61046927SAndroid Build Coastguard Worker * SPDX-License-Identifier: MIT 6*61046927SAndroid Build Coastguard Worker */ 7*61046927SAndroid Build Coastguard Worker 8*61046927SAndroid Build Coastguard Worker #include "pps.h" 9*61046927SAndroid Build Coastguard Worker 10*61046927SAndroid Build Coastguard Worker #include <cerrno> 11*61046927SAndroid Build Coastguard Worker #include <cstring> 12*61046927SAndroid Build Coastguard Worker 13*61046927SAndroid Build Coastguard Worker #include <sched.h> 14*61046927SAndroid Build Coastguard Worker 15*61046927SAndroid Build Coastguard Worker namespace pps 16*61046927SAndroid Build Coastguard Worker { check(int res,const char * msg)17*61046927SAndroid Build Coastguard Workerbool check(int res, const char *msg) 18*61046927SAndroid Build Coastguard Worker { 19*61046927SAndroid Build Coastguard Worker if (res < 0) { 20*61046927SAndroid Build Coastguard Worker char *err_msg = std::strerror(errno); 21*61046927SAndroid Build Coastguard Worker PERFETTO_ELOG("%s: %s", msg, err_msg); 22*61046927SAndroid Build Coastguard Worker return false; 23*61046927SAndroid Build Coastguard Worker } 24*61046927SAndroid Build Coastguard Worker 25*61046927SAndroid Build Coastguard Worker return true; 26*61046927SAndroid Build Coastguard Worker } 27*61046927SAndroid Build Coastguard Worker make_thread_rt()28*61046927SAndroid Build Coastguard Workervoid make_thread_rt() 29*61046927SAndroid Build Coastguard Worker { 30*61046927SAndroid Build Coastguard Worker // Use FIFO policy to avoid preemption while collecting counters 31*61046927SAndroid Build Coastguard Worker int sched_policy = SCHED_FIFO; 32*61046927SAndroid Build Coastguard Worker // Do not use max priority to avoid starving migration and watchdog threads 33*61046927SAndroid Build Coastguard Worker int priority_value = sched_get_priority_max(sched_policy) - 1; 34*61046927SAndroid Build Coastguard Worker sched_param priority_param { priority_value }; 35*61046927SAndroid Build Coastguard Worker sched_setscheduler(0, sched_policy, &priority_param); 36*61046927SAndroid Build Coastguard Worker } 37*61046927SAndroid Build Coastguard Worker 38*61046927SAndroid Build Coastguard Worker } // namespace pps 39