1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // Copyright 2019 The Chromium 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 BASE_TRACE_EVENT_THREAD_INSTRUCTION_COUNT_H_
- #define BASE_TRACE_EVENT_THREAD_INSTRUCTION_COUNT_H_
- #include <stdint.h>
- #include "base/base_export.h"
- namespace base {
- namespace trace_event {
- // Represents the number of instructions that were retired between two samples
- // of a thread's performance counters.
- class BASE_EXPORT ThreadInstructionDelta {
- public:
- constexpr ThreadInstructionDelta() : delta_(0) {}
- explicit constexpr ThreadInstructionDelta(int64_t delta) : delta_(delta) {}
- constexpr int64_t ToInternalValue() const { return delta_; }
- private:
- int64_t delta_;
- };
- // Uses the system's performance counters in order to measure the number of
- // instructions that have been retired on the current thread.
- class BASE_EXPORT ThreadInstructionCount {
- public:
- // Returns true if the platform supports hardware retired instruction
- // counters.
- static bool IsSupported();
- // Returns the number of retired instructions relative to some epoch count,
- // or -1 if getting the current instruction count failed / is disabled.
- static ThreadInstructionCount Now();
- constexpr ThreadInstructionCount() : value_(-1) {}
- explicit constexpr ThreadInstructionCount(int64_t value) : value_(value) {}
- constexpr bool is_null() const { return value_ == -1; }
- constexpr ThreadInstructionDelta operator-(
- ThreadInstructionCount other) const {
- return ThreadInstructionDelta(value_ - other.value_);
- }
- constexpr int64_t ToInternalValue() const { return value_; }
- private:
- int64_t value_;
- };
- } // namespace trace_event
- } // namespace base
- #endif // BASE_TRACE_EVENT_THREAD_INSTRUCTION_COUNT_H_
|