// 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 {
    /// Rights: handle must have resource kind ZX_RSRC_KIND_ROOT.
    debug_read(handle<resource> handle) -> (status status, string buffer, usize actual);

    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);
};
