Zephyr API Documentation 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
loader.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2023 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_LLEXT_LOADER_H
8#define ZEPHYR_LLEXT_LOADER_H
9
10#include <zephyr/llext/elf.h>
11#include <stddef.h>
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
29#include <zephyr/llext/llext.h>
30
32struct llext_elf_sect_map; /* defined in llext_priv.h */
50 int (*prepare)(struct llext_loader *ldr);
51
64 int (*read)(struct llext_loader *ldr, void *out, size_t len);
65
77 int (*seek)(struct llext_loader *ldr, size_t pos);
78
89 void *(*peek)(struct llext_loader *ldr, size_t pos);
90
96 void (*finalize)(struct llext_loader *ldr);
97
99 elf_ehdr_t hdr;
101 struct llext_elf_sect_map *sect_map;
103};
104
106static inline int llext_prepare(struct llext_loader *l)
107{
108 if (l->prepare) {
109 return l->prepare(l);
110 }
111
112 return 0;
113}
114
115static inline int llext_read(struct llext_loader *l, void *buf, size_t len)
116{
117 return l->read(l, buf, len);
118}
119
120static inline int llext_seek(struct llext_loader *l, size_t pos)
121{
122 return l->seek(l, pos);
123}
124
125static inline void *llext_peek(struct llext_loader *l, size_t pos)
126{
127 if (l->peek) {
128 return l->peek(l, pos);
129 }
130
131 return NULL;
132}
133
134static inline void llext_finalize(struct llext_loader *l)
135{
136 if (l->finalize) {
137 l->finalize(l);
138 }
139}
140/* @endcond */
141
146#ifdef __cplusplus
147}
148#endif
149
150#endif /* ZEPHYR_LLEXT_LOADER_H */
@ LLEXT_MEM_COUNT
Number of regions managed by LLEXT.
Definition llext.h:57
Data structures and constants defined in the ELF specification.
Support for linkable loadable extensions.
ELF Header(64-bit)
Definition elf.h:105
Section Header(64-bit)
Definition elf.h:177
Linkable loadable extension loader context.
Definition loader.h:42
int(* seek)(struct llext_loader *ldr, size_t pos)
Function to seek to a new absolute location in the stream.
Definition loader.h:77
int(* read)(struct llext_loader *ldr, void *out, size_t len)
Function to read (copy) from the loader.
Definition loader.h:64
int(* prepare)(struct llext_loader *ldr)
Optional function to prepare the loader for loading extension.
Definition loader.h:50
void(* finalize)(struct llext_loader *ldr)
Optional function to clean after the extension has been loaded or error occurred.
Definition loader.h:96
void *(* peek)(struct llext_loader *ldr, size_t pos)
Optional function to peek at an absolute location in the ELF.
Definition loader.h:89