https://github.com/novafacing/cannonball
Deprecated! Use qemu-rs instead :)
https://github.com/novafacing/cannonball
emulation qemu rust tracing
Last synced: over 1 year ago
JSON representation
Deprecated! Use qemu-rs instead :)
- Host: GitHub
- URL: https://github.com/novafacing/cannonball
- Owner: novafacing
- License: mit
- Created: 2022-10-16T14:41:55.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-12-19T08:47:16.000Z (over 2 years ago)
- Last Synced: 2025-02-27T08:20:44.550Z (over 1 year ago)
- Topics: emulation, qemu, rust, tracing
- Language: Rust
- Homepage: https://github.com/novafacing/qemu-rs
- Size: 104 KB
- Stars: 73
- Watchers: 5
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cannonball 💣
## DEPRECATION NOTICE
This project has been superceded by the
[qemu-plugin](https://github.com/novafacing/qemu-rs/tree/main/qemu) bindings
provided by the [qemu-rs](https://github.com/novafacing/qemu-rs) project.
Cannonball is a framework for building QEMU plugins in Rust! Anything you can do in
a QEMU TCG plugin in C, you can do with `cannonball`.
Write plugins that run with minimal overhead and as much functionality as you can dream
of!
## Examples
There are a couple examples provided here!
* [`jaivana`](examples/jaivana/README.md) A simple tracer that logs a configurable set of events to a file or stdout.
* [`mons meg`](examples/mons_meg/README.md) A tracer that logs the same events as Jaivana, but uses Tokio to run the trace in an async environment, with communication
with the host over a UNIX socket instead of anonymous pipes.
Take a look at them, they are the best way to learn how to use this framework.
## Installation
Just add this to your `Cargo.toml`:
```toml
cannonball = "0.2.4"
```
## Example
Here's a quick recording of the [Jaivana](./examples/jaivana) example plugin and driver!
[](https://asciinema.org/a/a1y3n6CqJEq3Yk7SDwJVrTrWi)