diff --git a/include/hiload/hiload.h b/include/hiload/hiload.h index 25eef5d..0455c85 100644 --- a/include/hiload/hiload.h +++ b/include/hiload/hiload.h @@ -25,8 +25,8 @@ void hi_deinit(); /* Print a random assortment of information from current state */ void hi_print_module_infos(); -/* Reload module identified by the name */ -ReloadResult hi_reload_module(const char *module_name); +/* Reload shared library if it has changed since last reload or init was called */ +ReloadResult hi_reload_solib(const char *module_name); #pragma GCC visibility pop diff --git a/src/hiload.c b/src/hiload.c index e478b8f..cb7fb01 100644 --- a/src/hiload.c +++ b/src/hiload.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -114,7 +115,7 @@ ModuleInfos *gather_module_infos(void) { } static -ReloadResult reload_module(ModuleInfos *modules, const char *filename, +ReloadResult reload_solib(ModuleInfos *modules, const char *filename, void **updated_handle) { if (!modules || !filename) { return HI_RELOAD_NOT_FOUND; @@ -181,11 +182,11 @@ ReloadResult reload_module(ModuleInfos *modules, const char *filename, return HI_RELOAD_SUCCESS; } -ReloadResult hi_reload_module(const char *module_name) { +ReloadResult hi_reload_solib(const char *module_name) { assert(module_infos); void *new_handle = NULL; - ReloadResult result = reload_module(module_infos, module_name, &new_handle); + ReloadResult result = reload_solib(module_infos, module_name, &new_handle); return result; } diff --git a/test/manual/minimal.cpp b/test/manual/minimal.cpp index e243f24..25217d1 100644 --- a/test/manual/minimal.cpp +++ b/test/manual/minimal.cpp @@ -27,6 +27,10 @@ int main(int argc, char *argv[]) { printf("otherValue: %d\n", minimal_lib::otherValue++); std::this_thread::sleep_for(std::chrono::seconds(1)); printf("\n"); + + if (hi_reload_solib("libmini.so") != HI_RELOAD_SUCCESS) { + fprintf(stderr, "Failed to load solib\n"); + } } hi_deinit();