File: vprotocol.h

package info (click to toggle)
openmpi 5.0.7-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 202,312 kB
  • sloc: ansic: 612,441; makefile: 42,495; sh: 11,230; javascript: 9,244; f90: 7,052; java: 6,404; perl: 5,154; python: 1,856; lex: 740; fortran: 61; cpp: 20; tcl: 12
file content (100 lines) | stat: -rw-r--r-- 3,709 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
 * 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_ */