reverie/reverie-examples
Jason White cc6d88bfd3 ci: Fix clippy warnings (#23)
Summary:
Fixes all current clippy warnings[1] so CI is green again.

Fixing the warning `clippy::needless_pass_by_ref_mut` became a little involved. The internal version of clippy isn't recent enough to have this warning and so just doing `#[allow(clippy::needless_pass_by_ref_mut)]` leads to another error. The resulting change fixes the clippy warning and gets rid of some of the shenanigans I was doing to avoid allocating path buffers within the child process.

[1]: https://github.com/facebookexperimental/reverie/actions/runs/6164196219/job/16729396694

Pull Request resolved: https://github.com/facebookexperimental/reverie/pull/23

Reviewed By: VladimirMakaev

Differential Revision: D49209202

Pulled By: jasonwhite

fbshipit-source-id: b03ff432783910bef11fc239d146659dc2c0db30
2023-09-13 15:01:16 -07:00
..
chrome-trace Remove dependencies on associated_type_defaults unstable feature 2022-11-18 12:36:51 -08:00
strace Remove dependencies on associated_type_defaults unstable feature 2022-11-18 12:36:51 -08:00
Cargo.toml Update serde from 1.0.176 to 1.0.185 2023-08-21 06:07:02 -07:00
chaos.rs ci: Fix clippy (#20) 2023-07-10 16:46:43 -07:00
chunky_print.rs ci: Fix clippy warnings (#23) 2023-09-13 15:01:16 -07:00
counter1.rs Remove dependencies on associated_type_defaults unstable feature 2022-11-18 12:36:51 -08:00
counter2.rs ci: Fix clippy (#20) 2023-07-10 16:46:43 -07:00
debug.rs Remove dependencies on associated_type_defaults unstable feature 2022-11-18 12:36:51 -08:00
noop.rs Remove dependencies on associated_type_defaults unstable feature 2022-11-18 12:36:51 -08:00
README.md Remove unused pedigree example 2022-12-05 10:20:52 -08:00
strace_minimal.rs Remove dependencies on associated_type_defaults unstable feature 2022-11-18 12:36:51 -08:00

Examples

Example tools built on top of Reverie.

Copying one of these examples is the recommended way to get started using Reverie.

chrome-trace: Generates a chrome trace file

This tool is like strace, but generates a trace file that can be loaded in chrome://tracing/.

counter1: Reverie Counter Tool (1)

This is a basic example of event counting. It counts the number of system calls and reports that single integer at exit.

This version of tool uses a single, centralized piece of global state.

counter2: Reverie Counter Tool (2)

This is a basic example of event counting. This tool counts the number of system calls and reports that single integer at exit.

This implementation of the tool uses a distributed notion of state, maintaining a per-thread, per-process, and global state. Basically, this is an example of "MapReduce" style tracing of a process tree.

noop: Identity Function Tool

This instrumentation tool intercepts events but does nothing with them. It is useful for observing the overhead of interception, and as a starting point.

chunky_print: Print-gating Tool

This example tool intercepts write events on stdout and stderr and manipulates either when those outputs are released, or the scheduling order that determines the order of printed output.

strace: Reverie Echo Tool

This instrumentation tool simply echos intercepted events, like strace.

chaos: Chaos Tool

This tool is meant to emulate a pathological kernel where:

  1. read and recvfrom calls return only one byte at a time. This is intended to catch errors in parsers that assume multiple bytes will be returned at a time.
  2. EINTR is returned instead of running the real syscall for every other read.