blob: 4718121dc45d5263db0c02b13d5e7ff5b7e9b121 [file] [log] [blame]
William A. Kennington III891e6a32022-05-17 16:35:03 -07001#include <stdplus/fd/mmap.hpp>
2#include <stdplus/util/cexec.hpp>
3
4namespace stdplus
5{
6namespace fd
7{
8
William A. Kennington III8e20b6b2025-01-07 14:02:35 -08009MMap::MMap(Fd& fd, size_t window_size, ProtFlags prot, MMapFlags flags,
10 off_t offset) :
11 mapping(fd.mmap(nullptr, window_size, prot, flags, offset), fd)
12{}
William A. Kennington III891e6a32022-05-17 16:35:03 -070013MMap::MMap(Fd& fd, std::span<std::byte> window, ProtFlags prot, MMapFlags flags,
William A. Kennington III8e20b6b2025-01-07 14:02:35 -080014 off_t offset) :
15 mapping(fd.mmap(window.data(), window.size(), prot, flags, offset), fd)
Patrick Williamsd1984dd2023-05-10 16:12:44 -050016{}
William A. Kennington III891e6a32022-05-17 16:35:03 -070017
18std::span<std::byte> MMap::get() const
19{
20 return *mapping;
21}
22
23void MMap::drop(std::span<std::byte>&& mapping, std::reference_wrapper<Fd>& fd)
24{
25 fd.get().munmap(mapping);
26}
27
28} // namespace fd
29} // namespace stdplus