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 #ifndef MCA_SNAPC_FULL_EXPORT_H
26 #define MCA_SNAPC_FULL_EXPORT_H
27
28 #include "orte_config.h"
29
30 #include "orte/mca/mca.h"
31 #include "opal/mca/event/event.h"
32
33 #include "orte/mca/sstore/sstore.h"
34 #include "orte/mca/snapc/snapc.h"
35
36 BEGIN_C_DECLS
37
38
39
40
41 typedef uint8_t orte_snapc_full_cmd_flag_t;
42 #define ORTE_SNAPC_FULL_CMD OPAL_UINT8
43 #define ORTE_SNAPC_FULL_UPDATE_JOB_STATE_CMD 1
44 #define ORTE_SNAPC_FULL_UPDATE_JOB_STATE_QUICK_CMD 2
45 #define ORTE_SNAPC_FULL_UPDATE_ORTED_STATE_CMD 3
46 #define ORTE_SNAPC_FULL_UPDATE_ORTED_STATE_QUICK_CMD 4
47 #define ORTE_SNAPC_FULL_VPID_ASSOC_CMD 5
48 #define ORTE_SNAPC_FULL_ESTABLISH_DIR_CMD 6
49 #define ORTE_SNAPC_FULL_RESTART_PROC_INFO 7
50 #define ORTE_SNAPC_FULL_REQUEST_OP_CMD 8
51 #define ORTE_SNAPC_FULL_MAX 9
52
53
54
55
56 struct orte_snapc_full_component_t {
57 orte_snapc_base_component_t super;
58 };
59 typedef struct orte_snapc_full_component_t orte_snapc_full_component_t;
60 OPAL_MODULE_DECLSPEC extern orte_snapc_full_component_t mca_snapc_full_component;
61
62
63
64
65 struct orte_snapc_full_orted_snapshot_t {
66
67 orte_snapc_base_global_snapshot_t super;
68
69
70 orte_process_name_t process_name;
71
72
73 int state;
74 };
75 typedef struct orte_snapc_full_orted_snapshot_t orte_snapc_full_orted_snapshot_t;
76 OBJ_CLASS_DECLARATION(orte_snapc_full_orted_snapshot_t);
77
78
79
80
81 struct orte_snapc_full_app_snapshot_t {
82
83 orte_snapc_base_local_snapshot_t super;
84
85
86 char * comm_pipe_r;
87 char * comm_pipe_w;
88 int comm_pipe_r_fd;
89 int comm_pipe_w_fd;
90 int unique_pipe_id;
91
92
93 opal_event_t comm_pipe_r_eh;
94 bool is_eh_active;
95
96
97 pid_t process_pid;
98
99
100 bool migrating;
101
102
103 bool finished;
104 };
105 typedef struct orte_snapc_full_app_snapshot_t orte_snapc_full_app_snapshot_t;
106 OBJ_CLASS_DECLARATION(orte_snapc_full_app_snapshot_t);
107
108 extern bool orte_snapc_full_skip_app;
109 extern bool orte_snapc_full_timing_enabled;
110 extern int orte_snapc_full_progress_meter;
111 extern int orte_snapc_full_max_wait_time;
112
113 int orte_snapc_full_component_query(mca_base_module_t **module, int *priority);
114
115
116
117
118 int orte_snapc_full_module_init(bool seed, bool app);
119 int orte_snapc_full_module_finalize(void);
120
121 int orte_snapc_full_setup_job(orte_jobid_t jobid);
122 int orte_snapc_full_release_job(orte_jobid_t jobid);
123
124 int orte_snapc_full_ft_event(int state);
125
126 int orte_snapc_full_start_ckpt(orte_snapc_base_quiesce_t *datum);
127 int orte_snapc_full_end_ckpt(orte_snapc_base_quiesce_t *datum);
128 int orte_snapc_full_request_op(orte_snapc_base_request_op_t *datum);
129
130
131
132
133 int global_coord_init(void);
134 int global_coord_finalize(void);
135 int global_coord_setup_job(orte_jobid_t jobid);
136 int global_coord_release_job(orte_jobid_t jobid);
137 int global_coord_orted_state_update(orte_process_name_t proc_name,
138 int proc_ckpt_state,
139 char **proc_ckpt_ref,
140 char **proc_ckpt_loc,
141 char **agent_ckpt);
142 int global_coord_start_ckpt(orte_snapc_base_quiesce_t *datum);
143 int global_coord_end_ckpt(orte_snapc_base_quiesce_t *datum);
144 int global_coord_restart_proc_info(pid_t local_pid,
145 char * local_hostname);
146
147
148
149
150 int local_coord_init(void);
151 int local_coord_finalize(void);
152 int local_coord_setup_job(orte_jobid_t jobid);
153 int local_coord_release_job(orte_jobid_t jobid);
154 int local_coord_job_state_update(orte_jobid_t jobid,
155 int job_ckpt_state,
156 orte_sstore_base_handle_t ss_handle,
157 opal_crs_base_ckpt_options_t *options);
158
159
160
161
162 int app_coord_init(void);
163 int app_coord_finalize(void);
164 int app_coord_ft_event(int state);
165 int app_coord_request_op(orte_snapc_base_request_op_t *datum);
166
167 END_C_DECLS
168
169 #endif