1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
2 /*
3 * Copyright (c) 2004-2005 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-2011 University of Houston. 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 "fs_ufs.h"
31 #include "mpi.h"
32
33 int mca_fs_ufs_priority = 10;
34 int mca_fs_ufs_lock_algorithm=0; /* auto */
35 /*
36 * Private functions
37 */
38 static int register_component(void);
39
40
41 /*
42 * Public string showing the fs ufs component version number
43 */
44 const char *mca_fs_ufs_component_version_string =
45 "OMPI/MPI ufs FS MCA component version " OMPI_VERSION;
46
47 /*
48 * Instantiate the public struct with all of our public information
49 * and pointers to our public functions in it
50 */
51 mca_fs_base_component_2_0_0_t mca_fs_ufs_component = {
52
53 /* First, the mca_component_t struct containing meta information
54 about the component itself */
55
56 .fsm_version = {
57 MCA_FS_BASE_VERSION_2_0_0,
58
59 /* Component name and version */
60 .mca_component_name = "ufs",
61 MCA_BASE_MAKE_VERSION(component, OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
62 OMPI_RELEASE_VERSION),
63 .mca_register_component_params = register_component,
64 },
65 .fsm_data = {
66 /* This component is checkpointable */
67 MCA_BASE_METADATA_PARAM_CHECKPOINT
68 },
69 .fsm_init_query = mca_fs_ufs_component_init_query, /* get thread level */
70 .fsm_file_query = mca_fs_ufs_component_file_query, /* get priority and actions */
71 .fsm_file_unquery = mca_fs_ufs_component_file_unquery, /* undo what was done by previous function */
72 };
73
74 static int register_component(void)
75 {
76 mca_fs_ufs_priority = 10;
77 (void) mca_base_component_var_register(&mca_fs_ufs_component.fsm_version,
78 "priority", "Priority of the fs ufs component",
79 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
80 OPAL_INFO_LVL_9,
81 MCA_BASE_VAR_SCOPE_READONLY,
82 &mca_fs_ufs_priority);
83
84 mca_fs_ufs_lock_algorithm = 0;
85 (void) mca_base_component_var_register(&mca_fs_ufs_component.fsm_version,
86 "lock_algorithm", "Locking algorithm used by the fs ufs component. "
87 " 0: auto (default), 1: skip locking, 2: always lock entire file, "
88 "3: lock only specific ranges",
89 MCA_BASE_VAR_TYPE_INT, NULL, 0, 0,
90 OPAL_INFO_LVL_9,
91 MCA_BASE_VAR_SCOPE_READONLY,
92 &mca_fs_ufs_lock_algorithm );
93
94 return OMPI_SUCCESS;
95 }