blob: 0d4c004b3ac923675881fbe33830788af7988108 [file] [log] [blame]
// Copyright 2016 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.
#ifndef SYSROOT_ZIRCON_DEVICE_KTRACE_H_
#define SYSROOT_ZIRCON_DEVICE_KTRACE_H_
#include <string.h>
#include <zircon/syscalls.h>
#include <zircon/types.h>
#include <zircon/device/ioctl-wrapper.h>
#include <zircon/device/ioctl.h>
// return a handle usable with zx_ktrace_write()
#define IOCTL_KTRACE_GET_HANDLE \
IOCTL(IOCTL_KIND_GET_HANDLE, IOCTL_FAMILY_KTRACE, 1)
// define a new ktrace probe name
// input: ascii probe name, < ZX_MAX_NAME_LEN
// reply: uint32_t probe id usable with zx_ktrace_write()
#define IOCTL_KTRACE_ADD_PROBE \
IOCTL(IOCTL_KIND_DEFAULT, IOCTL_FAMILY_KTRACE, 2)
IOCTL_WRAPPER_OUT(ioctl_ktrace_get_handle, IOCTL_KTRACE_GET_HANDLE, zx_handle_t)
// Start tracing.
// input: The group_mask
#define IOCTL_KTRACE_START \
IOCTL(IOCTL_KIND_DEFAULT, IOCTL_FAMILY_KTRACE, 3)
// Stop
#define IOCTL_KTRACE_STOP \
IOCTL(IOCTL_KIND_DEFAULT, IOCTL_FAMILY_KTRACE, 4)
// Rewind
#define IOCTL_KTRACE_REWIND \
IOCTL(IOCTL_KIND_DEFAULT, IOCTL_FAMILY_KTRACE, 5)
static inline ssize_t ioctl_ktrace_add_probe(int fd, const char* name, uint32_t* probe_id) {
return fdio_ioctl(fd, IOCTL_KTRACE_ADD_PROBE,
name, strlen(name), probe_id, sizeof(uint32_t));
}
IOCTL_WRAPPER_IN(ioctl_ktrace_start, IOCTL_KTRACE_START, uint32_t)
IOCTL_WRAPPER(ioctl_ktrace_stop, IOCTL_KTRACE_STOP)
IOCTL_WRAPPER(ioctl_ktrace_rewind, IOCTL_KTRACE_REWIND)
#endif // SYSROOT_ZIRCON_DEVICE_KTRACE_H_