Skip to content

Commit a017390

Browse files
slarenjart
authored andcommitted
Initial windows support (untested)
1 parent ac184d5 commit a017390

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

llama.cpp

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,15 @@
1212
#include <cassert>
1313
#include <cstring>
1414

15-
// headers for POSIX mmap
15+
// mmap
1616
#if defined (__unix__) || defined (__APPLE__)
1717
# include <sys/mman.h>
1818
# include <fcntl.h>
1919
# include <unistd.h>
20+
#elif defined(_WIN32)
21+
# define WIN32_LEAN_AND_MEAN
22+
# include <Windows.h>
23+
//#include <Memoryapi.h>
2024
#endif
2125

2226
#define LLAMA_USE_SCRATCH
@@ -312,8 +316,31 @@ static void mmap_file(const char* fname, void * &mm_addr, size_t &mm_length) {
312316
mm_addr = NULL;
313317
mm_length = 0;
314318
}
319+
#elif defined(_WIN32)
320+
mm_addr = NULL;
321+
322+
HANDLE hFile = CreateFileA(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
323+
if (hFile == INVALID_HANDLE_VALUE) {
324+
return;
325+
}
326+
327+
// not really necessary
328+
LARGE_INTEGER fileSize;
329+
GetFileSizeEx(hFile, &fileSize);
330+
mm_length = fileSize;
331+
332+
HANDLE hMapping = CreateFileMappingA(hFile, NULL, PAGE_READONLY, 0, 0, NULL);
333+
CloseHandle(hFile);
334+
335+
if (hMapping == NULL) {
336+
return;
337+
}
338+
339+
mm_addr = MapViewOfFile(hMapping, FILE_MAP_READ, 0, 0, 0);
340+
CloseHandle(hMapping);
315341
#else
316-
// TODO: windows support
342+
mm_addr = NULL;
343+
mm_length = 0;
317344
(void)(fname); // suppress warnings
318345
#endif
319346
}
@@ -322,8 +349,9 @@ static void munmap_file(void * addr, size_t length) {
322349
#if defined(MAP_FAILED)
323350
// POSIX
324351
munmap(addr, length);
352+
#elif defined(_WIN32)
353+
UnmapViewOfFile(addr);
325354
#else
326-
// TODO: windows support
327355
(void)(addr); // suppress warnings
328356
(void)(length);
329357
#endif

0 commit comments

Comments
 (0)