Exemple #1
0
/*
 * pmem_drain -- wait for any PM stores to drain from HW buffers
 */
void
pmem_drain(void)
{
	LOG(10, NULL);

	Func_drain();
}
Exemple #2
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;
  }
}