d6b306d716
* Adds a parameter to adjust the method used by libevent. - Matches that of the libevent2022 component. Signed-off-by: Joshua Hursey <jhursey@us.ibm.com>
90 строки
2.5 KiB
C
90 строки
2.5 KiB
C
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
|
|
/*
|
|
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
|
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
|
|
* Copyright (c) 2012-2013 Los Alamos National Security, LLC.
|
|
* All rights reserved.
|
|
* Copyright (c) 2017 Research Organization for Information Science
|
|
* and Technology (RIST). All rights reserved.
|
|
* Copyright (c) 2017 IBM Corporation. All rights reserved.
|
|
*/
|
|
#include "opal_config.h"
|
|
#include "opal/constants.h"
|
|
#include "opal/util/output.h"
|
|
|
|
#include "opal/mca/event/base/base.h"
|
|
#include "external.h"
|
|
|
|
#include "opal/util/argv.h"
|
|
|
|
extern char *event_module_include;
|
|
static struct event_config *config = NULL;
|
|
|
|
opal_event_base_t* opal_event_base_create(void)
|
|
{
|
|
opal_event_base_t *base;
|
|
|
|
base = event_base_new_with_config(config);
|
|
if (NULL == base) {
|
|
/* there is no backend method that does what we want */
|
|
opal_output(0, "No event method available");
|
|
}
|
|
return base;
|
|
}
|
|
|
|
int opal_event_init(void)
|
|
{
|
|
const char **all_available_eventops = NULL;
|
|
char **includes=NULL;
|
|
bool dumpit=false;
|
|
int i, j;
|
|
|
|
if (opal_output_get_verbosity(opal_event_base_framework.framework_output) > 4) {
|
|
event_enable_debug_mode();
|
|
}
|
|
|
|
all_available_eventops = event_get_supported_methods();
|
|
|
|
if (NULL == event_module_include) {
|
|
/* Shouldn't happen, but... */
|
|
event_module_include = strdup("select");
|
|
}
|
|
includes = opal_argv_split(event_module_include,',');
|
|
|
|
/* get a configuration object */
|
|
config = event_config_new();
|
|
/* cycle thru the available subsystems */
|
|
for (i = 0 ; NULL != all_available_eventops[i] ; ++i) {
|
|
/* if this module isn't included in the given ones,
|
|
* then exclude it
|
|
*/
|
|
dumpit = true;
|
|
for (j=0; NULL != includes[j]; j++) {
|
|
if (0 == strcmp("all", includes[j]) ||
|
|
0 == strcmp(all_available_eventops[i], includes[j])) {
|
|
dumpit = false;
|
|
break;
|
|
}
|
|
}
|
|
if (dumpit) {
|
|
event_config_avoid_method(config, all_available_eventops[i]);
|
|
}
|
|
}
|
|
opal_argv_free(includes);
|
|
|
|
return OPAL_SUCCESS;
|
|
}
|
|
|
|
int opal_event_finalize(void)
|
|
{
|
|
return OPAL_SUCCESS;
|
|
}
|
|
|
|
opal_event_t* opal_event_alloc(void)
|
|
{
|
|
opal_event_t *ev;
|
|
|
|
ev = (opal_event_t*)malloc(sizeof(opal_event_t));
|
|
return ev;
|
|
}
|