1
1

opal/if: open the if framework once in opal_init_util

the if framework is no more open in opal_if*, which plugs
several memory leaks

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
Этот коммит содержится в:
Gilles Gouaillardet 2016-10-03 16:32:22 +09:00
родитель 188b9668e4
Коммит c9aeccb84e
3 изменённых файлов: 11 добавлений и 70 удалений

Просмотреть файл

@ -1,7 +1,7 @@
/*
* Copyright (c) 2010-2013 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2015 Intel, Inc. All rights reserved.
* Copyright (c) 2015 Research Organization for Information Science
* Copyright (c) 2015-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$
*
@ -79,6 +79,7 @@ static int opal_if_base_close(void)
if (!frameopen) {
return OPAL_SUCCESS;
}
frameopen = false;
while (NULL != (item = opal_list_remove_first(&opal_if_list))) {
OBJ_RELEASE(item);

Просмотреть файл

@ -52,6 +52,7 @@
#include "opal/mca/sec/base/base.h"
#include "opal/mca/timer/base/base.h"
#include "opal/mca/memchecker/base/base.h"
#include "opal/mca/if/base/base.h"
#include "opal/dss/dss.h"
#include "opal/mca/shmem/base/base.h"
#if OPAL_ENABLE_FT_CR == 1
@ -450,6 +451,13 @@ opal_init_util(int* pargc, char*** pargv)
goto return_error;
}
/* initialize if framework */
if (OPAL_SUCCESS != (ret = mca_base_framework_open(&opal_if_base_framework, 0))) {
fprintf(stderr, "opal_if_base_open() failed -- process will likely abort (%s:%d, returned %d instead of OPAL_SUCCESS)\n",
__FILE__, __LINE__, ret);
return ret;
}
return OPAL_SUCCESS;
return_error:

Просмотреть файл

@ -14,7 +14,7 @@
* Copyright (c) 2010-2015 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
* reserved.
* Copyright (c) 2015 Research Organization for Information Science
* Copyright (c) 2015-2016 Research Organization for Information Science
* and Technology (RIST). All rights reserved.
* $COPYRIGHT$
*
@ -100,10 +100,6 @@ int opal_ifnametoaddr(const char* if_name, struct sockaddr* addr, int length)
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -125,10 +121,6 @@ int opal_ifnametoindex(const char* if_name)
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return -1;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -149,10 +141,6 @@ int16_t opal_ifnametokindex(const char* if_name)
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return -1;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -173,10 +161,6 @@ int opal_ifindextokindex(int if_index)
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return -1;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -207,10 +191,6 @@ int opal_ifaddrtoname(const char* if_addr, char* if_name, int length)
return OPAL_ERR_NOT_FOUND;
}
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
@ -274,10 +254,6 @@ int16_t opal_ifaddrtokindex(const char* if_addr)
int if_kernel_index;
size_t len;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
memset(&hints, 0, sizeof(hints));
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
@ -329,10 +305,6 @@ int16_t opal_ifaddrtokindex(const char* if_addr)
int opal_ifcount(void)
{
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return 0;
}
return opal_list_get_size(&opal_if_list);
}
@ -346,10 +318,6 @@ int opal_ifbegin(void)
{
opal_if_t *intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return -1;
}
intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
if (NULL != intf)
return intf->if_index;
@ -367,10 +335,6 @@ int opal_ifnext(int if_index)
{
opal_if_t *intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return -1;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -399,10 +363,6 @@ int opal_ifindextoaddr(int if_index, struct sockaddr* if_addr, unsigned int leng
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -423,10 +383,6 @@ int opal_ifkindextoaddr(int if_kindex, struct sockaddr* if_addr, unsigned int le
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -448,10 +404,6 @@ int opal_ifindextomask(int if_index, uint32_t* if_mask, int length)
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -512,10 +464,6 @@ int opal_ifindextoflags(int if_index, uint32_t* if_flags)
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -538,10 +486,6 @@ int opal_ifindextoname(int if_index, char* if_name, int length)
{
opal_if_t *intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -563,10 +507,6 @@ int opal_ifkindextoname(int if_kindex, char* if_name, int length)
{
opal_if_t *intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -699,10 +639,6 @@ bool opal_ifisloopback(int if_index)
{
opal_if_t* intf;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return OPAL_ERROR;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {
@ -779,10 +715,6 @@ void opal_ifgetaliases(char ***aliases)
/* set default answer */
*aliases = NULL;
if (OPAL_SUCCESS != mca_base_framework_open(&opal_if_base_framework, 0)) {
return;
}
for (intf = (opal_if_t*)opal_list_get_first(&opal_if_list);
intf != (opal_if_t*)opal_list_get_end(&opal_if_list);
intf = (opal_if_t*)opal_list_get_next(intf)) {