File: base.h

package info (click to toggle)
openmpi 3.1.3-11
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 118,572 kB
  • sloc: ansic: 628,972; f90: 17,993; makefile: 13,761; sh: 7,051; java: 6,360; perl: 3,215; cpp: 2,225; python: 1,350; lex: 988; fortran: 52; tcl: 12
file content (137 lines) | stat: -rw-r--r-- 4,643 bytes parent folder | download | duplicates (3)
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*
 * Copyright (c) 2004-2010 The Trustees of Indiana University and Indiana
 *                         University Research and Technology
 *                         Corporation.  All rights reserved.
 * Copyright (c) 2004-2005 The University of Tennessee and The University
 *                         of Tennessee Research Foundation.  All rights
 *                         reserved.
 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
 *                         University of Stuttgart.  All rights reserved.
 * Copyright (c) 2004-2005 The Regents of the University of California.
 *                         All rights reserved.
 * Copyright (c) 2007      Evergrid, Inc. All rights reserved.
 *
 * Copyright (c) 2017      IBM Corporation. All rights reserved.
 * $COPYRIGHT$
 *
 * Additional copyrights may follow
 *
 * $HEADER$
 */
#ifndef OPAL_CRS_BASE_H
#define OPAL_CRS_BASE_H

#include "opal_config.h"
#include "opal/mca/base/base.h"
#include "opal/mca/crs/crs.h"
#include "opal/util/opal_environ.h"
#include "opal/runtime/opal_cr.h"

/*
 * Global functions for MCA overall CRS
 */

BEGIN_C_DECLS

/* Some local strings to use genericly with the local metadata file */
#define CRS_METADATA_BASE       ("# ")
#define CRS_METADATA_COMP       ("# OPAL CRS Component: ")
#define CRS_METADATA_PID        ("# PID: ")
#define CRS_METADATA_CONTEXT    ("# CONTEXT: ")
#define CRS_METADATA_MKDIR      ("# MKDIR: ")
#define CRS_METADATA_TOUCH      ("# TOUCH: ")

    /**
     * Initialize the CRS MCA framework
     *
     * @retval OPAL_SUCCESS Upon success
     * @retval OPAL_ERROR   Upon failures
     *
     * This function is invoked during opal_init();
     */
    OPAL_DECLSPEC int opal_crs_base_open(mca_base_open_flag_t flags);

    /**
     * Select an available component.
     *
     * @retval OPAL_SUCCESS Upon Success
     * @retval OPAL_NOT_FOUND If no component can be selected
     * @retval OPAL_ERROR Upon other failure
     *
     */
    OPAL_DECLSPEC int opal_crs_base_select(void);

    /**
     * Finalize the CRS MCA framework
     *
     * @retval OPAL_SUCCESS Upon success
     * @retval OPAL_ERROR   Upon failures
     *
     * This function is invoked during opal_finalize();
     */
    OPAL_DECLSPEC int opal_crs_base_close(void);

    /**
     * Globals
     */
    OPAL_DECLSPEC extern mca_base_framework_t opal_crs_base_framework;
    OPAL_DECLSPEC extern opal_crs_base_component_t opal_crs_base_selected_component;
    OPAL_DECLSPEC extern opal_crs_base_module_t opal_crs;

    /**
     * Some utility functions
     */
    OPAL_DECLSPEC char * opal_crs_base_state_str(opal_crs_state_type_t state);

    /*
     * Extract the expected component and pid from the metadata
     */
    OPAL_DECLSPEC int opal_crs_base_extract_expected_component(FILE *metadata, char ** component_name, int *prev_pid);

    /*
     * Read a token to the metadata file
     */
    OPAL_DECLSPEC int opal_crs_base_metadata_read_token(FILE *metadata, char * token, char ***value);

    /*
     * Register a file for cleanup.
     * Useful in C/R when files only need to temporarily exist for restart
     */
    OPAL_DECLSPEC int opal_crs_base_cleanup_append(char* filename, bool is_dir);

    /*
     * Flush the cleanup of all registered files.
     */
    OPAL_DECLSPEC int opal_crs_base_cleanup_flush(void);

    /*
     * Copy the options structure
     */
    OPAL_DECLSPEC int opal_crs_base_copy_options(opal_crs_base_ckpt_options_t *from,
                                                 opal_crs_base_ckpt_options_t *to);
    /*
     * Clear the options structure
     */
    OPAL_DECLSPEC int opal_crs_base_clear_options(opal_crs_base_ckpt_options_t *target);

    /*
     * CRS self application interface functions
     */
    typedef int (*opal_crs_base_self_checkpoint_fn_t)(char **restart_cmd);
    typedef int (*opal_crs_base_self_restart_fn_t)(void);
    typedef int (*opal_crs_base_self_continue_fn_t)(void);

    extern opal_crs_base_self_checkpoint_fn_t ompi_crs_base_self_checkpoint_fn;
    extern opal_crs_base_self_restart_fn_t    ompi_crs_base_self_restart_fn;
    extern opal_crs_base_self_continue_fn_t   ompi_crs_base_self_continue_fn;

    OPAL_DECLSPEC int opal_crs_base_self_register_checkpoint_callback
                      (opal_crs_base_self_checkpoint_fn_t  function);
    OPAL_DECLSPEC int opal_crs_base_self_register_restart_callback
                      (opal_crs_base_self_restart_fn_t  function);
    OPAL_DECLSPEC int opal_crs_base_self_register_continue_callback
                      (opal_crs_base_self_continue_fn_t  function);

END_C_DECLS

#endif /* OPAL_CRS_BASE_H */