// Copyright 2017 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.

#pragma once

#include <stddef.h>

#include <trace-engine/types.h>

struct BenchmarkSpec {
  const char* name;
  trace_buffering_mode_t mode;
  size_t buffer_size;
  // The number of iterations is a parameter to make it easier to
  // experiment and debug.
  unsigned num_iterations;
};

// Runs benchmarks which need tracing disabled.
void RunTracingDisabledBenchmarks();

// Runs benchmarks which need tracing enabled.
void RunTracingEnabledBenchmarks(const BenchmarkSpec* spec);

// Runs benchmarks with NTRACE macro defined.
void RunNoTraceBenchmarks();
