qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/16] tracetool: add Rust support
@ 2025-09-19 11:25 Paolo Bonzini
  2025-09-19 11:25 ` [PATCH 01/16] tracetool: fix usage of try_import() Paolo Bonzini
                   ` (16 more replies)
  0 siblings, 17 replies; 42+ messages in thread
From: Paolo Bonzini @ 2025-09-19 11:25 UTC (permalink / raw)
  To: qemu-devel
  Cc: Tanish Desai, Zhao Liu, Stefan Hajnoczi, Manos Pitsidianakis,
	Daniel P . Berrangé, Mads Ynddal

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



^ permalink raw reply	[flat|nested] 42+ messages in thread

end of thread, other threads:[~2025-09-25 17:18 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-19 11:25 [PATCH 00/16] tracetool: add Rust support Paolo Bonzini
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

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).