static void ucm_malloc_install_symbols(ucm_reloc_patch_t *patches) { ucm_reloc_patch_t *patch; for (patch = patches; patch->symbol != NULL; ++patch) { ucm_reloc_modify(patch); } }
/* Called with lock held */ static ucs_status_t ucs_mmap_install_reloc(int events) { static int installed_events = 0; ucm_mmap_func_t *entry; ucs_status_t status; if (!ucm_global_config.enable_mmap_reloc) { ucm_debug("installing mmap relocations is disabled by configuration"); return UCS_ERR_UNSUPPORTED; } for (entry = ucm_mmap_funcs; entry->patch.symbol != NULL; ++entry) { if (!(entry->event_type & events)) { /* Not required */ continue; } if (entry->event_type & installed_events) { /* Already installed */ continue; } ucm_debug("mmap: installing relocation table entry for %s = %p for event 0x%x", entry->patch.symbol, entry->patch.value, entry->event_type); status = ucm_reloc_modify(&entry->patch); if (status != UCS_OK) { ucm_warn("failed to install relocation table entry for '%s'", entry->patch.symbol); return status; } installed_events |= entry->event_type; } return UCS_OK; }