commit 3f20a29: [Minor] Add method to extract shared memory from RAII ownership

Vsevolod Stakhov vsevolod at rspamd.com
Sun Oct 9 22:42:03 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-10-09 23:34:42 +0100
URL: https://github.com/rspamd/rspamd/commit/3f20a29a6ea7b1406751a9e68ad863ba46d78397 (HEAD -> master)

[Minor] Add method to extract shared memory from RAII ownership

---
 src/libutil/cxx/locked_file.hxx | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/libutil/cxx/locked_file.hxx b/src/libutil/cxx/locked_file.hxx
index ce25b0a5a..94561a2d4 100644
--- a/src/libutil/cxx/locked_file.hxx
+++ b/src/libutil/cxx/locked_file.hxx
@@ -112,7 +112,15 @@ struct raii_mmaped_locked_file final {
 	~raii_mmaped_locked_file();
 	static auto mmap_shared(raii_locked_file &&file, int flags) -> tl::expected<raii_mmaped_locked_file, std::string>;
 	static auto mmap_shared(const char *fname, int open_flags, int mmap_flags) -> tl::expected<raii_mmaped_locked_file, std::string>;
+	// Returns a constant pointer to the underlying map
 	auto get_map() const -> void* {return map;}
+	// Passes the ownership of the mmaped memory to the callee
+	auto steal_map() -> std::tuple<void *, std::size_t> {
+		auto ret = std::make_tuple(this->map, file.get_stat().st_size);
+		this->map = nullptr;
+		return ret;
+	}
+
 	auto get_size() const -> std::size_t { return file.get_stat().st_size; }
 
 	raii_mmaped_locked_file& operator=(raii_mmaped_locked_file &&other) noexcept {


More information about the Commits mailing list