summaryrefslogtreecommitdiff
path: root/llama.cpp/src/llama-mmap.h
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2026-02-12 20:57:17 +0100
committerMitja Felicijan <mitja.felicijan@gmail.com>2026-02-12 20:57:17 +0100
commitb333b06772c89d96aacb5490d6a219fba7c09cc6 (patch)
tree211df60083a5946baa2ed61d33d8121b7e251b06 /llama.cpp/src/llama-mmap.h
downloadllmnpc-b333b06772c89d96aacb5490d6a219fba7c09cc6.tar.gz
Engage!
Diffstat (limited to 'llama.cpp/src/llama-mmap.h')
-rw-r--r--llama.cpp/src/llama-mmap.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/llama.cpp/src/llama-mmap.h b/llama.cpp/src/llama-mmap.h
new file mode 100644
index 0000000..29ce4d2
--- /dev/null
+++ b/llama.cpp/src/llama-mmap.h
@@ -0,0 +1,73 @@
+#pragma once
+
+#include <cstdint>
+#include <memory>
+#include <vector>
+#include <cstdio>
+
+struct llama_file;
+struct llama_mmap;
+struct llama_mlock;
+
+using llama_files = std::vector<std::unique_ptr<llama_file>>;
+using llama_mmaps = std::vector<std::unique_ptr<llama_mmap>>;
+using llama_mlocks = std::vector<std::unique_ptr<llama_mlock>>;
+
+struct llama_file {
+ llama_file(const char * fname, const char * mode, bool use_direct_io = false);
+ ~llama_file();
+
+ size_t tell() const;
+ size_t size() const;
+
+ int file_id() const; // fileno overload
+
+ void seek(size_t offset, int whence) const;
+
+ void read_raw(void * ptr, size_t len);
+ void read_raw_unsafe(void * ptr, size_t len);
+ void read_aligned_chunk(void * dest, size_t size);
+ uint32_t read_u32();
+
+ void write_raw(const void * ptr, size_t len) const;
+ void write_u32(uint32_t val) const;
+
+ size_t read_alignment() const;
+ bool has_direct_io() const;
+private:
+ struct impl;
+ std::unique_ptr<impl> pimpl;
+};
+
+struct llama_mmap {
+ llama_mmap(const llama_mmap &) = delete;
+ llama_mmap(struct llama_file * file, size_t prefetch = (size_t) -1, bool numa = false);
+ ~llama_mmap();
+
+ size_t size() const;
+ void * addr() const;
+
+ void unmap_fragment(size_t first, size_t last);
+
+ static const bool SUPPORTED;
+
+private:
+ struct impl;
+ std::unique_ptr<impl> pimpl;
+};
+
+struct llama_mlock {
+ llama_mlock();
+ ~llama_mlock();
+
+ void init(void * ptr);
+ void grow_to(size_t target_size);
+
+ static const bool SUPPORTED;
+
+private:
+ struct impl;
+ std::unique_ptr<impl> pimpl;
+};
+
+size_t llama_path_max();