// Copyright 2019 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.

library fuchsia.io2;

using zx;

/// A node for interacting with the kernel debug log.
/// It may be manipulated via the debuglog object returned from
/// the `DebuglogInfo` member in [`fuchsia.io2/Representation`].
protocol Debuglog {
    compose Node;
};

/// The debuglog representation of a node.
/// The selection of this variant in [`Representation`] implies that the
/// connection speaks the [`fuchsia.io2/Debuglog`] protocol.
resource table DebuglogInfo {
    /// The backing debuglog kernel object.
    1: zx.handle:LOG debuglog;
};
