// 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.boot;

/// Protocol for providing the kernel log, readable.
[Discoverable, Layout = "Simple"]
protocol ReadOnlyLog {
    /// Get read-only handle to the kernel `log`.
    Get() -> (handle<debuglog> log);
};

/// Protocol for providing the kernel log, writable.
[Discoverable, Layout = "Simple"]
protocol WriteOnlyLog {
    /// Get write-only handle to the kernel `log`.
    Get() -> (handle<debuglog> log);
};
