Program Listing for File StoreFile.cpp¶
↰ Return to documentation for file (umap/store/StoreFile.cpp)
//////////////////////////////////////////////////////////////////////////////
// Copyright 2017-2020 Lawrence Livermore National Security, LLC and other
// UMAP Project Developers. See the top-level LICENSE file for details.
//
// SPDX-License-Identifier: LGPL-2.1-only
//////////////////////////////////////////////////////////////////////////////
#include <unistd.h>
#include <stdio.h>
#include "StoreFile.h"
#include <iostream>
#include <sstream>
#include <string.h>
#include "umap/store/Store.hpp"
#include "umap/util/Macros.hpp"
namespace Umap {
StoreFile::StoreFile(void* _region_, size_t _rsize_, size_t _alignsize_, int _fd_)
: region{_region_}, rsize{_rsize_}, alignsize{_alignsize_}, fd{_fd_}
{
UMAP_LOG(Debug,
"region: " << region << " rsize: " << rsize
<< " alignsize: " << alignsize << " fd: " << fd);
}
ssize_t StoreFile::read_from_store(char* buf, size_t nb, off_t off)
{
size_t rval = 0;
UMAP_LOG(Debug, "pread(fd=" << fd << ", buf=" << (void*)buf
<< ", nb=" << nb << ", off=" << off << ")";);
rval = pread(fd, buf, nb, off);
if (rval == -1) {
int eno = errno;
UMAP_ERROR("pread(fd=" << fd << ", buf=" << (void*)buf
<< ", nb=" << nb << ", off=" << off
<< "): Failed - " << strerror(eno));
}
return rval;
}
ssize_t StoreFile::write_to_store(char* buf, size_t nb, off_t off)
{
size_t rval = 0;
UMAP_LOG(Debug, "pwrite(fd=" << fd << ", buf=" << (void*)buf
<< ", nb=" << nb << ", off=" << off << ")";);
rval = pwrite(fd, buf, nb, off);
if (rval == -1) {
int eno = errno;
UMAP_ERROR("pwrite(fd=" << fd << ", buf=" << (void*)buf
<< ", nb=" << nb << ", off=" << off
<< "): Failed - " << strerror(eno));
}
return rval;
}
}