extern "C" int munmap(void *addr, size_t length) { DMTCP_PLUGIN_DISABLE_CKPT(); int retval = _real_munmap(addr, length); DMTCP_PLUGIN_ENABLE_CKPT(); return retval; }
extern "C" int munmap(void *addr, size_t length) { MALLOC_FAMILY_WRAPPER_HEADER_TYPED(int, munmap, addr, length); if (SYNC_IS_REPLAY) { WRAPPER_REPLAY_START(munmap); _real_pthread_mutex_lock(&allocation_lock); retval = _real_munmap (addr, length); JASSERT (retval == (int)(unsigned long)GET_COMMON(my_entry, retval)); _real_pthread_mutex_unlock(&allocation_lock); WRAPPER_REPLAY_END(munmap); } else if (SYNC_IS_RECORD) { _real_pthread_mutex_lock(&mmap_lock); retval = _real_munmap (addr, length); WRAPPER_LOG_WRITE_ENTRY(my_entry); _real_pthread_mutex_unlock(&mmap_lock); } return retval; }
static void unmapRestoreArgv() { long page_size = sysconf(_SC_PAGESIZE); long page_mask = ~(page_size - 1); if (_mtcpRestoreArgvStartAddr != NULL) { JTRACE("Unmapping previously mmap()'d pages (that were mmap()'d for restoring argv"); size_t len; len = (dmtcp::ProcessInfo::instance().argvSize() + page_size) & page_mask; JASSERT(_real_munmap(_mtcpRestoreArgvStartAddr, len) == 0) (_mtcpRestoreArgvStartAddr) (len) .Text ("Failed to munmap extra pages that were mapped during restart"); } }