1
1
openmpi/ompi/mca/vprotocol/vprotocol.h
Nathan Hjelm b68d66bb9b MCA: Add the project/project version to the MCA base component
This commit adds support for project_framework_component_* parameter
matching. This is the first step in allowing the same framework name
in multiple projects. This change also bumps the MCA component version
to 2.1.0.

All master frameworks have been updated to use the new component
versioning macro. An mca.h has been added to each project to add a
project specific versioning macro of the form
PROJECT_MCA_VERSION_2_1_0.

Signed-off-by: Nathan Hjelm <hjelmn@me.com>
2015-03-27 10:59:04 -06:00

101 строка
3.6 KiB
C

/*
* Copyright (c) 2004-2007 The Trustees of the University of Tennessee.
* All rights reserved.
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
#ifndef __INCLUDE_VPROTOCOL_H_
#define __INCLUDE_VPROTOCOL_H_
#include "ompi_config.h"
#include "ompi/mca/mca.h"
#include "ompi/mca/pml/pml.h"
#include "ompi/request/request.h"
BEGIN_C_DECLS
/* PML_V->PROTOCOL Called by MCA_PML_V framework to initialize the component.
*
* @param priority (OUT) Relative priority or ranking used by MCA to
* select a component.
*
* @param enable_progress_threads (IN) Whether this component is
* allowed to run a hidden/progress thread or not.
*
* @param enable_mpi_threads (IN) Whether support for multiple MPI
* threads is enabled or not (i.e., MPI_THREAD_MULTIPLE), which
* indicates whether multiple threads may invoke this component
* simultaneously or not.
*/
typedef struct mca_vprotocol_base_module_2_0_0_t *
(*mca_vprotocol_base_component_init_fn_t)(int *priority,
bool enable_progress_threads,
bool enable_mpi_threads);
/* Release any resource allocated in init
*/
typedef int (*mca_vprotocol_base_component_finalize_fn_t)(void);
/* The MCA type for class instance
*/
typedef struct mca_vprotocol_base_component_2_0_0_t {
mca_base_component_t pmlm_version;
mca_base_component_data_t pmlm_data;
mca_vprotocol_base_component_init_fn_t pmlm_init;
mca_vprotocol_base_component_finalize_fn_t pmlm_finalize;
} mca_vprotocol_base_component_2_0_0_t;
typedef mca_vprotocol_base_component_2_0_0_t mca_vprotocol_base_component_t;
/* The base module of the component
*/
typedef struct mca_vprotocol_base_module_2_0_0_t
{
/* PML module stuff */
mca_pml_base_module_add_procs_fn_t add_procs;
mca_pml_base_module_del_procs_fn_t del_procs;
mca_pml_base_module_enable_fn_t enable;
mca_pml_base_module_progress_fn_t progress;
mca_pml_base_module_add_comm_fn_t add_comm;
mca_pml_base_module_del_comm_fn_t del_comm;
mca_pml_base_module_irecv_init_fn_t irecv_init;
mca_pml_base_module_irecv_fn_t irecv;
mca_pml_base_module_recv_fn_t recv;
mca_pml_base_module_isend_init_fn_t isend_init;
mca_pml_base_module_isend_fn_t isend;
mca_pml_base_module_send_fn_t send;
mca_pml_base_module_iprobe_fn_t iprobe;
mca_pml_base_module_probe_fn_t probe;
mca_pml_base_module_start_fn_t start;
mca_pml_base_module_dump_fn_t dump;
/* Request wait/test stuff */
ompi_request_test_fn_t test;
ompi_request_test_any_fn_t test_any;
ompi_request_test_all_fn_t test_all;
ompi_request_test_some_fn_t test_some;
ompi_request_wait_fn_t wait;
ompi_request_wait_any_fn_t wait_any;
ompi_request_wait_all_fn_t wait_all;
ompi_request_wait_some_fn_t wait_some;
/* Custom requests classes to add extra data at end of pml requests */
opal_class_t * req_recv_class;
opal_class_t * req_send_class;
} mca_vprotocol_base_module_2_0_0_t;
typedef mca_vprotocol_base_module_2_0_0_t mca_vprotocol_base_module_t;
END_C_DECLS
/* silently include the pml_v.h as every file including vprotocol.h will also
* need it
*/
#include "ompi/mca/pml/v/pml_v.h"
#include "ompi/mca/vprotocol/base/base.h"
#endif /* __INCLUDE_VPROTOCOL_H_ */