/* -*- Mode: C; c-basic-offset:4 ; -*- */ /* * (C) 2008 by Argonne National Laboratory. * See COPYRIGHT in top-level directory. */ #include "hydra_base.h" #include "rmki.h" #include "rmku.h" #include "bsci.h" /* initialize to avoid common symbols */ struct HYD_RMKI_fns HYD_RMKI_fns = { 0 }; const char *HYD_RMKI_comp_array[] = { @hydra_rmk_name_array@ }; HYD_Status(*HYD_RMKI_comp_init[])(void) = { @hydra_rmk_init_array@ }; HYD_Status HYD_RMKI_init(char *rmk) { int i; HYD_Status status = HYD_SUCCESS; HYDU_FUNC_ENTER(); HYD_RMKI_fns.query_node_list = NULL; for (i = 0; HYD_RMKI_comp_array[i]; i++) { if (!strcmp(rmk, HYD_RMKI_comp_array[i])) { status = (*HYD_RMKI_comp_init[i])(); HYDU_ERR_POP(status, "RMK device returned error initializing\n"); break; } } if (HYD_RMKI_comp_array[i] == NULL) HYDU_ERR_SETANDJUMP1(status, HYD_INTERNAL_ERROR, "unrecognized resource management kernel: %s\n", rmk); if (HYD_RMKI_fns.query_node_list == NULL) HYD_RMKI_fns.query_node_list = HYD_RMKU_query_node_list; status = HYD_BSCI_init(HYD_handle.bootstrap, HYD_handle.bootstrap_exec, HYD_handle.enablex, HYD_handle.debug); HYDU_ERR_POP(status, "unable to initialize the bootstrap server\n"); fn_exit: HYDU_FUNC_EXIT(); return status; fn_fail: goto fn_exit; }