// Copyright 2023 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.
@available(added=12)
library fuchsia.memory.debug;

using fuchsia.memorypressure;

/// Helps debug memory-pressure related features on a fuchsia device.
@discoverable
closed protocol MemoryPressure {
    /// Signals registered watchers of the fuchsia.memorypressure service with the
    /// specified memory pressure level. Intended for debugging only.
    /// Does not on its own change the memory pressure level of the system, or trigger any
    /// kernel memory reclamation tasks.
    /// However the components listening will receive a memory pressure signal which can
    /// lead to a change in the memory usage of the device, and an actual change in the
    /// memory pressure level of the system.
    strict Signal(struct {
        level fuchsia.memorypressure.Level;
    });
};
