Zephyr Project API 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
buf_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_BUF_LOADER_H
8#define ZEPHYR_LLEXT_BUF_LOADER_H
9
10#include <zephyr/llext/loader.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
30
32 const uint8_t *buf;
33 size_t len;
34 size_t pos;
36};
37
39int llext_buf_read(struct llext_loader *ldr, void *buf, size_t len);
40int llext_buf_seek(struct llext_loader *ldr, size_t pos);
41void *llext_buf_peek(struct llext_loader *ldr, size_t pos);
42
43#define Z_LLEXT_BUF_LOADER(_buf, _buf_len, _storage) \
44 { \
45 .loader = \
46 { \
47 .prepare = NULL, \
48 .read = llext_buf_read, \
49 .seek = llext_buf_seek, \
50 .peek = llext_buf_peek, \
51 .finalize = NULL, \
52 .storage = _storage, \
53 }, \
54 .buf = (_buf), \
55 .len = (_buf_len), \
56 .pos = 0, \
57 }
76#define LLEXT_BUF_LOADER(_buf, _buf_len) \
77 Z_LLEXT_BUF_LOADER(_buf, _buf_len, \
78 IS_ENABLED(CONFIG_LLEXT_STORAGE_WRITABLE) ? \
79 LLEXT_STORAGE_WRITABLE : LLEXT_STORAGE_PERSISTENT)
80
81/* @brief Initialize an llext_buf_loader structure for a temporary buffer
82 *
83 * ELF data from the specified buffer can only be used during llext_load().
84 * The LLEXT subsystem will copy all necessary data to internal buffers at load
85 * time.
86 *
87 * @param _buf Buffer containing the ELF binary
88 * @param _buf_len Buffer length in bytes
89 */
90#define LLEXT_TEMPORARY_BUF_LOADER(_buf, _buf_len) \
91 Z_LLEXT_BUF_LOADER(_buf, _buf_len, LLEXT_STORAGE_TEMPORARY)
92
103#define LLEXT_PERSISTENT_BUF_LOADER(_buf, _buf_len) \
104 Z_LLEXT_BUF_LOADER(_buf, _buf_len, LLEXT_STORAGE_PERSISTENT)
105
116#define LLEXT_WRITABLE_BUF_LOADER(_buf, _buf_len) \
117 Z_LLEXT_BUF_LOADER(_buf, _buf_len, LLEXT_STORAGE_WRITABLE)
118
123#ifdef __cplusplus
124}
125#endif
126
127#endif /* ZEPHYR_LLEXT_BUF_LOADER_H */
LLEXT ELF loader context types.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Implementation of llext_loader that reads from a memory buffer.
Definition buf_loader.h:27
struct llext_loader loader
Extension loader.
Definition buf_loader.h:29
Linkable loadable extension loader context.
Definition loader.h:80