start of new reload setup
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
#include <assert.h>
|
||||
#include <dlfcn.h>
|
||||
#include <libelf.h>
|
||||
#include <link.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user