/* * pmem_drain -- wait for any PM stores to drain from HW buffers */ void pmem_drain(void) { LOG(10, NULL); Func_drain(); }
void BackendManager::Sync(BackendType type, void *address, size_t length) { switch (type) { case BackendType::MM: { // Nothing to do here } break; case BackendType::NVM: { // flush writes to NVM Func_flush(address, length); Func_drain(); clflush_count++; } break; case BackendType::SSD: case BackendType::HDD: { // sync the mmap'ed file to SSD or HDD int status = msync(data_file_address, data_file_len, MS_SYNC); if (status != 0) { perror("msync"); exit(EXIT_FAILURE); } msync_count++; } break; case BackendType::INVALID: default: { // Nothing to do here } break; } }