MCPcopy Create free account
hub / github.com/alibaba/MNN / MNNMmapFile

Function MNNMmapFile

source/core/MNNFileUtils.cpp:270–300  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

268}
269
270void * MNNMmapFile(file_t file, size_t size, bool onlyRead)
271{
272 if (file == INVALID_FILE || MNNGetFileSize(file) < size) {
273 return nullptr;
274 }
275#if defined(WIN32) || defined(_WIN32) || defined(_WIN64) || defined(_MSC_VER)
276 HANDLE hFileMapping = CreateFileMapping(file, NULL, PAGE_READWRITE, (size >> 32) & 0xffffffff, size & 0xffffffff, NULL);
277 if (hFileMapping == NULL) {
278 MNN_ERROR("MNN: Mmap failed\n");
279 return nullptr;
280 }
281 auto mode = FILE_MAP_READ | FILE_MAP_WRITE;
282 if (onlyRead) {
283 mode = FILE_MAP_READ;
284 }
285 void * addr = MapViewOfFile(hFileMapping, mode, 0, 0, size);
286 CloseHandle(hFileMapping);
287 return addr;
288#else
289 auto mode = PROT_READ | PROT_WRITE;
290 if (onlyRead) {
291 mode = PROT_READ;
292 }
293 void * addr = mmap(NULL, size, mode, MAP_SHARED, file, 0);
294 if (addr == MAP_FAILED) {
295 MNN_ERROR("MNN: Mmap failed\n");
296 return nullptr;
297 }
298 return addr;
299#endif
300}
301
302ErrorCode MNNUnmapFile(void * addr, size_t size)
303{

Callers 8

onAllocMethod · 0.85
onCreateMethod · 0.85
onExecuteMethod · 0.85
saveKVCacheInDiskMethod · 0.85
openMethod · 0.85
mmapKVCacheMethod · 0.85
onAllocMethod · 0.85
runMethod · 0.85

Calls 2

MNNGetFileSizeFunction · 0.85
mmapClass · 0.85

Tested by 1

runMethod · 0.68