MCPcopy Create free account
hub / github.com/UbiquitousLearning/mllm / initFileBacked

Method initFileBacked

mllm/engine/prefix_cache/ZenFS.cpp:52–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

50}
51
52bool ZenFSBlobMMAPFile::initFileBacked(size_t size, ZenFSMMAPMode mode, const std::string& fpath, std::error_code& ec) {
53 size_ = size;
54 std::vector<char> tmp(fpath.begin(), fpath.end());
55 tmp.push_back('\0');
56 fd_ = ::mkstemp(tmp.data());
57 if (fd_ < 0) {
58 ec = std::error_code(errno, std::system_category());
59 return false;
60 }
61 ::unlink(tmp.data()); // File is deleted when fd_ is closed
62 if (::ftruncate(fd_, static_cast<off_t>(size)) != 0) {
63 ec = std::error_code(errno, std::system_category());
64 ::close(fd_);
65 fd_ = -1;
66 return false;
67 }
68
69 int prot = 0;
70 int flags = 0;
71 switch (mode) {
72 case ZenFSMMAPMode::kReadOnly: {
73 prot = PROT_READ;
74 flags = MAP_SHARED;
75 break;
76 }
77 case ZenFSMMAPMode::kReadWrite: {
78 prot = PROT_READ | PROT_WRITE;
79 flags = MAP_SHARED;
80 break;
81 }
82 case ZenFSMMAPMode::kCopyOnWrite: {
83 prot = PROT_READ | PROT_WRITE;
84 flags = MAP_PRIVATE;
85 break;
86 }
87 default: {
88 ec = std::make_error_code(std::errc::invalid_argument);
89 return false;
90 }
91 }
92
93 addr_ = static_cast<uint8_t*>(::mmap(nullptr, size, prot, flags, fd_, 0));
94 if (addr_ == MAP_FAILED) {
95 ec = std::error_code(errno, std::system_category());
96 addr_ = nullptr;
97 cleanupPosix();
98 return false;
99 }
100 return true;
101}
102
103void ZenFSBlobMMAPFile::cleanupPosix() {
104 if (addr_) {

Callers 1

createMethod · 0.80

Calls 3

beginMethod · 0.45
endMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected