1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
use EventConfig;
use cratebindings as b;
/// A "raw" implementation-specific event.
///
/// # Examples
///
/// Raw event encodings are CPU-specific; consult your processor's manual (e.g.
/// the Intel SDM or AMD PPR) for the event and umask values.
///
/// ```rust, no_run
/// use perf_event_open::config::{Cpu, Opts, Proc};
/// use perf_event_open::count::Counter;
/// use perf_event_open::event::raw::Raw;
///
/// // Retired instructions on most Intel and AMD CPUs (event 0xc0, umask 0x00).
/// let event = Raw {
/// config: 0xc0,
/// config1: 0,
/// config2: 0,
/// config3: 0,
/// };
/// let target = (Proc::CURRENT, Cpu::ALL);
///
/// let counter = Counter::new(event, target, Opts::default()).unwrap();
///
/// counter.enable().unwrap(); // Start the counter.
/// std::hint::black_box((0..1_000_u64).sum::<u64>());
/// counter.disable().unwrap(); // Stop the counter.
///
/// let count = counter.stat().unwrap().count;
/// println!("raw event count: {}", count);
/// ```
try_from!;