1 /* 2 * Copyright (c) 2004-2009 The Trustees of Indiana University. 3 * All rights reserved. 4 * Copyright (c) 2004-2005 The Trustees of the University of Tennessee. 5 * All rights reserved. 6 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 7 * University of Stuttgart. All rights reserved. 8 * Copyright (c) 2004-2005 The Regents of the University of California. 9 * All rights reserved. 10 * $COPYRIGHT$ 11 * 12 * Additional copyrights may follow 13 * 14 * $HEADER$ 15 */ 16 17 /** 18 * @file 19 * 20 * SELF CRS component 21 * 22 * Simple, braindead implementation. 23 */ 24 25 #ifndef MCA_CRS_SELF_EXPORT_H 26 #define MCA_CRS_SELF_EXPORT_H 27 28 #include "opal_config.h" 29 30 31 #include "opal/mca/mca.h" 32 #include "opal/mca/crs/crs.h" 33 34 BEGIN_C_DECLS 35 36 #define PREFIX_DEFAULT ("opal_crs_self_user") 37 #define SUFFIX_CHECKPOINT ("checkpoint") 38 #define SUFFIX_CONTINUE ("continue") 39 #define SUFFIX_RESTART ("restart") 40 41 typedef int (*opal_crs_self_checkpoint_callback_fn_t)(char **restart_cmd); 42 typedef int (*opal_crs_self_continue_callback_fn_t)(void); 43 typedef int (*opal_crs_self_restart_callback_fn_t)(void); 44 45 /* 46 * Local Component structures 47 */ 48 struct opal_crs_self_component_t { 49 opal_crs_base_component_t super; /** Base CRS component */ 50 51 char *prefix; /** Prefix for user callbacks */ 52 bool do_restart; /** Start by calling user restart routine in opal_init? */ 53 bool can_checkpoint; /** If checkpointing is enabled */ 54 55 /** User defined functions */ 56 opal_crs_self_checkpoint_callback_fn_t ucb_checkpoint_fn; 57 opal_crs_self_continue_callback_fn_t ucb_continue_fn; 58 opal_crs_self_restart_callback_fn_t ucb_restart_fn; 59 }; 60 typedef struct opal_crs_self_component_t opal_crs_self_component_t; 61 OPAL_MODULE_DECLSPEC extern opal_crs_self_component_t mca_crs_self_component; 62 63 int opal_crs_self_component_query(mca_base_module_t **module, int *priority); 64 65 /* 66 * Module functions 67 */ 68 int opal_crs_self_module_init(void); 69 int opal_crs_self_module_finalize(void); 70 71 /* 72 * Actual funcationality 73 */ 74 int opal_crs_self_checkpoint( pid_t pid, 75 opal_crs_base_snapshot_t *snapshot, 76 opal_crs_base_ckpt_options_t *options, 77 opal_crs_state_type_t *state); 78 79 int opal_crs_self_restart( opal_crs_base_snapshot_t *snapshot, bool spawn_child, pid_t *child_pid); 80 81 int opal_crs_self_disable_checkpoint(void); 82 int opal_crs_self_enable_checkpoint(void); 83 84 int opal_crs_self_prelaunch(int32_t rank, 85 char *base_snapshot_dir, 86 char **app, 87 char **cwd, 88 char ***argv, 89 char ***env); 90 91 int opal_crs_self_reg_thread(void); 92 93 94 END_C_DECLS 95 96 #endif /* MCA_CRS_SELF_EXPORT_H */ 97