mirror of
https://github.com/servo/servo.git
synced 2025-08-12 08:55:32 +01:00
Auto merge of #8253 - connorimes:android-energy-profiling, r=mbrubeck
Heartbeats and energy profiling support for Android <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8253) <!-- Reviewable:end -->
This commit is contained in:
commit
f9d79600c9
5 changed files with 70 additions and 23 deletions
|
@ -19,7 +19,7 @@ features = [ "serde_serialization" ]
|
|||
|
||||
[dependencies.energymon]
|
||||
git = "https://github.com/energymon/energymon-rust.git"
|
||||
rev = "67f74732ac"
|
||||
rev = "eba1d8a"
|
||||
optional = true
|
||||
|
||||
[dependencies.energy-monitor]
|
||||
|
|
|
@ -36,8 +36,8 @@ mod energymon {
|
|||
|
||||
static mut EM: Option<*mut EnergyMon> = None;
|
||||
|
||||
/// Read energy from the energy monitor, otherwise return 0.
|
||||
pub fn read_energy_uj() -> u64 {
|
||||
fn init() {
|
||||
// can't use lazy_static macro for EM (no Sync trait for EnergyMon)
|
||||
static ONCE: Once = ONCE_INIT;
|
||||
ONCE.call_once(|| {
|
||||
if let Ok(em) = EnergyMon::new() {
|
||||
|
@ -47,7 +47,11 @@ mod energymon {
|
|||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/// Read energy from the energy monitor, otherwise return 0.
|
||||
pub fn read_energy_uj() -> u64 {
|
||||
init();
|
||||
unsafe {
|
||||
// EnergyMon implementations of EnergyMonitor always return a value
|
||||
EM.map_or(0, |em| (*em).read_uj().unwrap())
|
||||
|
@ -55,6 +59,7 @@ mod energymon {
|
|||
}
|
||||
|
||||
pub fn get_min_interval_ms() -> u32 {
|
||||
init();
|
||||
unsafe {
|
||||
EM.map_or(0, |em| ((*em).interval_us() as f64 / 1000.0).ceil() as u32)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue