blob: 2f263e2792d25e70956f5c1020f34ee08f353653 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0 */
/*
* LWIS Trace Event
*
* Copyright (c) 2021 Google Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#undef TRACE_SYSTEM
#define TRACE_SYSTEM lwis
#if !defined(_TRACE_LWIS_H_) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_LWIS_H_
#include <linux/tracepoint.h>
#include "lwis_commands.h"
#include "lwis_device.h"
#define LWIS_DEVICE_NAME_ENTRY \
__array(char, lwis_name, LWIS_MAX_NAME_STRING_LEN)
#define LWIS_DEVICE_NAME_ASSIGN \
strlcpy(__entry->lwis_name, lwis_dev->name, LWIS_MAX_NAME_STRING_LEN)
#define LWIS_DEVICE_NAME __entry->lwis_name
TRACE_EVENT(tracing_mark_write,
TP_PROTO(struct lwis_device *lwis_dev, char type,
int pid, const char *func_name, int64_t value),
TP_ARGS(lwis_dev, type, pid, func_name, value),
TP_STRUCT__entry(
LWIS_DEVICE_NAME_ENTRY
__field(char, type)
__field(int, pid)
__string(func_name, func_name)
__field(int64_t, value)
),
TP_fast_assign(
LWIS_DEVICE_NAME_ASSIGN;
__entry->type = type;
__entry->pid = pid;
__assign_str(func_name, func_name);
__entry->value = value;
),
TP_printk("%c|%d|lwis-%s:%s|%lld",
__entry->type, __entry->pid, LWIS_DEVICE_NAME, __get_str(func_name), __entry->value)
);
#define LWIS_ATRACE_BEGIN(lwis_dev, func_name) \
trace_tracing_mark_write(lwis_dev, 'B', current->tgid, func_name, 0)
#define LWIS_ATRACE_FUNC_BEGIN(lwis_dev) LWIS_ATRACE_BEGIN(lwis_dev, __func__)
#define LWIS_ATRACE_END(lwis_dev, func_name) \
trace_tracing_mark_write(lwis_dev, 'E', current->tgid, func_name, 0)
#define LWIS_ATRACE_FUNC_END(lwis_dev) LWIS_ATRACE_END(lwis_dev, __func__)
#define LWIS_ATRACE_INT_PID(lwis_dev, func_name, value, pid) \
trace_tracing_mark_write(lwis_dev, 'C', pid, func_name, value)
#define LWIS_ATRACE_INT(lwis_dev, func_name, value) \
LWIS_ATRACE_INT_PID(lwis_dev, func_name, value, current->tgid)
#endif /* _TRACE_LWIS_H_ */
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE lwis_trace
/* This part must be outside protection */
#include <trace/define_trace.h>