| // Copyright 2015 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMIUMOS_WIDE_PROFILING_PERF_STAT_PARSER_H_ |
| #define CHROMIUMOS_WIDE_PROFILING_PERF_STAT_PARSER_H_ |
| |
| #include <string> |
| |
| #include "base/macros.h" |
| |
| #include "chromiumos-wide-profiling/compat/proto.h" |
| #include "chromiumos-wide-profiling/compat/string.h" |
| |
| namespace quipper { |
| |
| // These functions parse the contents at |path| or of |data| into a |
| // PerfStatProto. Return true if at least one line of data was inserted into |
| // |proto|. Otherwise return false; |
| // Both functions below assume perf stat output is in the form: |
| // "event: 123 123 123\n" |
| // "event2: 123 123 123\n" |
| // "..." |
| // "1.234 seconds time elapsed" |
| bool ParsePerfStatFileToProto(const string& path, PerfStatProto* proto); |
| bool ParsePerfStatOutputToProto(const string& data, PerfStatProto* proto); |
| |
| // This function assumes that |str| is of the form "1234.1234567" and returns |
| // false otherwise. This function does not accept negatives (e.g. "-12.23"). |
| bool SecondsStringToMillisecondsUint64(const string& str, uint64_t* out); |
| |
| } // namespace quipper |
| |
| #endif // CHROMIUMOS_WIDE_PROFILING_PERF_STAT_PARSER_H_ |