memory/patcher: initialize patcher framework when needed
This commit moves the patcher framework initialization to the memory/patcher component. Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
Этот коммит содержится в:
родитель
4771c9ece6
Коммит
41f00b7465
@ -31,6 +31,7 @@
|
||||
#include "opal/mca/memory/base/empty.h"
|
||||
#include "opal/mca/memory/base/base.h"
|
||||
#include "opal/memoryhooks/memory.h"
|
||||
#include "opal/mca/patcher/base/base.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
@ -395,11 +396,16 @@ static int patcher_register (void)
|
||||
|
||||
static int patcher_query (int *priority)
|
||||
{
|
||||
if (opal_patcher->patch_symbol) {
|
||||
*priority = mca_memory_patcher_priority;
|
||||
} else {
|
||||
int rc;
|
||||
|
||||
rc = mca_base_framework_open (&opal_patcher_base_framework, 0);
|
||||
if (OPAL_SUCCESS != rc) {
|
||||
*priority = -1;
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
*priority = mca_memory_patcher_priority;
|
||||
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
@ -414,6 +420,12 @@ static int patcher_open (void)
|
||||
|
||||
was_executed_already = 1;
|
||||
|
||||
rc = opal_patcher_base_select ();
|
||||
if (OPAL_SUCCESS != rc) {
|
||||
mca_base_framework_close (&opal_patcher_base_framework);
|
||||
return OPAL_ERR_NOT_AVAILABLE;
|
||||
}
|
||||
|
||||
/* set memory hooks support level */
|
||||
opal_mem_hooks_set_support (OPAL_MEMORY_FREE_SUPPORT | OPAL_MEMORY_MUNMAP_SUPPORT);
|
||||
|
||||
@ -461,6 +473,8 @@ static int patcher_open (void)
|
||||
|
||||
static int patcher_close(void)
|
||||
{
|
||||
mca_base_framework_close (&opal_patcher_base_framework);
|
||||
|
||||
/* Note that we don't need to unpatch any symbols here; the
|
||||
patcher framework will take care of all of that for us. */
|
||||
return OPAL_SUCCESS;
|
||||
|
@ -40,7 +40,6 @@
|
||||
#include "opal/mca/installdirs/base/base.h"
|
||||
#include "opal/mca/memchecker/base/base.h"
|
||||
#include "opal/mca/memcpy/base/base.h"
|
||||
#include "opal/mca/patcher/base/base.h"
|
||||
#include "opal/mca/backtrace/base/base.h"
|
||||
#include "opal/mca/sec/base/base.h"
|
||||
#include "opal/mca/timer/base/base.h"
|
||||
@ -153,7 +152,6 @@ opal_finalize(void)
|
||||
|
||||
(void) mca_base_framework_close(&opal_backtrace_base_framework);
|
||||
(void) mca_base_framework_close(&opal_memchecker_base_framework);
|
||||
(void) mca_base_framework_close(&opal_patcher_base_framework);
|
||||
|
||||
/* close the memcpy framework */
|
||||
(void) mca_base_framework_close(&opal_memcpy_base_framework);
|
||||
|
@ -431,14 +431,6 @@ opal_init(int* pargc, char*** pargv)
|
||||
goto return_error;
|
||||
}
|
||||
|
||||
if (OPAL_SUCCESS != (ret = mca_base_framework_open(&opal_patcher_base_framework, 0))) {
|
||||
error = "opal_patcher_base_open";
|
||||
goto return_error;
|
||||
}
|
||||
|
||||
/* select a patcher module. if a patcher module can not be found it is not an error. */
|
||||
(void) opal_patcher_base_select ();
|
||||
|
||||
/* initialize the memory manager / tracker */
|
||||
if (OPAL_SUCCESS != (ret = opal_mem_hooks_init())) {
|
||||
error = "opal_mem_hooks_init";
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user