Example #1
0
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;
  }
}
Example #2
0
File: pmem.c Project: jxy859/nvml
/*
 * pmem_flush -- flush processor cache for the given range
 */
void
pmem_flush(void *addr, size_t len)
{
	LOG(10, "addr %p len %zu", addr, len);

	VALGRIND_DO_CHECK_MEM_IS_ADDRESSABLE(addr, len);

	Func_flush(addr, len);
}