#include <stdplus/fd/mmap.hpp>
#include <stdplus/util/cexec.hpp>

namespace stdplus
{
namespace fd
{

MMap::MMap(Fd& fd, std::span<std::byte> window, ProtFlags prot, MMapFlags flags,
           off_t offset) :
    mapping(fd.mmap(window, 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
