/usr/include/lam/lam-ssi-boot.h is in lam4-dev 7.1.2-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 | /*
* Copyright (c) 2001-2004 The Trustees of Indiana University.
* All rights reserved.
* Copyright (c) 1998-2001 University of Notre Dame.
* All rights reserved.
* Copyright (c) 1994-1998 The Ohio State University.
* All rights reserved.
*
* This file is part of the LAM/MPI software package. For license
* information, see the LICENSE file in the top level directory of the
* LAM/MPI source distribution.
*
* $HEADER$
*
* $Id: lam-ssi-boot.h,v 1.8 2004/03/06 21:17:31 jsquyres Exp $
*
* Interface for the boot module for the LAM/MPI SSI project.
*/
#ifndef LAM_SSI_BOOT_H
#define LAM_SSI_BOOT_H
#include <lam_config.h>
#include <lam-ssi.h>
#include <lamnet.h>
#include <all_opt.h>
#include <all_list.h>
/*
* Global functions for SSI overall boot open and close
*/
typedef enum {
LAM_SSI_BOOT_LOCATION_ROOT,
LAM_SSI_BOOT_LOCATION_INTERIOR,
LAM_SSI_BOOT_LOCATION_LEAF,
LAM_SSI_BOOT_LOCATION_MAX
} lam_ssi_boot_location_t;
#if defined(c_plusplus) || defined(__cplusplus)
extern "C" {
#endif
int lam_ssi_boot_open(OPT *aod);
int lam_ssi_boot_select(lam_ssi_boot_location_t where);
int lam_ssi_boot_close(void);
#if defined(c_plusplus) || defined(__cplusplus)
}
#endif
/***********************************************************************
*
* Initialization / finalization
*
* Setup the module and decide if it will run or not.
*
**********************************************************************/
typedef const struct lam_ssi_boot_actions_1_1_0 *
(*lam_ssi_boot_init_fn_t)(lam_ssi_boot_location_t where, int *priority);
typedef int (*lam_ssi_boot_finalize_fn_t)(void);
/***********************************************************************
*
* User interface
*
* What lamboot and others call directly. See the SSI boot docs for
* descriptions of these functions.
*
**********************************************************************/
typedef enum {
LAM_SSI_BOOT_PROC_LAMD,
LAM_SSI_BOOT_PROC_RECON,
LAM_SSI_BOOT_PROC_WIPE,
LAM_SSI_BOOT_PROC_MAX
} lam_ssi_boot_proc_t;
typedef int (*lam_ssi_boot_parse_options_fn_t)(OPT *aod, int boot_schema_args);
typedef int (*lam_ssi_boot_allocate_nodes_fn_t)
(struct lamnode **nodes, int *nnodes, int *origin);
typedef int (*lam_ssi_boot_verify_nodes_fn_t)
(struct lamnode *nodes, int nnodes);
typedef int (*lam_ssi_boot_prepare_boot_fn_t)(void);
typedef int (*lam_ssi_boot_start_rte_procs_fn_t)
(struct lamnode *nodes, int nnodes, lam_ssi_boot_proc_t which,
int *num_started);
typedef int (*lam_ssi_boot_deallocate_nodes_fn_t)
(struct lamnode **nodes, int *nnodes);
/***********************************************************************
*
* Internal interface
*
* Things that should never be called outside of the boot SSI modules.
* These functions are mainly used by the booting algorithms.
*
**********************************************************************/
typedef int (*lam_ssi_boot_start_application_fn_t)
(char ***argv, int *argc, int num_procs, struct lamnode *node);
typedef int (*lam_ssi_boot_start_rte_proc_fn_t)
(struct lamnode *node, lam_ssi_boot_proc_t which);
/***********************************************************************
*
* Startup protocol interface
*
* Mainly for starting lamds. Send information about the
* newly-started lamd, and receive information about the universe.
*
**********************************************************************/
typedef int (*lam_ssi_boot_get_nodeid_fn_t)(OPT *aod);
typedef int (*lam_ssi_boot_open_srv_connection_fn_t)
(struct lamnode *nodes, int nnodes);
typedef int (*lam_ssi_boot_send_lamd_info_fn_t)(OPT *aod, int dli_port);
typedef int (*lam_ssi_boot_receive_lamd_info_fn_t)
(struct lamnode *nodes, int nnodes);
typedef int (*lam_ssi_boot_close_srv_connection_fn_t)(void);
typedef int (*lam_ssi_boot_send_universe_info_fn_t)
(struct lamnode *nodes, int nnodes, int which);
typedef int (*lam_ssi_boot_receive_universe_info_t)
(struct lamnode **universe, int *universe_size);
/***********************************************************************
*
* End of API function typedefs
*
**********************************************************************/
/*
* Algorithm functions provided to all boot SSI modules
*/
typedef int (*lam_ssi_boot_alg_fn_t)
(struct lamnode *nodes, int nnodes, int want_startup_protocol,
lam_ssi_boot_proc_t which, int *num_started);
int lam_ssi_boot_base_alg_linear(struct lamnode *nodes, int nnodes,
int want_startup_protocol,
lam_ssi_boot_proc_t which,
int *num_started);
int lam_ssi_boot_base_alg_linear_windowed(struct lamnode *nodes, int nnodes,
int want_startup_protocol,
lam_ssi_boot_proc_t which,
int *num_started);
int lam_ssi_boot_base_alg_thread(struct lamnode *nodes, int nnodes,
int want_startup_protocol,
lam_ssi_boot_proc_t which,
int *num_started);
int lam_ssi_boot_base_alg_tree(struct lamnode *nodes, int nnodes,
int want_startup_protocol,
lam_ssi_boot_proc_t which,
int *num_started);
/*
* Startup protocol functions based on TCP sockets; any boot SSI
* module can use these
*/
int lam_ssi_boot_base_get_nodeid(OPT *aod);
int lam_ssi_boot_base_open_srv_connection(struct lamnode *nodes, int nnodes);
int lam_ssi_boot_base_send_lamd_info(OPT *aod, int dli_port);
int lam_ssi_boot_base_send_lamd_info_args(OPT *aod,
unsigned char agent_haddr[4],
int agent_port, int node_id,
int dli_port, int num_cpus);
int lam_ssi_boot_base_receive_lamd_info(struct lamnode *nodes, int nnodes);
int lam_ssi_boot_base_close_srv_connection(void);
int lam_ssi_boot_base_send_universe_info(struct lamnode *nodes,
int nnodes, int which);
int lam_ssi_boot_base_receive_universe_info(struct lamnode **universe,
int *universe_size);
/*
* Utiltity functions for use in boot SSI modules
*/
int lam_ssi_boot_base_append_path(char *prefix, char *dir, char *fname,
int *argcnt, char ***arglist);
char *lam_ssi_boot_base_find_boot_schema(OPT *aod);
char *lam_ssi_boot_base_find_hostname(OPT *aod);
char *lam_ssi_boot_base_find_prefix(LIST *keyval);
char *lam_ssi_boot_build_inet_topo(struct lamnode *dest_node,
struct lamnode origin_node,
int origin);
int lam_ssi_boot_do_common_args(OPT *aod, int *argc, char ***argv);
int lam_ssi_boot_base_check_priority(char *module_name, int base,
int want_default, int *priority);
int lam_ssi_boot_base_ioexecvp(char **cmdv, int showout, char *outbuff,
int outbuffsize, int stderr_is_err);
char *lam_ssi_boot_base_lamgrow(char *hostname, struct lamnode **nodes,
int *nnodes, int *origin);
/*
* Struct used to pass boot SSI information from the each SSI instance
* back to the SSI glue.
*/
typedef struct lam_ssi_boot_1_1_0 {
lam_ssi_1_0_0_t lsb_meta_info;
/* Initialize / finalize functions */
lam_ssi_boot_init_fn_t lsb_init;
lam_ssi_boot_finalize_fn_t lsb_finalize;
} lam_ssi_boot_1_1_0_t;
typedef struct lam_ssi_boot_actions_1_1_0 {
/* Boot API function pointers */
lam_ssi_boot_parse_options_fn_t lsba_parse_options;
lam_ssi_boot_allocate_nodes_fn_t lsba_allocate_nodes;
lam_ssi_boot_verify_nodes_fn_t lsba_verify_nodes;
lam_ssi_boot_prepare_boot_fn_t lsba_prepare_boot;
lam_ssi_boot_start_rte_procs_fn_t lsba_start_rte_procs;
lam_ssi_boot_deallocate_nodes_fn_t lsba_deallocate_nodes;
lam_ssi_boot_start_application_fn_t lsba_start_application;
lam_ssi_boot_start_rte_proc_fn_t lsba_start_rte_proc;
lam_ssi_boot_get_nodeid_fn_t lsba_get_nodeid;
lam_ssi_boot_open_srv_connection_fn_t lsba_open_srv_connection;
lam_ssi_boot_send_lamd_info_fn_t lsba_send_lamd_info;
lam_ssi_boot_receive_lamd_info_fn_t lsba_receive_lamd_info;
lam_ssi_boot_close_srv_connection_fn_t lsba_close_srv_connection;
lam_ssi_boot_send_universe_info_fn_t lsba_send_universe_info;
lam_ssi_boot_receive_universe_info_t lsba_receive_universe_info;
} lam_ssi_boot_actions_1_1_0_t;
/*
* Set the default type to use version 1.1.0 of the SSI boot struct
*/
typedef lam_ssi_boot_1_1_0_t lam_ssi_boot_t;
typedef lam_ssi_boot_actions_1_1_0_t lam_ssi_boot_actions_t;
/*
* Global variables
*/
extern int lam_ssi_boot_verbose;
extern int lam_ssi_boot_did;
extern int lam_ssi_boot_base_server_port;
extern lam_ssi_boot_actions_t lam_ssi_boot;
extern lam_ssi_boot_t lam_ssi_boot_base_module;
extern LIST *lam_ssi_boot_base_opened;
extern OPT *lam_ssi_boot_optd;
extern int lam_ssi_boot_base_param_promisc;
extern int lam_ssi_boot_base_param_window_size;
/*
* Global instance of array of pointers to lam_ssi_boot_t. Will
* effectively be filled in by configure.
*/
extern const lam_ssi_t **lam_ssi_boot_modules;
#endif /* #ifndef LAM_SSI_BOOT_H */
|