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

using zx;

/// Maximum number of bytes in a command string
const uint32 DEBUG_COMMAND_MAX = 1024;

/// Acts on behalf of the caller to interact with privileged debug system calls.
[Discoverable, Layout = "Simple"]
protocol DebugBroker {
    /// Pass debug command through to the kernel shell.
    /// Look at zx_debug_send_command syscall handling to find valid values.
    SendDebugCommand(string:DEBUG_COMMAND_MAX command) -> (zx.status status);

    /// Sets whether kernel tracing (ktrace) is enabled or disabled.
    SetTracingEnabled(bool enabled) -> (zx.status status);
};
