106f6ba60Sopenharmony_ci/* 206f6ba60Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd. 306f6ba60Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 406f6ba60Sopenharmony_ci * you may not use this file except in compliance with the License. 506f6ba60Sopenharmony_ci * You may obtain a copy of the License at 606f6ba60Sopenharmony_ci * 706f6ba60Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 806f6ba60Sopenharmony_ci * 906f6ba60Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1006f6ba60Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1106f6ba60Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1206f6ba60Sopenharmony_ci * See the License for the specific language governing permissions and 1306f6ba60Sopenharmony_ci * limitations under the License. 1406f6ba60Sopenharmony_ci */ 1506f6ba60Sopenharmony_ci#ifndef CPU_H 1606f6ba60Sopenharmony_ci#define CPU_H 1706f6ba60Sopenharmony_ci#include <iostream> 1806f6ba60Sopenharmony_ci#include <vector> 1906f6ba60Sopenharmony_ci#include "sp_profiler.h" 2006f6ba60Sopenharmony_cinamespace OHOS { 2106f6ba60Sopenharmony_cinamespace SmartPerf { 2206f6ba60Sopenharmony_cistruct CpuFreqs { 2306f6ba60Sopenharmony_ci uint32_t cpuId = 0; 2406f6ba60Sopenharmony_ci uint32_t curFreq = 0; 2506f6ba60Sopenharmony_ci}; 2606f6ba60Sopenharmony_cistruct CpuUsageInfos { 2706f6ba60Sopenharmony_ci std::string cpuId; 2806f6ba60Sopenharmony_ci double userUsage = 0; 2906f6ba60Sopenharmony_ci double niceUsage = 0; 3006f6ba60Sopenharmony_ci double systemUsage = 0; 3106f6ba60Sopenharmony_ci double idleUsage = 0; 3206f6ba60Sopenharmony_ci double ioWaitUsage = 0; 3306f6ba60Sopenharmony_ci double irqUsage = 0; 3406f6ba60Sopenharmony_ci double softIrqUsage = 0; 3506f6ba60Sopenharmony_ci}; 3606f6ba60Sopenharmony_ci 3706f6ba60Sopenharmony_ciclass CPU : public SpProfiler { 3806f6ba60Sopenharmony_cipublic: 3906f6ba60Sopenharmony_ci static CPU &GetInstance() 4006f6ba60Sopenharmony_ci { 4106f6ba60Sopenharmony_ci static CPU instance; 4206f6ba60Sopenharmony_ci return instance; 4306f6ba60Sopenharmony_ci } 4406f6ba60Sopenharmony_ci std::map<std::string, std::string> ItemData() override; 4506f6ba60Sopenharmony_ci std::vector<CpuFreqs> GetCpuFreq(); 4606f6ba60Sopenharmony_ci std::vector<CpuUsageInfos> GetCpuUsage(); 4706f6ba60Sopenharmony_ci std::map<std::string, std::string> GetSysProcessCpuLoad() const; 4806f6ba60Sopenharmony_ci void SetPackageName(const std::string &pName); 4906f6ba60Sopenharmony_ci void SetProcessId(const std::string &pid); 5006f6ba60Sopenharmony_ci void IsFindHap(); 5106f6ba60Sopenharmony_ci 5206f6ba60Sopenharmony_ciprivate: 5306f6ba60Sopenharmony_ci CPU() {}; 5406f6ba60Sopenharmony_ci CPU(const CPU &); 5506f6ba60Sopenharmony_ci CPU &operator = (const CPU &); 5606f6ba60Sopenharmony_ci std::string packageName = ""; 5706f6ba60Sopenharmony_ci std::string processId = ""; 5806f6ba60Sopenharmony_ci bool hapFlag = false; 5906f6ba60Sopenharmony_ci const std::string cpustr = "cpu"; 6006f6ba60Sopenharmony_ci const std::string totalcpu = "Totalcpu"; 6106f6ba60Sopenharmony_ci}; 6206f6ba60Sopenharmony_ci} 6306f6ba60Sopenharmony_ci} 6406f6ba60Sopenharmony_ci#endif