From 3568fb657b9736aaf765b24ce4cc25eaeaadae1c Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Thu, 7 Jun 2018 15:49:11 -0400 Subject: [PATCH] Add 9p probe Signed-off-by: Michael Jeanson Signed-off-by: Mathieu Desnoyers --- instrumentation/events/lttng-module/9p.h | 57 ++++++++++++++++++++++++ probes/Kbuild | 7 +++ probes/lttng-probe-9p.c | 38 ++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 instrumentation/events/lttng-module/9p.h create mode 100644 probes/lttng-probe-9p.c diff --git a/instrumentation/events/lttng-module/9p.h b/instrumentation/events/lttng-module/9p.h new file mode 100644 index 00000000..ab58bac8 --- /dev/null +++ b/instrumentation/events/lttng-module/9p.h @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: (GPL-2.0 OR LGPL-2.1) */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM 9p + +#if !defined(LTTNG_TRACE_9P_H) || defined(TRACE_HEADER_MULTI_READ) +#define LTTNG_TRACE_9P_H + +#include +#include + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)) +LTTNG_TRACEPOINT_EVENT(9p_client_req, + + TP_PROTO(struct p9_client *clnt, int8_t type, int tag), + + TP_ARGS(clnt, type, tag), + + TP_FIELDS( + ctf_integer_hex(void *, clnt, clnt) + ctf_integer(u8, type, type) + ctf_integer(u32, tag, tag) + ) +) + +LTTNG_TRACEPOINT_EVENT(9p_client_res, + + TP_PROTO(struct p9_client *clnt, int8_t type, int tag, int err), + + TP_ARGS(clnt, type, tag, err), + + TP_FIELDS( + ctf_integer_hex(void *, clnt, clnt) + ctf_integer(u8, type, type) + ctf_integer(u32, tag, tag) + ctf_integer(u32, err, err) + ) +) + +LTTNG_TRACEPOINT_EVENT(9p_protocol_dump, + + TP_PROTO(struct p9_client *clnt, struct p9_fcall *pdu), + + TP_ARGS(clnt, pdu), + + TP_FIELDS( + ctf_integer_hex(void *, clnt, clnt) + ctf_integer(u8, type, pdu->id) + ctf_integer(u16, tag, pdu->tag) + ctf_array(unsigned char, line, pdu->sdata, P9_PROTO_DUMP_SZ) + ) +) +#endif + +#endif /* LTTNG_TRACE_9P_H */ + +/* This part must be outside protection */ +#include diff --git a/probes/Kbuild b/probes/Kbuild index ff9c5f56..7a0b6507 100644 --- a/probes/Kbuild +++ b/probes/Kbuild @@ -12,6 +12,13 @@ obj-$(CONFIG_LTTNG) += lttng-probe-module.o obj-$(CONFIG_LTTNG) += lttng-probe-power.o obj-$(CONFIG_LTTNG) += lttng-probe-statedump.o +ifneq ($(CONFIG_NET_9P),) + obj-$(CONFIG_LTTNG) += $(shell \ + if [ $(VERSION) -ge 4 \ + -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -eq 10 \) ] ; then \ + echo "lttng-probe-9p.o" ; fi;) +endif # CONFIG_NET_9P + i2c_dep = $(srctree)/include/trace/events/i2c.h ifneq ($(wildcard $(i2c_dep)),) obj-$(CONFIG_LTTNG) += lttng-probe-i2c.o diff --git a/probes/lttng-probe-9p.c b/probes/lttng-probe-9p.c new file mode 100644 index 00000000..25dba4f6 --- /dev/null +++ b/probes/lttng-probe-9p.c @@ -0,0 +1,38 @@ +/* + * probes/lttng-probe-9p.c + * + * LTTng 9p probes. + * + * Copyright (C) 2010-2012 Mathieu Desnoyers + * Copyright (C) 2018 Michael Jeanson + * + * SPDX-License-Identifier: (GPL-2.0 OR LGPL-2.1) + */ + +#include +#include +#include +#include + +/* + * Create the tracepoint static inlines from the kernel to validate that our + * trace event macros match the kernel we run on. + */ +#include + +/* + * Create LTTng tracepoint probes. + */ +#define LTTNG_PACKAGE_BUILD +#define CREATE_TRACE_POINTS +#define TRACE_INCLUDE_PATH instrumentation/events/lttng-module + +#include + +MODULE_LICENSE("GPL and additional rights"); +MODULE_AUTHOR("Michael Jeanson "); +MODULE_DESCRIPTION("LTTng 9p probes"); +MODULE_VERSION(__stringify(LTTNG_MODULES_MAJOR_VERSION) "." + __stringify(LTTNG_MODULES_MINOR_VERSION) "." + __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION) + LTTNG_MODULES_EXTRAVERSION); -- 2.34.1