blob: b2a0966ee53ef5987ae17d4a0313f987d28be8f6 [file] [log] [blame]
// Copyright 2026 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <stdint.h>
#include <vm/continuous_attribution_tracker.h>
ContinuousAttributionTracker::ContinuousAttributionTracker(ContinuousAttributionTracker&& source)
: current_slots_(source.current_slots_), hwm_slots_(source.hwm_slots_) {
source.current_slots_ = 0;
source.hwm_slots_ = 0;
}
ContinuousAttributionTracker& ContinuousAttributionTracker::operator=(
ContinuousAttributionTracker&& source) {
current_slots_ = source.current_slots_;
hwm_slots_ = source.hwm_slots_;
source.current_slots_ = 0;
source.hwm_slots_ = 0;
return *this;
}
uint32_t ContinuousAttributionTracker::FetchHwmAndReset() {
DEBUG_ASSERT(hwm_slots_ >= current_slots_);
const uint32_t ret = hwm_slots_;
hwm_slots_ = current_slots_; // reset
return ret;
}
uint32_t ContinuousAttributionTracker::FetchCurrent() const { return current_slots_; }