summaryrefslogtreecommitdiff
path: root/include/linux/buildid.h
diff options
context:
space:
mode:
authorMykyta Yatsenko <yatsenko@meta.com>2025-10-26 23:38:46 +0300
committerAlexei Starovoitov <ast@kernel.org>2025-10-27 19:56:27 +0300
commit76e4fed847124690f7344a43d01dbcd7b2925353 (patch)
tree30139849704c6798741646ea0518fa48b30a164f /include/linux/buildid.h
parent531b87d865eb9e625c2e46ec8f06a65a6157ee45 (diff)
downloadlinux-76e4fed847124690f7344a43d01dbcd7b2925353.tar.xz
lib: move freader into buildid.h
Move struct freader and prototypes of the functions operating on it into the buildid.h. This allows reusing freader outside buildid, e.g. for file dynptr support added later. Signed-off-by: Mykyta Yatsenko <yatsenko@meta.com> Link: https://lore.kernel.org/r/20251026203853.135105-4-mykyta.yatsenko5@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include/linux/buildid.h')
-rw-r--r--include/linux/buildid.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/include/linux/buildid.h b/include/linux/buildid.h
index 014a88c41073..831c1b4b626c 100644
--- a/include/linux/buildid.h
+++ b/include/linux/buildid.h
@@ -18,4 +18,29 @@ void init_vmlinux_build_id(void);
static inline void init_vmlinux_build_id(void) { }
#endif
+struct freader {
+ void *buf;
+ u32 buf_sz;
+ int err;
+ union {
+ struct {
+ struct file *file;
+ struct folio *folio;
+ void *addr;
+ loff_t folio_off;
+ bool may_fault;
+ };
+ struct {
+ const char *data;
+ u64 data_sz;
+ };
+ };
+};
+
+void freader_init_from_file(struct freader *r, void *buf, u32 buf_sz,
+ struct file *file, bool may_fault);
+void freader_init_from_mem(struct freader *r, const char *data, u64 data_sz);
+const void *freader_fetch(struct freader *r, loff_t file_off, size_t sz);
+void freader_cleanup(struct freader *r);
+
#endif