1*1285115cSWilliam A. Kennington III // Copyright 2021 Google LLC 2*1285115cSWilliam A. Kennington III // 3*1285115cSWilliam A. Kennington III // Licensed under the Apache License, Version 2.0 (the "License"); 4*1285115cSWilliam A. Kennington III // you may not use this file except in compliance with the License. 5*1285115cSWilliam A. Kennington III // You may obtain a copy of the License at 6*1285115cSWilliam A. Kennington III // 7*1285115cSWilliam A. Kennington III // http://www.apache.org/licenses/LICENSE-2.0 8*1285115cSWilliam A. Kennington III // 9*1285115cSWilliam A. Kennington III // Unless required by applicable law or agreed to in writing, software 10*1285115cSWilliam A. Kennington III // distributed under the License is distributed on an "AS IS" BASIS, 11*1285115cSWilliam A. Kennington III // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*1285115cSWilliam A. Kennington III // See the License for the specific language governing permissions and 13*1285115cSWilliam A. Kennington III // limitations under the License. 14*1285115cSWilliam A. Kennington III 15*1285115cSWilliam A. Kennington III #pragma once 16*1285115cSWilliam A. Kennington III 17*1285115cSWilliam A. Kennington III #include <string> 18*1285115cSWilliam A. Kennington III #include <string_view> 19*1285115cSWilliam A. Kennington III 20*1285115cSWilliam A. Kennington III namespace metric_blob 21*1285115cSWilliam A. Kennington III { 22*1285115cSWilliam A. Kennington III 23*1285115cSWilliam A. Kennington III struct TcommUtimeStime 24*1285115cSWilliam A. Kennington III { 25*1285115cSWilliam A. Kennington III std::string tcomm; 26*1285115cSWilliam A. Kennington III float utime; 27*1285115cSWilliam A. Kennington III float stime; 28*1285115cSWilliam A. Kennington III }; 29*1285115cSWilliam A. Kennington III 30*1285115cSWilliam A. Kennington III TcommUtimeStime parseTcommUtimeStimeString(std::string_view content, 31*1285115cSWilliam A. Kennington III long ticksPerSec); 32*1285115cSWilliam A. Kennington III std::string readFileIntoString(std::string_view fileName); 33*1285115cSWilliam A. Kennington III bool isNumericPath(std::string_view path, int& value); 34*1285115cSWilliam A. Kennington III TcommUtimeStime getTcommUtimeStime(int pid, long ticksPerSec); 35*1285115cSWilliam A. Kennington III std::string getCmdLine(int pid); 36*1285115cSWilliam A. Kennington III bool parseMeminfoValue(std::string_view content, std::string_view keyword, 37*1285115cSWilliam A. Kennington III int& value); 38*1285115cSWilliam A. Kennington III bool parseProcUptime(const std::string_view content, double& uptime, 39*1285115cSWilliam A. Kennington III double& idleProcessTime); 40*1285115cSWilliam A. Kennington III long getTicksPerSec(); 41*1285115cSWilliam A. Kennington III char controlCharsToSpace(char c); 42*1285115cSWilliam A. Kennington III std::string trimStringRight(std::string_view s); 43*1285115cSWilliam A. Kennington III 44*1285115cSWilliam A. Kennington III } // namespace metric_blob 45