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

using zx;

/// Protocol for providing the kernel log, readable.
[Discoverable, ForDeprecatedCBindings]
protocol ReadOnlyLog {
    /// Get read-only handle to the kernel `log`.
    Get() -> (zx.handle:LOG log);
};

/// Protocol for providing the kernel log, writable.
[Discoverable, ForDeprecatedCBindings]
protocol WriteOnlyLog {
    /// Get write-only handle to the kernel `log`.
    Get() -> (zx.handle:LOG log);
};
