2022-09-23 14:19:41 +02:00

42 lines
1.3 KiB
Rust

#![deny(unsafe_op_in_unsafe_fn)]
use basic_timing_cache_channel::TopologyAwareError;
use cache_side_channel::CacheStatus::Hit;
use cache_side_channel::{
set_affinity, ChannelHandle, CoreSpec, MultipleAddrCacheSideChannel, SingleAddrCacheSideChannel,
};
use cache_utils::calibration::PAGE_LEN;
use cache_utils::ip_tool::{Function, TIMED_MACCESS};
use cache_utils::maccess;
use cache_utils::mmap;
use cache_utils::mmap::MMappedMemory;
use flush_flush::{FFHandle, FFPrimitives, FlushAndFlush};
use nix::Error;
use rand::seq::SliceRandom;
use std::iter::Cycle;
use std::ops::Range;
use CacheObserver::{
pattern_helper, reference_patterns, Prober, CACHE_LINE_LEN, PAGE_CACHELINE_LEN,
};
pub const NUM_ITERATION: usize = 1 << 10;
pub const NUM_PAGES: usize = 256;
fn exp(delay: u64, reload: &Function) {
for (name, pattern) in reference_patterns() {
let p = pattern_helper(&pattern, reload);
let mut prober = Prober::<1>::new(63).unwrap();
println!("{}", name);
let result = prober.full_page_probe(p, NUM_ITERATION as u32, 100);
println!("{}", result);
}
}
fn main() {
let reload = Function::try_new(1, 0, TIMED_MACCESS).unwrap();
for delay in [0, 5, 10, 50] {
println!("Delay after each access: {} us", delay);
exp(delay, &reload);
}
}