root/ompi/mca/vprotocol/vprotocol.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2004-2007 The Trustees of the University of Tennessee.
   3  *                         All rights reserved.
   4  * Copyright (c) 2010      Cisco Systems, Inc.  All rights reserved.
   5  * $COPYRIGHT$
   6  *
   7  * Additional copyrights may follow
   8  *
   9  * $HEADER$
  10  */
  11 
  12 #ifndef __INCLUDE_VPROTOCOL_H_
  13 #define __INCLUDE_VPROTOCOL_H_
  14 
  15 #include "ompi_config.h"
  16 #include "ompi/mca/mca.h"
  17 #include "ompi/mca/pml/pml.h"
  18 #include "ompi/request/request.h"
  19 
  20 BEGIN_C_DECLS
  21 
  22 /* PML_V->PROTOCOL Called by MCA_PML_V framework to initialize the component.
  23  *
  24  * @param priority (OUT) Relative priority or ranking used by MCA to
  25  * select a component.
  26  *
  27  * @param enable_progress_threads (IN) Whether this component is
  28  * allowed to run a hidden/progress thread or not.
  29  *
  30  * @param enable_mpi_threads (IN) Whether support for multiple MPI
  31  * threads is enabled or not (i.e., MPI_THREAD_MULTIPLE), which
  32  * indicates whether multiple threads may invoke this component
  33  * simultaneously or not.
  34  */
  35 typedef struct mca_vprotocol_base_module_2_0_0_t *
  36     (*mca_vprotocol_base_component_init_fn_t)(int *priority,
  37                                               bool enable_progress_threads,
  38                                               bool enable_mpi_threads);
  39 
  40 /* Release any resource allocated in init
  41  */
  42 typedef int (*mca_vprotocol_base_component_finalize_fn_t)(void);
  43 
  44 
  45 /* The MCA type for class instance
  46  */
  47 typedef struct mca_vprotocol_base_component_2_0_0_t {
  48     mca_base_component_t pmlm_version;
  49     mca_base_component_data_t pmlm_data;
  50     mca_vprotocol_base_component_init_fn_t pmlm_init;
  51     mca_vprotocol_base_component_finalize_fn_t pmlm_finalize;
  52 } mca_vprotocol_base_component_2_0_0_t;
  53 typedef mca_vprotocol_base_component_2_0_0_t mca_vprotocol_base_component_t;
  54 
  55 /* The base module of the component
  56  */
  57 typedef struct mca_vprotocol_base_module_2_0_0_t
  58 {
  59     /* PML module stuff */
  60     mca_pml_base_module_add_procs_fn_t      add_procs;
  61     mca_pml_base_module_del_procs_fn_t      del_procs;
  62     mca_pml_base_module_enable_fn_t         enable;
  63     mca_pml_base_module_progress_fn_t       progress;
  64     mca_pml_base_module_add_comm_fn_t       add_comm;
  65     mca_pml_base_module_del_comm_fn_t       del_comm;
  66     mca_pml_base_module_irecv_init_fn_t     irecv_init;
  67     mca_pml_base_module_irecv_fn_t          irecv;
  68     mca_pml_base_module_recv_fn_t           recv;
  69     mca_pml_base_module_isend_init_fn_t     isend_init;
  70     mca_pml_base_module_isend_fn_t          isend;
  71     mca_pml_base_module_send_fn_t           send;
  72     mca_pml_base_module_iprobe_fn_t         iprobe;
  73     mca_pml_base_module_probe_fn_t          probe;
  74     mca_pml_base_module_start_fn_t          start;
  75     mca_pml_base_module_dump_fn_t           dump;
  76     /* Request wait/test stuff */
  77     ompi_request_test_fn_t                  test;
  78     ompi_request_test_any_fn_t              test_any;
  79     ompi_request_test_all_fn_t              test_all;
  80     ompi_request_test_some_fn_t             test_some;
  81     ompi_request_wait_fn_t                  wait;
  82     ompi_request_wait_any_fn_t              wait_any;
  83     ompi_request_wait_all_fn_t              wait_all;
  84     ompi_request_wait_some_fn_t             wait_some;
  85 
  86     /* Custom requests classes to add extra data at end of pml requests */
  87     opal_class_t *                            req_recv_class;
  88     opal_class_t *                            req_send_class;
  89 } mca_vprotocol_base_module_2_0_0_t;
  90 typedef mca_vprotocol_base_module_2_0_0_t mca_vprotocol_base_module_t;
  91 
  92 END_C_DECLS
  93 
  94 /* silently include the pml_v.h as every file including vprotocol.h will also
  95  * need it
  96  */
  97 #include "ompi/mca/pml/v/pml_v.h"
  98 #include "ompi/mca/vprotocol/base/base.h"
  99 
 100 #endif /* __INCLUDE_VPROTOCOL_H_ */

/* [<][>][^][v][top][bottom][index][help] */