rust: samples: add tracepoint to Rust sample

This updates the Rust printing sample to invoke a tracepoint. This
ensures that we have a user in-tree from the get-go even though the
patch is being merged before its real user.

Cc: Masami Hiramatsu <[email protected]>
Cc: Mathieu Desnoyers <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Josh Poimboeuf <[email protected]>
Cc: Jason Baron <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Miguel Ojeda <[email protected]>
Cc: Alex Gaynor <[email protected]>
Cc: Wedson Almeida Filho <[email protected]>
Cc: Gary Guo <[email protected]>
Cc: " =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= " <[email protected]>
Cc: Benno Lossin <[email protected]>
Cc: Andreas Hindborg <[email protected]>
Cc: Arnd Bergmann <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Sean Christopherson <[email protected]>
Cc: Uros Bizjak <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Marc Zyngier <[email protected]>
Cc: Oliver Upton <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Ryan Roberts <[email protected]>
Cc: Fuad Tabba <[email protected]>
Cc: Paul Walmsley <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
Cc: Albert Ou <[email protected]>
Cc: Anup Patel <[email protected]>
Cc: Andrew Jones <[email protected]>
Cc: Alexandre Ghiti <[email protected]>
Cc: Conor Dooley <[email protected]>
Cc: Samuel Holland <[email protected]>
Cc: Huacai Chen <[email protected]>
Cc: WANG Xuerui <[email protected]>
Cc: Bibo Mao <[email protected]>
Cc: Tiezhu Yang <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Tianrui Zhao <[email protected]>
Link: https://lore.kernel.org/[email protected]
Reviewed-by: Boqun Feng <[email protected]>
Signed-off-by: Alice Ryhl <[email protected]>
Signed-off-by: Steven Rostedt (Google) <[email protected]>
This commit is contained in:
Alice Ryhl authored and Steven Rostedt (Google) committed 2024-11-04 16:21:44 -05:00
1 parent ad37bcd965
commit 91d39024e1
6 files changed
+61 -1

No files matched your search

+1
View File
@@ -20223,6 +20223,7 @@ C: zulip://rust-for-linux.zulipchat.com
P: https://rust-for-linux.com/contributing
T: git https://github.com/Rust-for-Linux/linux.git rust-next
F: Documentation/rust/
F: include/trace/events/rust_sample.h
F: rust/
F: samples/rust/
F: scripts/*rust*
+31
View File
@@ -0,0 +1,31 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Tracepoints for `samples/rust/rust_print.rs`.
*
* Copyright (C) 2024 Google, Inc.
*/
#undef TRACE_SYSTEM
#define TRACE_SYSTEM rust_sample
#if !defined(_RUST_SAMPLE_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define _RUST_SAMPLE_TRACE_H
#include <linux/tracepoint.h>
TRACE_EVENT(rust_sample_loaded,
TP_PROTO(int magic_number),
TP_ARGS(magic_number),
TP_STRUCT__entry(
__field(int, magic_number)
),
TP_fast_assign(
__entry->magic_number = magic_number;
),
TP_printk("magic=%d", __entry->magic_number)
);
#endif /* _RUST_SAMPLE_TRACE_H */
/* This part must be outside protection */
#include <trace/define_trace.h>
+1
View File
@@ -23,6 +23,7 @@
#include <linux/tracepoint.h>
#include <linux/wait.h>
#include <linux/workqueue.h>
#include <trace/events/rust_sample.h>
/* `bindgen` gets confused at certain things. */
const size_t RUST_CONST_HELPER_ARCH_SLAB_MINALIGN = ARCH_SLAB_MINALIGN;
+2 -1
View File
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0
ccflags-y += -I$(src) # needed for trace events
obj-$(CONFIG_SAMPLE_RUST_MINIMAL) += rust_minimal.o
obj-$(CONFIG_SAMPLE_RUST_PRINT) += rust_print.o
obj-$(CONFIG_SAMPLE_RUST_PRINT) += rust_print.o rust_print_events.o
subdir-$(CONFIG_SAMPLE_RUST_HOSTPROGS) += hostprogs
+18
View File
@@ -69,6 +69,8 @@ impl kernel::Module for RustPrint {
arc_print()?;
trace::trace_rust_sample_loaded(42);
Ok(RustPrint)
}
}
@@ -78,3 +80,19 @@ impl Drop for RustPrint {
pr_info!("Rust printing macros sample (exit)\n");
}
}
mod trace {
use core::ffi::c_int;
kernel::declare_trace! {
/// # Safety
///
/// Always safe to call.
unsafe fn rust_sample_loaded(magic: c_int);
}
pub(crate) fn trace_rust_sample_loaded(magic: i32) {
// SAFETY: Always safe to call.
unsafe { rust_sample_loaded(magic as c_int) }
}
}
+8
View File
@@ -0,0 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright 2024 Google LLC
*/
#define CREATE_TRACE_POINTS
#define CREATE_RUST_TRACE_POINTS
#include <trace/events/rust_sample.h>