use super::memory_tracker::get_tracker;
use crate::capture::backends::core_types::{AllocationInfo, MemoryStats, TrackingResult};
pub fn get_global_tracker() -> std::sync::Arc<super::MemoryTracker> {
get_tracker()
}
pub fn track_allocation(ptr: usize, size: usize) -> TrackingResult<()> {
let tracker = get_tracker();
tracker.track_allocation(ptr, size)
}
pub fn track_deallocation(ptr: usize) -> TrackingResult<bool> {
let tracker = get_tracker();
tracker.track_deallocation(ptr)
}
pub fn get_active_allocations() -> TrackingResult<Vec<AllocationInfo>> {
let tracker = get_tracker();
tracker.get_active_allocations()
}
pub fn get_stats() -> TrackingResult<MemoryStats> {
let tracker = get_tracker();
tracker.get_stats()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_get_global_tracker() {
let t1 = get_global_tracker();
let t2 = get_global_tracker();
assert!(std::sync::Arc::ptr_eq(&t1, &t2));
}
#[test]
fn test_track_allocation() {
let result = track_allocation(0x1000, 64);
assert!(result.is_ok());
let active = get_active_allocations().unwrap();
assert!(!active.is_empty());
let _ = track_deallocation(0x1000);
}
}