diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
| commit | b333b06772c89d96aacb5490d6a219fba7c09cc6 (patch) | |
| tree | 211df60083a5946baa2ed61d33d8121b7e251b06 /llama.cpp/src/llama-mmap.h | |
| download | llmnpc-b333b06772c89d96aacb5490d6a219fba7c09cc6.tar.gz | |
Engage!
Diffstat (limited to 'llama.cpp/src/llama-mmap.h')
| -rw-r--r-- | llama.cpp/src/llama-mmap.h | 73 |
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(); |
