// SPDX-License-Identifier: Apache-2.0 #include #include #include #include #include extern "C" { extern ServiceManifest loader_service_manifest; // Overrides elf_loader's default KConfig-based symbol resolver with one that looks up symbols // across every started kernel module's own symbol table instead. uintptr_t app_esp32_symbol_resolver(const char* symbolName) { uintptr_t symbol_address; if (module_resolve_symbol_global(symbolName, &symbol_address)) { return symbol_address; } return 0; } static error_t start() { elf_set_symbol_resolver(app_esp32_symbol_resolver); return service_manager_add(&loader_service_manifest, /*auto_start=*/true); } static error_t stop() { elf_set_symbol_resolver(nullptr); return service_manager_remove(loader_service_manifest.id); } Module app_esp32_module = { .name = "app-esp32", .start = start, .stop = stop, .drivers = nullptr, .symbols = nullptr, .internal = nullptr, }; }