use std::{
fmt,
sync::atomic::{AtomicU64, Ordering},
};
pub(crate) static COUNT_ACTIVE_SEGMENT: AtomicU64 = AtomicU64::new(0);
pub(crate) static COUNT_FTRUNCATE_FAILED: AtomicU64 = AtomicU64::new(0);
pub(crate) static COUNT_MMAP_FAILED: AtomicU64 = AtomicU64::new(0);
pub(crate) static COUNT_MUNMAP_FAILED: AtomicU64 = AtomicU64::new(0);
#[derive(Default)]
pub struct MmapStats;
impl fmt::Debug for MmapStats {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("MmapStats")
.field("active", &self.active_segment())
.field("ftruncate_failed", &self.ftruncate_failed())
.field("map_failed", &self.map_failed())
.field("unmap_failed", &self.unmap_failed())
.finish()
}
}
impl MmapStats {
#[inline(always)]
pub fn active_segment(&self) -> u64 {
COUNT_ACTIVE_SEGMENT.load(Ordering::Relaxed)
}
#[inline(always)]
pub fn ftruncate_failed(&self) -> u64 {
COUNT_FTRUNCATE_FAILED.load(Ordering::Relaxed)
}
#[inline(always)]
pub fn map_failed(&self) -> u64 {
COUNT_MMAP_FAILED.load(Ordering::Relaxed)
}
#[inline(always)]
pub fn unmap_failed(&self) -> u64 {
COUNT_MUNMAP_FAILED.load(Ordering::Relaxed)
}
}