qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Tanish Desai" <tanishdesai37@gmail.com>,
	"Zhao Liu" <zhao1.liu@intel.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	"Mads Ynddal" <mads@ynddal.dk>
Subject: [PATCH 00/16] tracetool: add Rust support
Date: Fri, 19 Sep 2025 13:25:20 +0200	[thread overview]
Message-ID: <20250919112536.141782-1-pbonzini@redhat.com> (raw)

This is the result of the summer project of Tanish Desai.  It mostly
consists of changes to tracetool, which I used to add tracepoint support
to the pl011 device.  All the backends are supported except dtrace and
ust; support for Linux in dtrace should be easy using the "probe" crate,
the rest (ust, and dtrace on macOS or Solaris) less so.  For ust, the
plan is to deprecate it, since LTTng can use uprobes.  For dtrace on
macOS or Solaris, support would have to be added to the "probe" crate.

Patches 1-5 are cleanups that could be committed separately.

Patches 6-7 are tracetool patches that have been posted before, now
rebased on top of the "make check-tracetool" series.  Their purpose
is to simplify .h code generation for tracetool backends, and these
simplifications translate directly to the new .rs code generation.

Patches 8-9 add the minimal support for adding tracepoint functions
in Rust, albeit with no content and thus no actual tracing.

Patches 10-11 add back tracepoints to the Rust pl011 device model.

Patches 12-16 finally add Rust code generation to the supported
tracing backends.

The tracetool testsuite is now part of QEMU and is extended to
cover the generated Rust code.

Paolo

v1->v2:
- new patch "tracetool: fix usage of try_import()"
- new patch "tracetool: remove dead code" [Manos]
- new patch "treewide: remove unnessary "coding" header" [Manos]
- new patch "tracetool: add SPDX headers" [Manos]
- dropped patch "treewide: write "unsigned long int" instead of "long unsigned int""
- merge patch "rust: move dependencies to rust/Cargo.toml"
- gathered Reviewed-by tags
- sort keywords for primitive C types [Manos]
- fix incorrect string "_{name}" in "tracetool: Add Rust format support" [Manos, Daniel]
- adjust for moved crates
- add SPDX headers to generated file [Daniel]
- add @generated tag to generated file [Manos]
- add #[allow()] to include_trace macro, in order to pacify clippy
- tweaks to trace/Cargo.toml [Manos]
- fix more clippy issues in generated code
- change include_trace! macro to not require the "trace-" prefix [Zhao]
- rename Clock::get() and get_hz() methods to period() and hz() respectively [Zhao]
- drop the "..._ENABLED" symbols [Daniel]

Paolo Bonzini (8):
  tracetool: fix usage of try_import()
  tracetool: remove dead code
  treewide: remove unnessary "coding" header
  tracetool: add SPDX headers
  trace/ftrace: move snprintf+write from tracepoints to ftrace.c
  rust: qdev: add minimal clock bindings
  rust: pl011: add tracepoints
  log: change qemu_loglevel to unsigned

Tanish Desai (8):
  tracetool: add CHECK_TRACE_EVENT_GET_STATE
  tracetool/backend: remove redundant trace event checks
  tracetool: Add Rust format support
  rust: add trace crate
  tracetool/simple: add Rust support
  tracetool/log: add Rust support
  tracetool/ftrace: add Rust support
  tracetool/syslog: add Rust support

 docs/conf.py                                  |   2 -
 docs/sphinx-static/theme_overrides.css        |   3 +-
 include/qemu/log-for-trace.h                  |   4 +-
 include/qemu/log.h                            |  44 ++--
 tests/tracetool/ftrace.h                      |  28 +--
 tests/tracetool/log.h                         |  16 +-
 trace/ftrace.h                                |   1 +
 trace/ftrace.c                                |  15 ++
 util/log.c                                    |   2 +-
 hw/char/trace-events                          |  14 +-
 rust/Cargo.lock                               |   8 +
 rust/Cargo.toml                               |   1 +
 rust/hw/char/pl011/Cargo.toml                 |   1 +
 rust/hw/char/pl011/meson.build                |   1 +
 rust/hw/char/pl011/src/device.rs              |  57 +++--
 rust/hw/core/src/qdev.rs                      |  33 +++
 rust/meson.build                              |   2 +-
 rust/trace/Cargo.toml                         |  19 ++
 rust/trace/meson.build                        |  19 ++
 rust/trace/src/lib.rs                         |  39 ++++
 rust/util/src/log.rs                          |   2 +-
 scripts/analyse-locks-simpletrace.py          |   1 -
 scripts/modinfo-collect.py                    |   1 -
 scripts/modinfo-generate.py                   |   1 -
 scripts/oss-fuzz/minimize_qtest_trace.py      |   1 -
 scripts/oss-fuzz/output_reproducer.py         |   1 -
 .../oss-fuzz/reorder_fuzzer_qtest_trace.py    |   1 -
 scripts/probe-gdb-support.py                  |   1 -
 scripts/qapi/error.py                         |   2 -
 scripts/qapi/expr.py                          |   2 -
 scripts/qapi/gen.py                           |   2 -
 scripts/qapi/parser.py                        |   2 -
 scripts/qapi/schema.py                        |   2 -
 scripts/qemu-plugin-symbols.py                |   1 -
 scripts/qemugdb/tcg.py                        |   2 -
 scripts/qemugdb/timers.py                     |   1 -
 scripts/replay-dump.py                        |   1 -
 scripts/tracetool.py                          |   1 -
 scripts/tracetool/__init__.py                 | 201 ++++++++++++++----
 scripts/tracetool/backend/__init__.py         |  43 ++--
 scripts/tracetool/backend/dtrace.py           |   2 +-
 scripts/tracetool/backend/ftrace.py           |  26 +--
 scripts/tracetool/backend/log.py              |  22 +-
 scripts/tracetool/backend/simple.py           |  17 +-
 scripts/tracetool/backend/syslog.py           |  17 +-
 scripts/tracetool/backend/ust.py              |   2 +-
 scripts/tracetool/format/__init__.py          |   4 +-
 scripts/tracetool/format/c.py                 |   2 +-
 scripts/tracetool/format/d.py                 |   2 +-
 scripts/tracetool/format/h.py                 |  18 +-
 scripts/tracetool/format/log_stap.py          |   2 +-
 scripts/tracetool/format/rs.py                |  71 +++++++
 scripts/tracetool/format/simpletrace_stap.py  |   2 +-
 scripts/tracetool/format/stap.py              |   2 +-
 scripts/tracetool/format/ust_events_c.py      |   2 +-
 scripts/tracetool/format/ust_events_h.py      |   2 +-
 tests/tracetool/ftrace.rs                     |  40 ++++
 tests/tracetool/log.rs                        |  44 ++++
 tests/tracetool/simple.rs                     |  40 ++++
 tests/tracetool/syslog.rs                     |  40 ++++
 tests/tracetool/tracetool-test.py             |   2 +
 trace/meson.build                             |   8 +-
 62 files changed, 727 insertions(+), 218 deletions(-)
 create mode 100644 rust/trace/Cargo.toml
 create mode 100644 rust/trace/meson.build
 create mode 100644 rust/trace/src/lib.rs
 create mode 100644 scripts/tracetool/format/rs.py
 create mode 100644 tests/tracetool/ftrace.rs
 create mode 100644 tests/tracetool/log.rs
 create mode 100644 tests/tracetool/simple.rs
 create mode 100644 tests/tracetool/syslog.rs

-- 
2.51.0



             reply	other threads:[~2025-09-19 11:26 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-19 11:25 Paolo Bonzini [this message]
2025-09-19 11:25 ` [PATCH 01/16] tracetool: fix usage of try_import() Paolo Bonzini
2025-09-23 19:06   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 02/16] tracetool: remove dead code Paolo Bonzini
2025-09-23 19:06   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 03/16] treewide: remove unnessary "coding" header Paolo Bonzini
2025-09-23 19:06   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 04/16] tracetool: add SPDX headers Paolo Bonzini
2025-09-23 19:06   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 05/16] trace/ftrace: move snprintf+write from tracepoints to ftrace.c Paolo Bonzini
2025-09-19 11:25 ` [PATCH 06/16] tracetool: add CHECK_TRACE_EVENT_GET_STATE Paolo Bonzini
2025-09-19 11:25 ` [PATCH 07/16] tracetool/backend: remove redundant trace event checks Paolo Bonzini
2025-09-19 11:25 ` [PATCH 08/16] tracetool: Add Rust format support Paolo Bonzini
2025-09-23 19:23   ` Stefan Hajnoczi
2025-09-24  7:13     ` Paolo Bonzini
2025-09-24  7:50       ` Daniel P. Berrangé
2025-09-24 11:49         ` Stefan Hajnoczi
2025-09-24 11:56           ` Daniel P. Berrangé
2025-09-24 18:10       ` Stefan Hajnoczi
2025-09-24 19:58         ` Paolo Bonzini
2025-09-25 11:50           ` Stefan Hajnoczi
2025-09-25 12:38             ` Paolo Bonzini
2025-09-25 15:09               ` Stefan Hajnoczi
2025-09-25 15:37                 ` Paolo Bonzini
2025-09-25 17:16                   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 09/16] rust: add trace crate Paolo Bonzini
2025-09-23 19:29   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 10/16] rust: qdev: add minimal clock bindings Paolo Bonzini
2025-09-23 19:31   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 11/16] rust: pl011: add tracepoints Paolo Bonzini
2025-09-23 19:04   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 12/16] tracetool/simple: add Rust support Paolo Bonzini
2025-09-23 19:35   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 13/16] log: change qemu_loglevel to unsigned Paolo Bonzini
2025-09-23 19:06   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 14/16] tracetool/log: add Rust support Paolo Bonzini
2025-09-23 19:36   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 15/16] tracetool/ftrace: " Paolo Bonzini
2025-09-23 19:36   ` Stefan Hajnoczi
2025-09-19 11:25 ` [PATCH 16/16] tracetool/syslog: " Paolo Bonzini
2025-09-23 19:37   ` Stefan Hajnoczi
2025-09-23 19:43 ` [PATCH 00/16] tracetool: " Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250919112536.141782-1-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=berrange@redhat.com \
    --cc=mads@ynddal.dk \
    --cc=manos.pitsidianakis@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=tanishdesai37@gmail.com \
    --cc=zhao1.liu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).