Zephyr Project API 4.4.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_INCLUDE_LLEXT_BUF_LOADER_H_
8#define ZEPHYR_INCLUDE_LLEXT_BUF_LOADER_H_
9
10#include <zephyr/llext/loader.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
24
31
33 const uint8_t *buf;
34 size_t len;
35 size_t pos;
37};
38
40int llext_buf_read(struct llext_loader *ldr, void *buf, size_t len);
41int llext_buf_seek(struct llext_loader *ldr, size_t pos);
42void *llext_buf_peek(struct llext_loader *ldr, size_t pos);
43
44#define Z_LLEXT_BUF_LOADER(_buf, _buf_len, _storage) \
45 { \
46 .loader = \
47 { \
48 .prepare = NULL, \
49 .read = llext_buf_read, \
50 .seek = llext_buf_seek, \
51 .peek = llext_buf_peek, \
52 .finalize = NULL, \
53 .storage = _storage, \
54 }, \
55 .buf = (_buf), \
56 .len = (_buf_len), \
57 .pos = 0, \
58 }
60
77#define LLEXT_BUF_LOADER(_buf, _buf_len) \
78 Z_LLEXT_BUF_LOADER(_buf, _buf_len, \
79 IS_ENABLED(CONFIG_LLEXT_STORAGE_WRITABLE) ? \
80 LLEXT_STORAGE_WRITABLE : LLEXT_STORAGE_PERSISTENT)
81
92#define LLEXT_TEMPORARY_BUF_LOADER(_buf, _buf_len) \
93 Z_LLEXT_BUF_LOADER(_buf, _buf_len, LLEXT_STORAGE_TEMPORARY)
94
105#define LLEXT_PERSISTENT_BUF_LOADER(_buf, _buf_len) \
106 Z_LLEXT_BUF_LOADER(_buf, _buf_len, LLEXT_STORAGE_PERSISTENT)
107
118#define LLEXT_WRITABLE_BUF_LOADER(_buf, _buf_len) \
119 Z_LLEXT_BUF_LOADER(_buf, _buf_len, LLEXT_STORAGE_WRITABLE)
120
124
125#ifdef __cplusplus
126}
127#endif
128
129#endif /* ZEPHYR_INCLUDE_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:28
struct llext_loader loader
Extension loader.
Definition buf_loader.h:30
Linkable loadable extension loader context.
Definition loader.h:80