[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