xref: /openbmc/google-misc/dhcp-done/subprojects/metrics-ipmi-blobs/util.hpp (revision 1285115c16180bd28a3cfe79d9db8d10c84fe2ed)
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