[llvm] [Support] Add mapped_file_region::sync(), equivalent to msync (PR #153632)
Alexandre Ganea via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 14 15:44:22 PDT 2025
aganea wrote:
> > The following passes the test
>
> Thanks. I don't know the deleteOnClose file will impact reading before the file is closed!
>
> I will take your example and update the test with a tweak. I think the better check is to make sure file can be read with correct content before memory region is unmapped.
>
> ```
> SmallString<0> TempPath(TestDirectory);
> sys::path::append(TempPath, "test-%%%%");
> auto TempFileOrError = fs::TempFile::create(TempPath);
> ASSERT_TRUE((bool)TempFileOrError);
> fs::TempFile File = std::move(*TempFileOrError);
> StringRef Content("hello there");
> std::string FileName = File.TmpName;
> ASSERT_NO_ERROR(
> fs::resize_file_before_mapping_readwrite(File.FD, Content.size()));
> {
> // Map in the file and write some content.
> std::error_code EC;
> fs::mapped_file_region MFR(fs::convertFDToNativeFile(File.FD),
> fs::mapped_file_region::readwrite,
> Content.size(), 0, EC);
>
> // Keep the file so it can be read.
> ASSERT_FALSE((bool)File.keep());
>
> // Write content through mapped memory.
> ASSERT_NO_ERROR(EC);
> std::copy(Content.begin(), Content.end(), MFR.data());
>
> // Synchronize to file system.
> ASSERT_FALSE((bool)MFR.sync());
>
> // Check the file content using file IO APIs.
> auto Buffer = MemoryBuffer::getFile(FileName);
> ASSERT_TRUE((bool)Buffer);
> ASSERT_EQ(Content, Buffer->get()->getBuffer());
> }
> // Manually remove the test file.
> ASSERT_FALSE((bool)fs::remove(FileName));
> ```
Yeah I did change my example after posting it! Your example passes the test.
https://github.com/llvm/llvm-project/pull/153632
More information about the llvm-commits
mailing list