blob: 8bd97e888bc5070ec55503ff0c288b14c33ca691 [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT
// N.B. This is ideally temporary. It is used by Intel PT support, and is a
// stopgap until "resources" can be used to read/write x86 MSRs.
// "mtrace" == "zircon trace": the idea being to be a generalization of
// ktrace. It's all temporary, but there may be other uses before the stopgap
// is no longer necessary.
#include "lib/mtrace.h"
#include <lib/zircon-internal/mtrace.h>
zx_status_t mtrace_control(uint32_t kind, uint32_t action, uint32_t options,
user_inout_ptr<void> arg, size_t size) {
switch (kind) {
#if defined(__x86_64__) || defined(__aarch64__)
case MTRACE_KIND_PERFMON:
return mtrace_perfmon_control(action, options, arg, size);
#endif
#ifdef __x86_64__
case MTRACE_KIND_INSNTRACE:
return mtrace_insntrace_control(action, options, arg, size);
#endif
default:
return ZX_ERR_INVALID_ARGS;
}
}