bool RecyclerPageAllocator::ResetWriteWatch() { if (allocFlags != MEM_WRITE_WATCH) { return false; } GCETW(GC_RESETWRITEWATCH_START, (this)); SuspendIdleDecommit(); bool success = true; // Only reset write watch on allocated pages if (!ResetWriteWatch(&segments) || !ResetWriteWatch(&decommitSegments) || !ResetAllWriteWatch(&fullSegments) || !ResetAllWriteWatch(&largeSegments)) { allocFlags = 0; success = false; } ResumeIdleDecommit(); GCETW(GC_RESETWRITEWATCH_STOP, (this)); return success; }
int vm_reset_write_watch(void * addr, size_t size) { #ifdef HAVE_VM_WRITE_WATCH #ifdef HAVE_WIN32_VM int ret_code = ResetWriteWatch(addr, size); return ret_code == 0 ? 0 : -1; #endif #endif // Unsupported return -1; }