/* * 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. */ #pragma once #include #include namespace android { namespace bpf { bool isTrackingUidTimesSupported(); bool startTrackingUidTimes(); std::optional>> getTotalCpuFreqTimes(); std::optional>> getUidCpuFreqTimes(uint32_t uid); std::optional>>> getUidsCpuFreqTimes(); std::optional>>> getUidsUpdatedCpuFreqTimes(uint64_t *lastUpdate); std::optional>> getCpuFreqs(); struct concurrent_time_t { std::vector active; std::vector> policy; }; std::optional getUidConcurrentTimes(uint32_t uid, bool retry = true); std::optional> getUidsConcurrentTimes(); std::optional> getUidsUpdatedConcurrentTimes(uint64_t *lastUpdate); bool clearUidTimes(unsigned int uid); bool startTrackingProcessCpuTimes(pid_t pid); bool startAggregatingTaskCpuTimes(pid_t pid, uint16_t aggregationKey); std::optional>>> getAggregatedTaskCpuFreqTimes(pid_t pid, const std::vector &aggregationKeys); } // namespace bpf } // namespace android