(&mut self)
| 454 | |
| 455 | impl Drop for MmapVectorSegment { |
| 456 | fn drop(&mut self) { |
| 457 | if !self.base.is_null() && self.mmap_size > 0 { |
| 458 | if self.drop_policy.dontneed_on_drop() { |
| 459 | let data_bytes = self.mmap_size.saturating_sub(HEADER_SIZE + FOOTER_SIZE); |
| 460 | if data_bytes > 0 { |
| 461 | unsafe { |
| 462 | libc::madvise( |
| 463 | self.base as *mut libc::c_void, |
| 464 | self.mmap_size, |
| 465 | libc::MADV_DONTNEED, |
| 466 | ); |
| 467 | } |
| 468 | observability::DONTNEED_COUNT.fetch_add(1, Ordering::Relaxed); |
| 469 | } |
| 470 | } |
| 471 | unsafe { |
| 472 | libc::munmap(self.base as *mut libc::c_void, self.mmap_size); |
| 473 | } |
| 474 | } |
| 475 | } |
| 476 | } |
| 477 | |
| 478 | #[cfg(test)] |
nothing calls this directly
no test coverage detected