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