blob: 4718121dc45d5263db0c02b13d5e7ff5b7e9b121 [file] [log] [blame]
#include <stdplus/fd/mmap.hpp>
#include <stdplus/util/cexec.hpp>
namespace stdplus
{
namespace fd
{
MMap::MMap(Fd& fd, size_t window_size, ProtFlags prot, MMapFlags flags,
off_t offset) :
mapping(fd.mmap(nullptr, window_size, prot, flags, offset), fd)
{}
MMap::MMap(Fd& fd, std::span<std::byte> window, ProtFlags prot, MMapFlags flags,
off_t offset) :
mapping(fd.mmap(window.data(), window.size(), prot, flags, offset), fd)
{}
std::span<std::byte> MMap::get() const
{
return *mapping;
}
void MMap::drop(std::span<std::byte>&& mapping, std::reference_wrapper<Fd>& fd)
{
fd.get().munmap(mapping);
}
} // namespace fd
} // namespace stdplus