susumu.yata
null+****@clear*****
Thu Dec 6 18:43:19 JST 2012
susumu.yata 2012-12-06 18:43:19 +0900 (Thu, 06 Dec 2012) New Revision: 7dcd1d9683c047c9eb1284db5af73c88eed3c44f https://github.com/groonga/grnxx/commit/7dcd1d9683c047c9eb1284db5af73c88eed3c44f Log: Update the interface of grnxx::io::View. Modified files: lib/io/pool-impl.cpp lib/io/pool-impl.hpp lib/io/pool.hpp lib/io/view-posix.cpp lib/io/view-posix.hpp lib/io/view-windows.cpp lib/io/view-windows.hpp lib/io/view.cpp lib/io/view.hpp test/test_io_view.cpp Modified: lib/io/pool-impl.cpp (+7 -7) =================================================================== --- lib/io/pool-impl.cpp 2012-12-06 18:19:24 +0900 (38fa4e5) +++ lib/io/pool-impl.cpp 2012-12-06 18:43:19 +0900 (06823c0) @@ -362,7 +362,7 @@ void PoolImpl::open_regular_pool(const char *path, Flags flags, void PoolImpl::setup_header(const PoolOptions &options) { if (files_[0]) { files_[0].resize(POOL_HEADER_CHUNK_SIZE); - header_chunk_ = View(files_[0], get_view_flags(), + header_chunk_ = View(get_view_flags(), files_[0], 0, POOL_HEADER_CHUNK_SIZE); } else { header_chunk_ = View(get_view_flags(), POOL_HEADER_CHUNK_SIZE); @@ -373,7 +373,7 @@ void PoolImpl::setup_header(const PoolOptions &options) { } void PoolImpl::check_header() { - header_chunk_ = View(files_[0], get_view_flags(), 0, POOL_HEADER_CHUNK_SIZE); + header_chunk_ = View(get_view_flags(), files_[0], 0, POOL_HEADER_CHUNK_SIZE); header_ = static_cast<PoolHeader *>(header_chunk_.address()); // TODO: Check the header. @@ -447,18 +447,18 @@ View PoolImpl::mmap_chunk(const ChunkInfo &chunk_info) { } } - return View(file, get_view_flags(), + return View(get_view_flags(), file, chunk_info.offset(), chunk_info.size()); } } -Flags PoolImpl::get_view_flags() const { +ViewFlags PoolImpl::get_view_flags() const { if (flags_ & GRNXX_IO_ANONYMOUS) { - return (flags_ & GRNXX_IO_HUGE_TLB) ? GRNXX_IO_HUGE_TLB : Flags::none(); + return (flags_ & GRNXX_IO_HUGE_TLB) ? VIEW_HUGE_TLB : ViewFlags::none(); } else { - Flags view_flags = GRNXX_IO_SHARED; + ViewFlags view_flags = VIEW_SHARED; if (flags_ & GRNXX_IO_READ_ONLY) { - view_flags |= GRNXX_IO_READ_ONLY; + view_flags |= VIEW_READ_ONLY; } return view_flags; } Modified: lib/io/pool-impl.hpp (+1 -1) =================================================================== --- lib/io/pool-impl.hpp 2012-12-06 18:19:24 +0900 (557ae5a) +++ lib/io/pool-impl.hpp 2012-12-06 18:43:19 +0900 (ec28c32) @@ -101,7 +101,7 @@ class PoolImpl { void mmap_block_info_chunk(uint16_t chunk_id); View mmap_chunk(const ChunkInfo &chunk_info); - Flags get_view_flags() const; + ViewFlags get_view_flags() const; String generate_path(uint16_t file_id) const; Modified: lib/io/pool.hpp (+1 -0) =================================================================== --- lib/io/pool.hpp 2012-12-06 18:19:24 +0900 (da1367f) +++ lib/io/pool.hpp 2012-12-06 18:43:19 +0900 (dce25f3) @@ -21,6 +21,7 @@ #include "../mutex.hpp" #include "../recycler.hpp" #include "chunk.hpp" +#include "flags.hpp" namespace grnxx { namespace io { Modified: lib/io/view-posix.cpp (+20 -20) =================================================================== --- lib/io/view-posix.cpp 2012-12-06 18:19:24 +0900 (4aa7031) +++ lib/io/view-posix.cpp 2012-12-06 18:43:19 +0900 (4b4bd68) @@ -44,7 +44,7 @@ ViewImpl::~ViewImpl() { } } -std::unique_ptr<ViewImpl> ViewImpl::map(Flags flags, uint64_t size) { +std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, uint64_t size) { std::unique_ptr<ViewImpl> view(new (std::nothrow) ViewImpl); if (!view) { GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; @@ -54,24 +54,24 @@ std::unique_ptr<ViewImpl> ViewImpl::map(Flags flags, uint64_t size) { return view; } -std::unique_ptr<ViewImpl> ViewImpl::map(const File &file, Flags flags) { +std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, const File &file) { std::unique_ptr<ViewImpl> view(new (std::nothrow) ViewImpl); if (!view) { GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; GRNXX_THROW(); } - view->map_on_file(file, flags, 0, file.size()); + view->map_on_file(flags, file, 0, file.size()); return view; } -std::unique_ptr<ViewImpl> ViewImpl::map(const File &file, Flags flags, +std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, const File &file, uint64_t offset, uint64_t size) { std::unique_ptr<ViewImpl> view(new (std::nothrow) ViewImpl); if (!view) { GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; GRNXX_THROW(); } - view->map_on_file(file, flags, offset, size); + view->map_on_file(flags, file, offset, size); return view; } @@ -97,13 +97,13 @@ void ViewImpl::sync(uint64_t offset, uint64_t size) { } ViewImpl::ViewImpl() - : file_(), flags_(Flags::none()), + : file_(), flags_(ViewFlags::none()), address_(MAP_FAILED), offset_(0), size_(0) {} #ifdef MAP_HUGETLB -void ViewImpl::map_on_memory(Flags flags, uint64_t size) { +void ViewImpl::map_on_memory(ViewFlags flags, uint64_t size) { #else // MAP_HUGETLB -void ViewImpl::map_on_memory(Flags, uint64_t size) { +void ViewImpl::map_on_memory(ViewFlags, uint64_t size) { #endif // MAP_HUGETLB if ((size == 0) || (size > std::numeric_limits<size_t>::max())) { GRNXX_ERROR() << "invalid argument: size = " << size << ": (0, " @@ -111,16 +111,16 @@ void ViewImpl::map_on_memory(Flags, uint64_t size) { GRNXX_THROW(); } - flags_ = GRNXX_IO_PRIVATE | GRNXX_IO_ANONYMOUS; + flags_ = VIEW_PRIVATE | VIEW_ANONYMOUS; size_ = size; int map_flags = MAP_PRIVATE | MAP_ANONYMOUS; #ifdef MAP_HUGETLB - if (flags & GRNXX_IO_HUGE_TLB) { + if (flags & VIEW_HUGE_TLB) { address_ = ::mmap(nullptr, size, PROT_READ | PROT_WRITE, map_flags | MAP_HUGETLB, -1, 0); if (address_ != MAP_FAILED) { - flags_ |= GRNXX_IO_HUGE_TLB; + flags_ |= VIEW_HUGE_TLB; } } #endif // MAP_HUGETLB @@ -135,8 +135,8 @@ void ViewImpl::map_on_memory(Flags, uint64_t size) { } } -void ViewImpl::map_on_file(const File &file, Flags flags, uint64_t offset, - uint64_t size) { +void ViewImpl::map_on_file(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size) { if ((size == 0) || (size > std::numeric_limits<size_t>::max())) { GRNXX_ERROR() << "invalid argument: size = " << size << ": (0, " << std::numeric_limits<size_t>::max() << ']'; @@ -154,21 +154,21 @@ void ViewImpl::map_on_file(const File &file, Flags flags, uint64_t offset, int protection_flags = PROT_READ | PROT_WRITE; if ((file.flags() & FILE_READ_ONLY) || - ((~file.flags() & FILE_WRITE_ONLY) && (flags & GRNXX_IO_READ_ONLY))) { - flags_ |= GRNXX_IO_READ_ONLY; + ((~file.flags() & FILE_WRITE_ONLY) && (flags & VIEW_READ_ONLY))) { + flags_ |= VIEW_READ_ONLY; protection_flags = PROT_READ; } else if ((file.flags() & FILE_WRITE_ONLY) || - (flags & GRNXX_IO_WRITE_ONLY)) { - flags_ |= GRNXX_IO_WRITE_ONLY; + (flags & VIEW_WRITE_ONLY)) { + flags_ |= VIEW_WRITE_ONLY; protection_flags = PROT_WRITE; } int map_flags; - if ((flags & GRNXX_IO_SHARED) || (~flags & GRNXX_IO_PRIVATE)) { - flags_ |= GRNXX_IO_SHARED; + if ((flags & VIEW_SHARED) || (~flags & VIEW_PRIVATE)) { + flags_ |= VIEW_SHARED; map_flags = MAP_SHARED; } else { - flags_ |= GRNXX_IO_PRIVATE; + flags_ |= VIEW_PRIVATE; map_flags = MAP_PRIVATE; } Modified: lib/io/view-posix.hpp (+8 -8) =================================================================== --- lib/io/view-posix.hpp 2012-12-06 18:19:24 +0900 (8bfac82) +++ lib/io/view-posix.hpp 2012-12-06 18:43:19 +0900 (afcc126) @@ -29,9 +29,9 @@ class ViewImpl { public: ~ViewImpl(); - static std::unique_ptr<ViewImpl> map(Flags flags, uint64_t size); - static std::unique_ptr<ViewImpl> map(const File &file, Flags flags); - static std::unique_ptr<ViewImpl> map(const File &file, Flags flags, + static std::unique_ptr<ViewImpl> map(ViewFlags flags, uint64_t size); + static std::unique_ptr<ViewImpl> map(ViewFlags flags, const File &file); + static std::unique_ptr<ViewImpl> map(ViewFlags flags, const File &file, uint64_t offset, uint64_t size); void sync(); @@ -40,7 +40,7 @@ class ViewImpl { File file() const { return file_; } - Flags flags() const { + ViewFlags flags() const { return flags_; } void *address() const { @@ -57,16 +57,16 @@ class ViewImpl { private: File file_; - Flags flags_; + ViewFlags flags_; void *address_; uint64_t offset_; uint64_t size_; ViewImpl(); - void map_on_memory(Flags flags, uint64_t size); - void map_on_file(const File &file, Flags flags, uint64_t offset, - uint64_t size); + void map_on_memory(ViewFlags flags, uint64_t size); + void map_on_file(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size); ViewImpl(const ViewImpl &); ViewImpl &operator=(const ViewImpl &); Modified: lib/io/view-windows.cpp (+18 -18) =================================================================== --- lib/io/view-windows.cpp 2012-12-06 18:19:24 +0900 (4fe14b5) +++ lib/io/view-windows.cpp 2012-12-06 18:43:19 +0900 (7519419) @@ -42,7 +42,7 @@ ViewImpl::~ViewImpl() { } } -std::unique_ptr<ViewImpl> ViewImpl::map(Flags flags, uint64_t size) { +std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, uint64_t size) { if (size == 0) { GRNXX_ERROR() << "invalid argument: size = " << size; GRNXX_THROW(); @@ -57,17 +57,17 @@ std::unique_ptr<ViewImpl> ViewImpl::map(Flags flags, uint64_t size) { return view; } -std::unique_ptr<ViewImpl> ViewImpl::map(const File &file, Flags flags) { +std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, const File &file) { std::unique_ptr<ViewImpl> view(new (std::nothrow) ViewImpl); if (!view) { GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; GRNXX_THROW(); } - view->map_on_file(file, flags, 0, 0); + view->map_on_file(flags, file, 0, 0); return view; } -std::unique_ptr<ViewImpl> ViewImpl::map(const File &file, Flags flags, +std::unique_ptr<ViewImpl> ViewImpl::map(ViewFlags flags, const File &file, uint64_t offset, uint64_t size) { if (size == 0) { GRNXX_ERROR() << "invalid argument: size = " << size; @@ -79,7 +79,7 @@ std::unique_ptr<ViewImpl> ViewImpl::map(const File &file, Flags flags, GRNXX_ERROR() << "new grnxx::io::ViewImpl failed"; GRNXX_THROW(); } - view->map_on_file(file, flags, offset, size); + view->map_on_file(flags, file, offset, size); return view; } @@ -109,11 +109,11 @@ void ViewImpl::sync(uint64_t offset, uint64_t size) { } ViewImpl::ViewImpl() - : file_(), flags_(Flags::none()), handle_(nullptr), + : file_(), flags_(ViewFlags::none()), handle_(nullptr), address_(nullptr), offset_(0), size_(0) {} -void ViewImpl::map_on_memory(Flags, uint64_t size) { - flags_ = GRNXX_IO_PRIVATE | GRNXX_IO_ANONYMOUS; +void ViewImpl::map_on_memory(ViewFlags, uint64_t size) { + flags_ = VIEW_PRIVATE | VIEW_ANONYMOUS; size_ = size; const DWORD size_high = static_cast<DWORD>(size >> 32); @@ -135,14 +135,14 @@ void ViewImpl::map_on_memory(Flags, uint64_t size) { } } -void ViewImpl::map_on_file(const File &file, Flags flags, uint64_t offset, - uint64_t size) { +void ViewImpl::map_on_file(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size) { const uint64_t file_size = file.size(); if (file_size == 0) { GRNXX_ERROR() << "invalid argument: file = " << file; GRNXX_THROW(); } - if (flags & (GRNXX_IO_ANONYMOUS | GRNXX_IO_HUGE_TLB)) { + if (flags & (VIEW_ANONYMOUS | VIEW_HUGE_TLB)) { GRNXX_ERROR() << "invalid argument: flags = " << flags; GRNXX_THROW(); } @@ -164,8 +164,8 @@ void ViewImpl::map_on_file(const File &file, Flags flags, uint64_t offset, int protection_mode = PAGE_READWRITE; DWORD desired_access = FILE_MAP_WRITE; if ((file.flags() & FILE_READ_ONLY) || - ((~file.flags() & FILE_WRITE_ONLY) && (flags & GRNXX_IO_READ_ONLY))) { - flags_ |= GRNXX_IO_READ_ONLY; + ((~file.flags() & FILE_WRITE_ONLY) && (flags & VIEW_READ_ONLY))) { + flags_ |= VIEW_READ_ONLY; protection_mode = PAGE_READONLY; desired_access = FILE_MAP_READ; } else if (file.flags() & FILE_WRITE_ONLY) { @@ -173,19 +173,19 @@ void ViewImpl::map_on_file(const File &file, Flags flags, uint64_t offset, GRNXX_ERROR() << "mapping file is write-only: file = " << file; GRNXX_THROW(); } else { - // GRNXX_IO_WRITE_ONLY is ignored because write-only memory mapping is not + // VIEW_WRITE_ONLY is ignored because write-only memory mapping is not // supported on Windows. protection_mode = PAGE_READWRITE; - if (flags & GRNXX_IO_PRIVATE) { + if (flags & VIEW_PRIVATE) { protection_mode = PAGE_WRITECOPY; desired_access = FILE_MAP_COPY; } } - if ((flags & GRNXX_IO_SHARED) || (~flags & GRNXX_IO_PRIVATE)) { - flags_ |= GRNXX_IO_SHARED; + if ((flags & VIEW_SHARED) || (~flags & VIEW_PRIVATE)) { + flags_ |= VIEW_SHARED; } else { - flags_ |= GRNXX_IO_PRIVATE; + flags_ |= VIEW_PRIVATE; } const DWORD size_high = static_cast<DWORD>((offset + size) >> 32); Modified: lib/io/view-windows.hpp (+8 -8) =================================================================== --- lib/io/view-windows.hpp 2012-12-06 18:19:24 +0900 (ccd67d0) +++ lib/io/view-windows.hpp 2012-12-06 18:43:19 +0900 (9979249) @@ -38,9 +38,9 @@ class ViewImpl { public: ~ViewImpl(); - static std::unique_ptr<ViewImpl> map(Flags flags, uint64_t size); - static std::unique_ptr<ViewImpl> map(const File &file, Flags flags); - static std::unique_ptr<ViewImpl> map(const File &file, Flags flags, + static std::unique_ptr<ViewImpl> map(ViewFlags flags, uint64_t size); + static std::unique_ptr<ViewImpl> map(ViewFlags flags, const File &file); + static std::unique_ptr<ViewImpl> map(ViewFlags flags, const File &file, uint64_t offset, uint64_t size); void sync(); @@ -49,7 +49,7 @@ class ViewImpl { File file() const { return file_; } - Flags flags() const { + ViewFlags flags() const { return flags_; } void *address() const { @@ -66,7 +66,7 @@ class ViewImpl { private: File file_; - Flags flags_; + ViewFlags flags_; HANDLE handle_; void *address_; uint64_t offset_; @@ -74,9 +74,9 @@ class ViewImpl { ViewImpl(); - void map_on_memory(Flags flags, uint64_t size); - void map_on_file(const File &file, Flags flags, uint64_t offset, - uint64_t size); + void map_on_memory(ViewFlags flags, uint64_t size); + void map_on_file(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size); ViewImpl(const ViewImpl &); ViewImpl &operator=(const ViewImpl &); Modified: lib/io/view.cpp (+32 -7) =================================================================== --- lib/io/view.cpp 2012-12-06 18:19:24 +0900 (12e2258) +++ lib/io/view.cpp 2012-12-06 18:43:19 +0900 (eec0fa1) @@ -25,16 +25,41 @@ namespace grnxx { namespace io { +#define GRNXX_FLAGS_WRITE(flag) do { \ + if (flags & flag) { \ + if (!is_first) { \ + builder << " | "; \ + } \ + builder << #flag; \ + is_first = false; \ + } \ +} while (false) + +StringBuilder &operator<<(StringBuilder &builder, ViewFlags flags) { + if (flags) { + bool is_first = true; + GRNXX_FLAGS_WRITE(VIEW_READ_ONLY); + GRNXX_FLAGS_WRITE(VIEW_WRITE_ONLY); + GRNXX_FLAGS_WRITE(VIEW_ANONYMOUS); + GRNXX_FLAGS_WRITE(VIEW_HUGE_TLB); + GRNXX_FLAGS_WRITE(VIEW_PRIVATE); + GRNXX_FLAGS_WRITE(VIEW_SHARED); + return builder; + } else { + return builder << "0"; + } +} + View::View() : impl_() {} -View::View(Flags flags, uint64_t size) +View::View(ViewFlags flags, uint64_t size) : impl_(ViewImpl::map(flags, size)) {} -View::View(const File &file, Flags flags) - : impl_(ViewImpl::map(file, flags)) {} +View::View(ViewFlags flags, const File &file) + : impl_(ViewImpl::map(flags, file)) {} -View::View(const File &file, Flags flags, uint64_t offset, uint64_t size) - : impl_(ViewImpl::map(file, flags, offset, size)) {} +View::View(ViewFlags flags, const File &file, uint64_t offset, uint64_t size) + : impl_(ViewImpl::map(flags, file, offset, size)) {} View::~View() {} @@ -69,8 +94,8 @@ File View::file() const { return impl_ ? impl_->file() : File(); } -Flags View::flags() const { - return impl_ ? impl_->flags() : Flags::none(); +ViewFlags View::flags() const { + return impl_ ? impl_->flags() : ViewFlags::none(); } void *View::address() const { Modified: lib/io/view.hpp (+59 -12) =================================================================== --- lib/io/view.hpp 2012-12-06 18:19:24 +0900 (f865cb2) +++ lib/io/view.hpp 2012-12-06 18:43:19 +0900 (3c79758) @@ -15,29 +15,62 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef GRNXX_IO_VIEW_HPP -#define GRNXX_IO_VIEW_HPP +#ifndef VIEW_VIEW_HPP +#define VIEW_VIEW_HPP #include "file.hpp" -#include "flags.hpp" namespace grnxx { namespace io { +class ViewFlagsIdentifier {}; +typedef FlagsImpl<ViewFlagsIdentifier> ViewFlags; + +// VIEW_WRITE_ONLY is ignored if VIEW_READ_ONLY is enabled. +// VIEW_READ_ONLY is disabled if VIEW_CREATE is specified. +// If both flags are not set, and object is created/opened/mapped in +// read-write mode. + +// Read-only mode. +const ViewFlags VIEW_READ_ONLY = ViewFlags::define(0x0001); +// Write-only mode. +const ViewFlags VIEW_WRITE_ONLY = ViewFlags::define(0x0002); + +// VIEW_ANONYMOUS disables all the flags other than GRNXX_HUGE_TLB and +// enables VIEW_PRIVATE. +// VIEW_CREATE disables VIEW_READ_ONLY. +// VIEW_OPEN is enabled if VIEW_CREATE is not specified. +// If both VIEW_CREATE and VIEW_OPEN are set, it first tries to create +// an object and, if already exists, then tries to open the existing object. +// VIEW_TEMPORARY disables other flags. + +// Anonymous mode. +const ViewFlags VIEW_ANONYMOUS = ViewFlags::define(0x0010); +// Try to use huge pages. +const ViewFlags VIEW_HUGE_TLB = ViewFlags::define(0x0080); + +// VIEW_PRIVATE is ignored if VIEW_SHARED is enabled. + +// Private mode. +const ViewFlags VIEW_PRIVATE = ViewFlags::define(0x1000); +// Shared mode. +const ViewFlags VIEW_SHARED = ViewFlags::define(0x2000); + +StringBuilder &operator<<(StringBuilder &builder, ViewFlags flags); + class ViewImpl; class View { public: View(); - // Create an anonymou memory mapping. - // Available flags are GRNXX_IO_HUGE_TLB only. - explicit View(Flags flags, uint64_t size); + // Create an anonymous memory mapping. + // Available flags are VIEW_HUGE_TLB only. + explicit View(ViewFlags flags, uint64_t size); // Create a file-backed memory mapping. // Available flags are as follows: - // GRNXX_IO_READ_ONLY, GRNXX_IO_WRITE_ONLY, GRNXX_IO_SHARED, - // GRNXX_IO_PRIVATE. - View(const File &file, Flags flags); - View(const File &file, Flags flags, uint64_t offset, uint64_t size); + // VIEW_READ_ONLY, VIEW_WRITE_ONLY, VIEW_SHARED, VIEW_PRIVATE. + View(ViewFlags flags, const File &file); + View(ViewFlags flags, const File &file, uint64_t offset, uint64_t size); ~View(); View(const View &view); @@ -50,11 +83,25 @@ class View { return static_cast<bool>(impl_); } + void open(ViewFlags flags, uint64_t size) { + *this = View(flags, size); + } + void open(ViewFlags flags, const File &file) { + *this = View(flags, file); + } + void open(ViewFlags flags, const File &file, + uint64_t offset, uint64_t size) { + *this = View(flags, file, offset, size); + } + void close() { + *this = View(); + } + void sync(); void sync(uint64_t offset, uint64_t size); File file() const; - Flags flags() const; + ViewFlags flags() const; void *address() const; uint64_t offset() const; uint64_t size() const; @@ -78,4 +125,4 @@ inline StringBuilder &operator<<(StringBuilder &builder, const View &view) { } // namespace io } // namespace grnxx -#endif // GRNXX_IO_VIEW_HPP +#endif // VIEW_VIEW_HPP Modified: test/test_io_view.cpp (+10 -11) =================================================================== --- test/test_io_view.cpp 2012-12-06 18:19:24 +0900 (741cdcc) +++ test/test_io_view.cpp 2012-12-06 18:43:19 +0900 (dcf9f20) @@ -26,13 +26,13 @@ void test_anonymous_mmap() { grnxx::io::View view; assert(!view); - view = grnxx::io::View(grnxx::io::Flags(), MMAP_SIZE); + view.open(grnxx::io::ViewFlags::none(), MMAP_SIZE); GRNXX_NOTICE() << "view = " << view; assert(view); - assert(view.flags() == (grnxx::io::GRNXX_IO_ANONYMOUS | - grnxx::io::GRNXX_IO_PRIVATE)); + assert(view.flags() == (grnxx::io::VIEW_ANONYMOUS | + grnxx::io::VIEW_PRIVATE)); assert(view.address() != nullptr); assert(view.offset() == 0); assert(view.size() == MMAP_SIZE); @@ -51,12 +51,12 @@ void test_file_backed_mmap() { assert(file.size() == FILE_SIZE); // Create a memory mapping. - grnxx::io::View view(file, grnxx::io::GRNXX_IO_SHARED); + grnxx::io::View view(grnxx::io::VIEW_SHARED, file); GRNXX_NOTICE() << "view = " << view; assert(view); - assert(view.flags() == grnxx::io::GRNXX_IO_SHARED); + assert(view.flags() == grnxx::io::VIEW_SHARED); assert(view.address() != nullptr); assert(view.offset() == 0); assert(view.size() == FILE_SIZE); @@ -64,12 +64,12 @@ void test_file_backed_mmap() { std::memset(view.address(), 'x', view.size()); // Create a memory mapping. - view = grnxx::io::View(file, grnxx::io::GRNXX_IO_PRIVATE); + view.open(grnxx::io::VIEW_PRIVATE, file); GRNXX_NOTICE() << "view = " << view; assert(view); - assert(view.flags() == grnxx::io::GRNXX_IO_PRIVATE); + assert(view.flags() == grnxx::io::VIEW_PRIVATE); assert(view.address() != nullptr); assert(view.offset() == 0); assert(view.size() == FILE_SIZE); @@ -80,14 +80,13 @@ void test_file_backed_mmap() { std::memset(view.address(), 'z', view.size()); // Create a memory mapping. - view = grnxx::io::View(file, grnxx::io::GRNXX_IO_SHARED | - grnxx::io::GRNXX_IO_PRIVATE, - FILE_SIZE / 2, MMAP_SIZE); + view.open(grnxx::io::VIEW_SHARED | grnxx::io::VIEW_PRIVATE, + file, FILE_SIZE / 2, MMAP_SIZE); GRNXX_NOTICE() << "view = " << view; assert(view); - assert(view.flags() == grnxx::io::GRNXX_IO_SHARED); + assert(view.flags() == grnxx::io::VIEW_SHARED); assert(view.address() != nullptr); assert(view.offset() == (FILE_SIZE / 2)); assert(view.size() == MMAP_SIZE); -------------- next part -------------- HTML����������������������������... ダウンロード