Zephyr Project API 3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
llext.h File Reference

Support for linkable loadable extensions. More...

#include <zephyr/sys/slist.h>
#include <zephyr/llext/elf.h>
#include <zephyr/llext/symbol.h>
#include <zephyr/kernel.h>
#include <sys/types.h>
#include <stdbool.h>

Go to the source code of this file.

Data Structures

struct  llext
 Structure describing a linkable loadable extension. More...
 
struct  llext_load_param
 Advanced llext_load parameters. More...
 

Macros

#define LLEXT_LOAD_PARAM_DEFAULT   { .relocate_local = true, }
 Default initializer for llext_load_param.
 

Enumerations

enum  llext_mem {
  LLEXT_MEM_TEXT , LLEXT_MEM_DATA , LLEXT_MEM_RODATA , LLEXT_MEM_BSS ,
  LLEXT_MEM_EXPORT , LLEXT_MEM_SYMTAB , LLEXT_MEM_STRTAB , LLEXT_MEM_SHSTRTAB ,
  LLEXT_MEM_COUNT
}
 List of memory regions stored or referenced in the LLEXT subsystem. More...
 

Functions

struct llextllext_by_name (const char *name)
 Find an llext by name.
 
int llext_iterate (int(*fn)(struct llext *ext, void *arg), void *arg)
 Iterate over all loaded extensions.
 
int llext_load (struct llext_loader *loader, const char *name, struct llext **ext, struct llext_load_param *ldr_parm)
 Load and link an extension.
 
int llext_unload (struct llext **ext)
 Unload an extension.
 
const void * llext_find_sym (const struct llext_symtable *sym_table, const char *sym_name)
 Find the address for an arbitrary symbol.
 
int llext_call_fn (struct llext *ext, const char *sym_name)
 Call a function by name.
 
int llext_add_domain (struct llext *ext, struct k_mem_domain *domain)
 Add an extension to a memory domain.
 
int arch_elf_relocate (elf_rela_t *rel, uintptr_t loc, uintptr_t sym_base_addr, const char *sym_name, uintptr_t load_bias)
 Architecture specific opcode update function.
 
ssize_t llext_find_section (struct llext_loader *loader, const char *search_name)
 Locates an ELF section in the file.
 
void arch_elf_relocate_local (struct llext_loader *loader, struct llext *ext, const elf_rela_t *rel, const elf_sym_t *sym, size_t got_offset)
 Architecture specific function for updating addresses via relocation table.
 

Detailed Description

Support for linkable loadable extensions.

This file describes the APIs for loading and interacting with Linkable Loadable Extensions (LLEXTs) in Zephyr.