// 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
closed protocol ReadOnlyLog {
    /// Get read-only handle to the kernel `log`.
    strict Get() -> (resource struct {
        log zx.Handle:LOG;
    });
};

/// Protocol for providing the kernel log, writable.
@discoverable
closed protocol WriteOnlyLog {
    /// Get write-only handle to the kernel `log`.
    strict Get() -> (resource struct {
        log zx.Handle:LOG;
    });
};
