From 4fb8801eebca334bebd52c2e96b03fccc07a1dc5 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sun, 26 Jul 2026 18:14:39 +0800 Subject: Load model, pledge+unveil. --- .gitignore | 1 + README.txt | 2 ++ main.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) create mode 100644 README.txt diff --git a/.gitignore b/.gitignore index 43e4558..926cbed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ *.o *.cgi +*.gguf deps/ diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..c45e800 --- /dev/null +++ b/README.txt @@ -0,0 +1,2 @@ +Run with no logs: GGML_LOG_LEVEL=0 ./wordbook.cgi +Run with error logs: GGML_LOG_LEVEL=error ./wordbook.cgi diff --git a/main.c b/main.c index e221a28..c5ecd8a 100644 --- a/main.c +++ b/main.c @@ -1,10 +1,41 @@ #include +#include +#include +#include + #include "llama.h" +#define MODEL_PATH "Qwen2.5-7B-Instruct-Q4_K_M.gguf" + int main(int argc , char *argv[]) { + struct llama_model *model; + struct llama_model_params mparams; + + if (unveil(MODEL_PATH, "r") == -1) + err(1, "unveil %s failed", MODEL_PATH); + + if (unveil(NULL, NULL) == -1) + err(1, "unveil lock failed"); + + if (pledge("stdio rpath", NULL) == -1) + err(1, "initial pledge failed"); + llama_backend_init(); + mparams = llama_model_default_params(); + mparams.n_gpu_layers = 0; /* force all layers onto CPU */ + mparams.load_mode = LLAMA_LOAD_MODE_MMAP; + + model = llama_model_load_from_file(MODEL_PATH, mparams); + if (!model) + errx(1, "failed to load model from file %s", MODEL_PATH); + + /* drop rpath after loading the model */ + if (pledge("stdio", NULL) == -1) + err(1, "secondary pledge failed"); + + llama_model_free(model); llama_backend_free(); return 0; -- cgit v1.2.3