pub trait RefCounter: Send + Sync {
// Required methods
fn acquire(&self) -> Result<u32>;
fn release(&self) -> Result<u32>;
fn count(&self) -> Result<u32>;
fn try_lock(&self) -> Result<bool>;
fn unlock(&self) -> Result<()>;
}Expand description
Core trait for kernel-level reference counting.
Implementations must guarantee that reference counts are automatically decremented by the kernel when a process crashes or exits abnormally.
This is NOT a userspace reference count - it relies on OS primitives that the kernel manages.
Required Methods§
Sourcefn acquire(&self) -> Result<u32>
fn acquire(&self) -> Result<u32>
Acquire a reference (increment count).
Returns the count AFTER incrementing. First acquisition (0→1) should trigger on_first_acquire callback.
Sourcefn release(&self) -> Result<u32>
fn release(&self) -> Result<u32>
Release a reference (decrement count).
Returns the count AFTER decrementing. Last release (1→0) should trigger on_last_release callback.
Note: This is called for graceful shutdown. On crash, the kernel handles the decrement automatically.
Sourcefn count(&self) -> Result<u32>
fn count(&self) -> Result<u32>
Get current reference count.
This may be slightly stale in multi-process scenarios. Use for diagnostics, not critical decisions.