/Zephyr-latest/subsys/llext/ |
D | Kconfig | 4 menuconfig LLEXT config 12 if LLEXT 15 prompt "Binary object type for llext" 20 Object type for llext 27 llext subsystem. A single compiler invocation is used to 34 binary object type for the llext subsystem. These object files 42 the llext subsystem. The usual linking process is used to 48 int "llext heap memory size in kilobytes" 51 Heap size in kilobytes available to llext for dynamic allocation 54 bool "Use -fPIC when building LLEXT" [all …]
|
D | llext_priv.h | 11 #include <zephyr/llext/llext.h> 22 int llext_copy_strings(struct llext_loader *ldr, struct llext *ext); 23 int llext_copy_regions(struct llext_loader *ldr, struct llext *ext, 25 void llext_free_regions(struct llext *ext); 26 void llext_adjust_mmu_permissions(struct llext *ext); 53 int do_llext_load(struct llext_loader *ldr, struct llext *ext, 56 static inline const char *llext_string(struct llext_loader *ldr, struct llext *ext, in llext_string() 66 int llext_link(struct llext_loader *ldr, struct llext *ext, 68 void llext_dependency_remove_all(struct llext *ext);
|
D | CMakeLists.txt | 2 zephyr_syscall_header(${ZEPHYR_BASE}/include/zephyr/llext/llext.h) 10 llext.c 22 message(WARNING "Running LLEXT extensions from user-space threads on RISC-V is not supported!")
|
D | llext.c | 9 #include <zephyr/llext/elf.h> 10 #include <zephyr/llext/loader.h> 11 #include <zephyr/llext/llext.h> 16 LOG_MODULE_REGISTER(llext, CONFIG_LLEXT_LOG_LEVEL); 26 int llext_get_section_header(struct llext_loader *ldr, struct llext *ext, const char *search_name, in llext_get_section_header() 80 * Note, that while we protect the global llext list while searching, we release 85 struct llext *llext_by_name(const char *name) in llext_by_name() 92 struct llext *ext = CONTAINER_OF(node, struct llext, _llext_list); in llext_by_name() 104 int llext_iterate(int (*fn)(struct llext *ext, void *arg), void *arg) in llext_iterate() 114 struct llext *ext = CONTAINER_OF(node, struct llext, _llext_list); in llext_iterate() [all …]
|
D | shell.c | 11 #include <zephyr/llext/elf.h> 12 #include <zephyr/llext/llext.h> 13 #include <zephyr/llext/buf_loader.h> 14 #include <zephyr/llext/fs_loader.h> 46 struct llext *m = llext_by_name(argv[1]); in cmd_llext_list_symbols() 49 shell_print(sh, "No such llext %s", argv[1]); in cmd_llext_list_symbols() 66 struct llext *ext; 69 static int llext_shell_name_cb(struct llext *ext, void *arg) in llext_shell_name_cb() 111 static int llext_shell_list_cb(struct llext *ext, void *arg) in llext_shell_list_cb() 147 LOG_DBG("hex2bin hex len %d, llext buf sz %d, read %d", in cmd_llext_load_hex() [all …]
|
D | llext_handlers.c | 8 #include <zephyr/llext/llext.h> 9 #include <zephyr/llext/loader.h> 14 LOG_MODULE_DECLARE(llext, CONFIG_LLEXT_LOG_LEVEL); 18 ssize_t z_impl_llext_get_fn_table(struct llext *ext, bool is_init, void *buf, size_t buf_size) in z_impl_llext_get_fn_table() 76 static int ext_is_valid(struct llext *ext, void *arg) in ext_is_valid() 81 static inline ssize_t z_vrfy_llext_get_fn_table(struct llext *ext, bool is_init, in z_vrfy_llext_get_fn_table()
|
/Zephyr-latest/samples/subsys/llext/modules/ |
D | README.rst | 1 .. zephyr:code-sample:: llext-modules 11 This sample demonstrates the use of the :ref:`llext` subsystem in Zephyr. The 12 llext subsystem allows for the loading of relocatable ELF files at runtime; 16 implemented in :zephyr_file:`samples/subsys/llext/modules/src/hello_world_ext.c`. 22 :zephyr_file:`samples/subsys/llext/modules/src/main_builtin.c`. 24 - if it is ``m``, the function is compiled as an llext and it is included in 25 the application as a binary blob. At runtime, the llext subsystem is used to 27 :zephyr_file:`samples/subsys/llext/modules/src/main_module.c`. 32 A board with a supported llext architecture and console. This can also be 43 :zephyr-app: samples/subsys/llext/modules [all …]
|
D | prj.conf | 10 # LLEXT is only required when loading the extension at runtime. Since in this 11 # basic example there's only one llext, leaving it in when building the 13 # could be other uses of the llext subsystem. 20 # This test consumes large amounts of stack when loading the LLEXT. 31 # To build it as an llext, please follow the instructions in the documentation 35 # features for LLEXT to work correctly.
|
D | sample.yaml | 2 tags: llext 21 sample.llext.modules.module_build: 32 - "Hello, world, from an llext!" 33 sample.llext.modules.builtin_build:
|
D | Kconfig | 4 mainmenu "LLEXT functionality test" 13 hello_world_ext.c, either as an llext module or as a built-in part of 16 If you select 'm', the hello_world function will be built as an llext
|
/Zephyr-latest/tests/subsys/llext/ |
D | testcase.yaml | 2 tags: llext 23 # While there is in practice no value in compiling subsys/llext/*.c 27 llext.loader_build: 30 # Run the suite with all combinations of core Kconfig options for the LLEXT 31 # subsystem (storage type, ELF type, MPU/MMU etc). To focus on LLEXT issues, 34 llext.readonly: 43 llext.readonly_mpu: 50 llext.readonly_mmu: 61 llext.writable: 73 llext.writable_relocatable: [all …]
|
/Zephyr-latest/doc/services/llext/ |
D | config.rst | 4 The following Kconfig options are available for the LLEXT subsystem: 11 The LLEXT subsystem needs a static heap to be allocated for extension related 16 Size of the LLEXT heap in kilobytes. 29 The LLEXT subsystem supports loading different types of extensions; the type 34 Build and expect relocatable files as binary object type for the LLEXT 41 object type for the LLEXT subsystem. These object files are generated 46 Build and expect shared libraries as binary object type for the LLEXT 59 The LLEXT subsystem loading mechanism, by default, uses a seek/read abstraction 63 LLEXT subsystem to optimize memory footprint in this case. 94 When an extension is loaded, the LLEXT subsystem must find the address of all [all …]
|
D | build.rst | 4 The LLEXT subsystem allows for the creation of extensions that can be loaded 19 application. This can be done using the `LLEXT Extension Development Kit 43 OUTPUT <ext_file.llext> 50 the LLEXT binary being created; 51 - ``<ext_file.llext>`` is the name of the output file that will contain the 83 functions takes the LLEXT target name as its first argument; it is otherwise 119 After the extension code is built, but before packaging it in an ``.llext`` 126 on the final llext file :file:`pkg_output`. 133 LLEXT Extension Development Kit (EDK) 144 following command which uses the ``llext-edk`` target: [all …]
|
/Zephyr-latest/samples/subsys/llext/shell_loader/ |
D | README.rst | 1 .. zephyr:code-sample:: llext-shell-loader 10 This example provides shell access to the :ref:`llext` system and provides the 16 A board with a supported llext architecture and shell capable console. 22 :zephyr-app: samples/subsys/llext/shell_loader 33 All the llext system related commands are available as sub-commands of llext 34 which can be seen with llext help 38 uart:~$ llext help 39 llext - Loadable extension commands 52 A hello world C file can be found in tests/subsys/llext/hello_world/hello_world.c 56 Then using additional tools converted to a hex string usable by the llext [all …]
|
/Zephyr-latest/include/zephyr/llext/ |
D | llext.h | 12 #include <zephyr/llext/elf.h> 13 #include <zephyr/llext/symbol.h> 37 * @brief List of memory regions stored or referenced in the LLEXT subsystem 40 * LLEXT subsystem. The names match common ELF file section names; but note 57 LLEXT_MEM_COUNT, /**< Number of regions managed by LLEXT */ 62 /* Number of memory partitions used by LLEXT */ 77 struct llext { struct 88 /** Name of the llext */ argument 100 /** Total llext allocation size */ argument 112 * Table of symbols exported by the llext via @ref LL_EXTENSION_SYMBOL. argument [all …]
|
/Zephyr-latest/samples/subsys/llext/ |
D | llext.rst | 1 .. zephyr:code-sample-category:: llext 2 :name: Linkable Loadable Extensions (LLEXT) 5 Samples that demonstrate the :ref:`llext` subsystem.
|
/Zephyr-latest/samples/subsys/llext/edk/ |
D | README.rst | 1 .. zephyr:code-sample:: llext-edk 6 LLEXT EDK (Extension Development Kit). 11 This sample demonstrates how to use the Zephyr LLEXT EDK (Extension Development 34 the Zephyr build system as well, via ``llext-edk`` target. The EDK is then 48 To build the EDK, use the ``llext-edk`` target. For example: 51 :zephyr-app: samples/subsys/llext/edk/app 53 :goals: build llext-edk 62 cp build/zephyr/llext-edk.tar.xz /tmp/edk 64 tar -xf llext-edk.tar.xz 70 export LLEXT_EDK_INSTALL_DIR=/tmp/edk/llext-edk [all …]
|
/Zephyr-latest/samples/subsys/llext/edk/ext2/ |
D | CMakeLists.txt | 22 ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 25 -o ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 27 COMMAND xxd -ip ${PROJECT_NAME}.llext 31 add_custom_target(ext2 ALL DEPENDS ${PROJECT_BINARY_DIR}/ext2.llext)
|
/Zephyr-latest/samples/subsys/llext/edk/ext1/ |
D | CMakeLists.txt | 26 ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 29 -o ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 31 COMMAND xxd -ip ${PROJECT_NAME}.llext 35 add_custom_target(ext1 ALL DEPENDS ${PROJECT_BINARY_DIR}/ext1.llext)
|
/Zephyr-latest/samples/subsys/llext/edk/ext3/ |
D | CMakeLists.txt | 26 ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 29 -o ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 31 COMMAND xxd -ip ${PROJECT_NAME}.llext 35 add_custom_target(ext3 ALL DEPENDS ${PROJECT_BINARY_DIR}/ext3.llext)
|
/Zephyr-latest/samples/subsys/llext/edk/k-ext1/ |
D | CMakeLists.txt | 26 ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 29 -o ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 31 COMMAND xxd -ip ${PROJECT_NAME}.llext 35 add_custom_target(kext1 ALL DEPENDS ${PROJECT_BINARY_DIR}/kext1.llext)
|
/Zephyr-latest/tests/misc/llext-edk/extension/ |
D | CMakeLists.txt | 22 ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 25 -o ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext 30 --file ${PROJECT_NAME}.llext 34 add_custom_target(extension ALL DEPENDS ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.llext)
|
/Zephyr-latest/tests/subsys/llext/src/ |
D | test_llext.c | 14 #include <zephyr/llext/elf.h> 15 #include <zephyr/llext/llext.h> 16 #include <zephyr/llext/symbol.h> 17 #include <zephyr/llext/buf_loader.h> 18 #include <zephyr/llext/fs_loader.h> 62 void (*test_setup)(struct llext *ext, struct k_thread *llext_thread); 65 void (*test_cleanup)(struct llext *ext); 108 static void threads_objects_test_setup(struct llext *, struct k_thread *llext_thread) in threads_objects_test_setup() argument 128 struct llext *ext = NULL; in load_call_unload() 244 ZTEST(llext, test_load_unload_##_name) \ [all …]
|
/Zephyr-latest/samples/subsys/llext/modules/src/ |
D | main_module.c | 11 #include <zephyr/llext/llext.h> 12 #include <zephyr/llext/buf_loader.h> 27 struct llext *ext; in main()
|
/Zephyr-latest/tests/misc/llext-edk/pytest/ |
D | test_edk.py | 31 "llext-edk", 41 logger.debug(f"Copying llext-edk.tar.xz to {tempdir}") 42 edk_path = Path(unlaunched_dut.device_config.build_dir) / "zephyr/llext-edk.tar.xz" 46 logger.debug(f"Extracting llext-edk.tar.xz to {tempdir}") 47 command = ["tar", "-xf", "llext-edk.tar.xz"] 54 ext_dir = Path(os.environ["ZEPHYR_BASE"]) / "tests/misc/llext-edk/extension" 65 edk_dir = Path(tempdir) / "llext-edk" 81 assert os.path.exists(Path(tempdir_extension) / "build/extension.llext")
|