Struct solana_rbpf::syscalls::BpfTimeGetNs [−][src]
pub struct BpfTimeGetNs {}
Expand description
Get monotonic time (since boot time) in nanoseconds. All arguments are unused.
Examples
use solana_rbpf::syscalls::{BpfTimeGetNs, Result};
use solana_rbpf::memory_region::{MemoryRegion, MemoryMapping};
use solana_rbpf::vm::{Config, SyscallObject};
use solana_rbpf::user_error::UserError;
let mut result: Result = Ok(0);
let config = Config::default();
let memory_mapping = MemoryMapping::new::<UserError>(vec![], &config).unwrap();
BpfTimeGetNs::call(&mut BpfTimeGetNs {}, 0, 0, 0, 0, 0, &memory_mapping, &mut result);
let t = result.unwrap();
let d = t / 10u64.pow(9) / 60 / 60 / 24;
let h = (t / 10u64.pow(9) / 60 / 60) % 24;
let m = (t / 10u64.pow(9) / 60 ) % 60;
let s = (t / 10u64.pow(9)) % 60;
let ns = t % 10u64.pow(9);
println!("Uptime: {:#x} == {} days {}:{}:{}, {} ns", t, d, h, m, s, ns);