7#ifndef ZEPHYR_LLEXT_SYMBOL_H
8#define ZEPHYR_LLEXT_SYMBOL_H
99#if defined(CONFIG_LLEXT) && defined(LL_EXTENSION_BUILD)
100#define LL_EXTENSION_SYMBOL(x) \
101 static const struct llext_const_symbol \
102 Z_GENERIC_SECTION(".exported_sym") __used \
104 .name = STRINGIFY(x), .addr = (const void *)&x, \
107#define LL_EXTENSION_SYMBOL(x)
119#if defined(LL_EXTENSION_BUILD)
120#define EXPORT_SYMBOL(x) LL_EXTENSION_SYMBOL(x)
121#elif defined(CONFIG_LLEXT_EXPORT_BUILTINS_BY_SLID)
122#define EXPORT_SYMBOL(x) \
123 static const char Z_GENERIC_SECTION("llext_exports_strtab") __used \
124 x ## _sym_name[] = STRINGIFY(x); \
125 static const STRUCT_SECTION_ITERABLE(llext_const_symbol, x ## _sym) = { \
126 .name = x ## _sym_name, .addr = (const void *)&x, \
128#elif defined(CONFIG_LLEXT)
129#define EXPORT_SYMBOL(x) \
130 static const STRUCT_SECTION_ITERABLE(llext_const_symbol, x ## _sym) = { \
131 .name = STRINGIFY(x), .addr = (const void *)&x, \
134#define EXPORT_SYMBOL(x)
__UINTPTR_TYPE__ uintptr_t
Definition stdint.h:105
Constant symbols are unchangeable named memory addresses.
Definition symbol.h:42
const char *const name
Name of symbol.
Definition symbol.h:49
const void *const addr
Address of symbol.
Definition symbol.h:56
const uintptr_t slid
Symbol Link Identifier.
Definition symbol.h:52
Symbols are named memory addresses.
Definition symbol.h:67
const char * name
Name of symbol.
Definition symbol.h:69
void * addr
Address of symbol.
Definition symbol.h:72
A symbol table.
Definition symbol.h:81
size_t sym_cnt
Number of symbols in the table.
Definition symbol.h:83
struct llext_symbol * syms
Array of symbols.
Definition symbol.h:86