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

[Transport = "Syscall"]
protocol debug {
    /// Read a message from the debug serial port.
    /// Rights: handle must have resource kind ZX_RSRC_KIND_ROOT.
    debug_read(handle:RESOURCE handle) -> (status status, string buffer, usize actual);

    /// Write a message to the debug serial port.
    /// Rights: None.
    debug_write(string buffer) -> (status status);

    /// Rights: resource must have resource kind ZX_RSRC_KIND_ROOT.
    debug_send_command(handle:RESOURCE resource, string buffer) -> (status status);
};
