1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
2 /*
3 * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
4 * University Research and Technology
5 * Corporation. All rights reserved.
6 * Copyright (c) 2004-2005 The University of Tennessee and The University
7 * of Tennessee Research Foundation. All rights
8 * reserved.
9 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
10 * University of Stuttgart. All rights reserved.
11 * Copyright (c) 2004-2005 The Regents of the University of California.
12 * All rights reserved.
13 * Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
14 * Copyright (c) 2015 Los Alamos National Security, LLC. All rights
15 * reserved.
16 * $COPYRIGHT$
17 *
18 * Additional copyrights may follow
19 *
20 * $HEADER$
21 *
22 * These symbols are in a file by themselves to provide nice linker
23 * semantics. Since linkers generally pull in symbols by object
24 * files, keeping these symbols as the only symbols in this file
25 * prevents utility programs such as "ompi_info" from having to import
26 * entire components just to query their version and parameters.
27 */
28
29 #include "ompi_config.h"
30 #include "coll_self.h"
31
32 #include "mpi.h"
33 #include "ompi/mca/coll/coll.h"
34 #include "coll_self.h"
35
36 /*
37 * Public string showing the coll ompi_self component version number
38 */
39 const char *mca_coll_self_component_version_string =
40 "Open MPI self collective MCA component version " OMPI_VERSION;
41
42 /*
43 * Global variable
44 */
45 int ompi_coll_self_priority = 0;
46
47 /*
48 * Local function
49 */
50 static int self_register(void);
51
52
53 /*
54 * Instantiate the public struct with all of our public information
55 * and pointers to our public functions in it
56 */
57
58 const mca_coll_base_component_2_0_0_t mca_coll_self_component = {
59
60 /* First, the mca_component_t struct containing meta information
61 about the component itself */
62
63 .collm_version = {
64 MCA_COLL_BASE_VERSION_2_0_0,
65
66 /* Component name and version */
67 .mca_component_name = "self",
68 MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
69 OMPI_RELEASE_VERSION),
70
71 /* Component open and close functions */
72 .mca_register_component_params = self_register,
73 },
74 .collm_data = {
75 /* The component is checkpoint ready */
76 MCA_BASE_METADATA_PARAM_CHECKPOINT
77 },
78
79 /* Initialization / querying functions */
80
81 .collm_init_query = mca_coll_self_init_query,
82 .collm_comm_query = mca_coll_self_comm_query,
83 };
84
85 static int self_register(void)
86 {
87 /* We'll always be picked if there's only one process in the
88 communicator */
89 ompi_coll_self_priority = 75;
90 (void) mca_base_component_var_register(&mca_coll_self_component.collm_version,
91 "priority", NULL, MCA_BASE_VAR_TYPE_INT,
92 NULL, 0, 0, OPAL_INFO_LVL_9,
93 MCA_BASE_VAR_SCOPE_READONLY,
94 &ompi_coll_self_priority);
95
96 return OMPI_SUCCESS;
97 }
98
99
100 OBJ_CLASS_INSTANCE(mca_coll_self_module_t,
101 mca_coll_base_module_t,
102 NULL, NULL);