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

using zx;

// TODO(ZX-448): Allow providing a vmo of the buffer to use.

[Layout = "Simple"]
protocol Controller {
    /// Start tracing.
    Start(uint32 group_mask) -> (zx.status status);

    /// Stop tracing.
    Stop() -> (zx.status status);

    /// Rewind the trace buffer.
    Rewind() -> (zx.status status);

    /// Get the number of bytes written to the trace buffer.
    /// `size` is valid if, and only if, `status` is `ZX_OK`.
    GetBytesWritten() -> (zx.status status, uint64 size);
};
