use std::sync::atomic::{AtomicU64, Ordering};
static REFLINKED_BYTES: AtomicU64 = AtomicU64::new(0);
static HARDLINKED_BYTES: AtomicU64 = AtomicU64::new(0);
static COPIED_BYTES: AtomicU64 = AtomicU64::new(0);
pub fn record_reflinked(bytes: u64) {
REFLINKED_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_hardlinked(bytes: u64) {
HARDLINKED_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_copied(bytes: u64) {
COPIED_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn reflinked_bytes() -> u64 {
REFLINKED_BYTES.load(Ordering::Relaxed)
}
pub fn hardlinked_bytes() -> u64 {
HARDLINKED_BYTES.load(Ordering::Relaxed)
}
pub fn copied_bytes() -> u64 {
COPIED_BYTES.load(Ordering::Relaxed)
}
static STORE_REFLINKED_BYTES: AtomicU64 = AtomicU64::new(0);
static STORE_HARDLINKED_BYTES: AtomicU64 = AtomicU64::new(0);
static STORE_COPIED_BYTES: AtomicU64 = AtomicU64::new(0);
pub fn record_store_reflinked(bytes: u64) {
STORE_REFLINKED_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_store_hardlinked(bytes: u64) {
STORE_HARDLINKED_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_store_copied(bytes: u64) {
STORE_COPIED_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn store_reflinked_bytes() -> u64 {
STORE_REFLINKED_BYTES.load(Ordering::Relaxed)
}
pub fn store_hardlinked_bytes() -> u64 {
STORE_HARDLINKED_BYTES.load(Ordering::Relaxed)
}
pub fn store_copied_bytes() -> u64 {
STORE_COPIED_BYTES.load(Ordering::Relaxed)
}
static STORE_COPY_CROSS_DEVICE_BYTES: AtomicU64 = AtomicU64::new(0);
static STORE_COPY_PERMISSION_BYTES: AtomicU64 = AtomicU64::new(0);
static STORE_COPY_INELIGIBLE_BYTES: AtomicU64 = AtomicU64::new(0);
static STORE_COPY_OTHER_BYTES: AtomicU64 = AtomicU64::new(0);
static RESTORE_COPY_CROSS_DEVICE_BYTES: AtomicU64 = AtomicU64::new(0);
static RESTORE_COPY_PERMISSION_BYTES: AtomicU64 = AtomicU64::new(0);
static RESTORE_COPY_EXCLUSIVE_BYTES: AtomicU64 = AtomicU64::new(0);
static RESTORE_COPY_OTHER_BYTES: AtomicU64 = AtomicU64::new(0);
pub fn record_store_copy_cross_device(bytes: u64) {
STORE_COPY_CROSS_DEVICE_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_store_copy_permission(bytes: u64) {
STORE_COPY_PERMISSION_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_store_copy_ineligible(bytes: u64) {
STORE_COPY_INELIGIBLE_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_store_copy_other(bytes: u64) {
STORE_COPY_OTHER_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_restore_copy_cross_device(bytes: u64) {
RESTORE_COPY_CROSS_DEVICE_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_restore_copy_permission(bytes: u64) {
RESTORE_COPY_PERMISSION_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
#[cfg(unix)]
pub fn record_restore_copy_exclusive(bytes: u64) {
RESTORE_COPY_EXCLUSIVE_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn record_restore_copy_other(bytes: u64) {
RESTORE_COPY_OTHER_BYTES.fetch_add(bytes, Ordering::Relaxed);
}
pub fn store_copy_cross_device_bytes() -> u64 {
STORE_COPY_CROSS_DEVICE_BYTES.load(Ordering::Relaxed)
}
pub fn store_copy_permission_bytes() -> u64 {
STORE_COPY_PERMISSION_BYTES.load(Ordering::Relaxed)
}
pub fn store_copy_ineligible_bytes() -> u64 {
STORE_COPY_INELIGIBLE_BYTES.load(Ordering::Relaxed)
}
pub fn store_copy_other_bytes() -> u64 {
STORE_COPY_OTHER_BYTES.load(Ordering::Relaxed)
}
pub fn restore_copy_cross_device_bytes() -> u64 {
RESTORE_COPY_CROSS_DEVICE_BYTES.load(Ordering::Relaxed)
}
pub fn restore_copy_permission_bytes() -> u64 {
RESTORE_COPY_PERMISSION_BYTES.load(Ordering::Relaxed)
}
pub fn restore_copy_exclusive_bytes() -> u64 {
RESTORE_COPY_EXCLUSIVE_BYTES.load(Ordering::Relaxed)
}
pub fn restore_copy_other_bytes() -> u64 {
RESTORE_COPY_OTHER_BYTES.load(Ordering::Relaxed)
}