[mpich2-commits] r7512 - in mpich2/trunk/src/pm/hydra: . include pm/pmiserv tools tools/bootstrap/external tools/bootstrap/include tools/bootstrap/persist tools/bootstrap/src tools/bootstrap/utils tools/rmk tools/rmk/include tools/rmk/none tools/rmk/pbs tools/rmk/src tools/rmk/utils ui/mpich ui/utils utils/alloc

balaji at mcs.anl.gov balaji at mcs.anl.gov
Mon Nov 29 02:03:20 CST 2010


Author: balaji
Date: 2010-11-29 02:03:19 -0600 (Mon, 29 Nov 2010)
New Revision: 7512

Added:
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_node_list.c
Removed:
   mpich2/trunk/src/pm/hydra/tools/rmk/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/rmk/include/rmki.h.in
   mpich2/trunk/src/pm/hydra/tools/rmk/none/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none.h
   mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none_init.c
   mpich2/trunk/src/pm/hydra/tools/rmk/pbs/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs.h
   mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_init.c
   mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_native_int.c
   mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_node_list.c
   mpich2/trunk/src/pm/hydra/tools/rmk/src/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_init.c.in
   mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_native_int.c
   mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_node_list.c
   mpich2/trunk/src/pm/hydra/tools/rmk/utils/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku.h
   mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_native_int.c
   mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_node_list.c
Modified:
   mpich2/trunk/src/pm/hydra/configure.in
   mpich2/trunk/src/pm/hydra/include/hydra.h
   mpich2/trunk/src/pm/hydra/include/hydra_base.h
   mpich2/trunk/src/pm/hydra/include/hydra_utils.h
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
   mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
   mpich2/trunk/src/pm/hydra/tools/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external.h
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_env.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_finalize.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_launch.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_query_native_int.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_launch.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_query_node_list.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_launch.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in
   mpich2/trunk/src/pm/hydra/tools/bootstrap/persist/persist_init.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_cleanup.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_env.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_finalize.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_launch.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_native_int.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_node_list.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_proxy_id.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_usize.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_wait.c
   mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h
   mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_finalize.c
   mpich2/trunk/src/pm/hydra/ui/mpich/mpiexec.c
   mpich2/trunk/src/pm/hydra/ui/mpich/utils.c
   mpich2/trunk/src/pm/hydra/ui/utils/uiu.c
   mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c
Log:
Merger of the bootstrap server and the RMK. The bootstrap device now
can provide launch, RMK or both capabilities. The separation of
launcher and RMK capabilities was always a bad idea, and has resulted
in a number of hacks, which are cleaned up through this commit.

Modified: mpich2/trunk/src/pm/hydra/configure.in
===================================================================
--- mpich2/trunk/src/pm/hydra/configure.in	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/configure.in	2010-11-29 08:03:19 UTC (rev 7512)
@@ -143,143 +143,124 @@
 #########################################################################
 # Check what bootstrap server we should use
 #########################################################################
-AC_ARG_WITH(hydra-bss, [  --with-hydra-bss=name - Boot-strap Server (ssh,rsh,fork,slurm,ll,lsf,sge,persist)],
-		    [ hydra_bss=$withval ],
-		    [ hydra_bss="ssh,rsh,fork,slurm,ll,lsf,sge,persist" ])
-AC_MSG_CHECKING(boot-strap server)
+AC_ARG_WITH(hydra-bss,
+	[AC_HELP_STRING([--with-hydra-bss=name],
+		[Bootstrap Server (none,ssh,rsh,fork,slurm,ll,lsf,sge,persist,pbs)])],
+	[ hydra_bss=$withval ],
+	[ hydra_bss="none,ssh,rsh,fork,slurm,ll,lsf,sge,persist,pbs" ])
+AC_MSG_CHECKING(bootstrap server)
 AC_MSG_RESULT($hydra_bss)
 hydra_bss_names="`echo $hydra_bss | sed -e 's/:/ /g' -e 's/,/ /g'`"
 
 hydra_bss_external=false
 hydra_bss_persist=false
+hydra_bss_pbs=false
+hydra_bss_none=false
 for hydra_bss_name in ${hydra_bss_names}; do
     case "$hydra_bss_name" in
     	ssh)
 		hydra_bss_external=true
 		available_bss=`echo $available_bss ssh`
+		available_launchers=`echo $available_launchers ssh`
 		;;
     	rsh)
 		hydra_bss_external=true
 		available_bss=`echo $available_bss rsh`
+		available_launchers=`echo $available_launchers rsh`
 		;;
     	fork)
 		hydra_bss_external=true
 		available_bss=`echo $available_bss fork`
+		available_launchers=`echo $available_launchers fork`
 		;;
 	slurm)
 		hydra_bss_external=true
 		available_bss=`echo $available_bss slurm`
+		available_launchers=`echo $available_launchers slurm`
+		available_rmks=`echo $available_rmks slurm`
 		;;
 	ll)
 		hydra_bss_external=true
 		available_bss=`echo $available_bss ll`
+		available_launchers=`echo $available_launchers ll`
+		available_rmks=`echo $available_rmks ll`
 		;;
 	lsf)
 		hydra_bss_external=true
 		available_bss=`echo $available_bss lsf`
+		available_launchers=`echo $available_launchers lsf`
+		available_rmks=`echo $available_rmks lsf`
 		;;
 	sge)
 		hydra_bss_external=true
 		available_bss=`echo $available_bss sge`
+		available_launchers=`echo $available_launchers sge`
+		available_rmks=`echo $available_rmks sge`
 		;;
 	persist)
 		hydra_bss_persist=true
 		available_bss=`echo $available_bss persist`
+		available_launchers=`echo $available_launchers persist`
 		;;
+	pbs)
+		hydra_bss_pbs=true
+		available_bss=`echo $available_bss pbs`
+		available_rmks=`echo $available_rmks pbs`
+		;;
+	none|no)
+		hydra_bss_none=true
+		available_bss=`echo $available_bss none`
+		available_rmks=`echo $available_rmks none`
+		;;
 	*)
 		;;
     esac
 done
 
-hydra_bss_names=$available_bss
-
-for hydra_bss_name in ${hydra_bss_names}; do
-    if test -z "${hydra_default_bss}" ; then
-       hydra_default_bss=$hydra_bss_name
-    fi
-    hydra_bss_init_decl="${hydra_bss_init_decl}
-HYD_status HYDT_bsci_${hydra_bss_name}_init(void);"
-    hydra_bss_name_array="${hydra_bss_name_array} \"${hydra_bss_name}\", "
-    hydra_bss_init_array="${hydra_bss_init_array} HYDT_bsci_${hydra_bss_name}_init, "
-done
-
-hydra_bss_name_array="${hydra_bss_name_array} NULL"
-hydra_bss_init_array="${hydra_bss_init_array} NULL"
-if test "$hydra_default_bss" != "" ; then
-   AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_BSS,"$hydra_default_bss",[Default bootstrap server])
-else
-   AC_DEFINE(HYDRA_DEFAULT_BSS,NULL,[Default bootstrap server])
-fi
-AM_SUBST_NOTMAKE(hydra_bss_init_decl)
-AM_SUBST_NOTMAKE(hydra_bss_name_array)
-AM_SUBST_NOTMAKE(hydra_bss_init_array)
-AC_SUBST(hydra_bss_init_decl)
-AC_SUBST(hydra_bss_name_array)
-AC_SUBST(hydra_bss_init_array)
+## Bootstrap servers
 AM_CONDITIONAL([hydra_bss_external], [$hydra_bss_external])
 AM_CONDITIONAL([hydra_bss_persist], [$hydra_bss_persist])
+AM_CONDITIONAL([hydra_bss_pbs], [$hydra_bss_pbs])
+AM_CONDITIONAL([hydra_bss_none], [$hydra_bss_none])
 
-AC_DEFINE_UNQUOTED(HYDRA_BSS_NAMES,"$hydra_bss_names",[Definition of enabled bootstrap servers])
-AM_SUBST_NOTMAKE(hydra_bss_names)
-AC_SUBST(hydra_bss_names)
-
-
-#########################################################################
-# Check what resource management kernel we should use
-#########################################################################
-AC_ARG_WITH(hydra-rmk, [  --with-hydra-rmk=name - Resource Management Kernel (pbs)],
-		    [ hydra_rmk=$withval ],
-		    [ hydra_rmk="none,pbs" ])
-AC_MSG_CHECKING(resource management kernel)
-AC_MSG_RESULT($hydra_rmk)
-hydra_rmk_names="`echo $hydra_rmk | sed -e 's/:/ /g' -e 's/,/ /g'`"
-
-for hydra_rmk_name in ${hydra_rmk_names}; do
-    case "$hydra_rmk_name" in
-	none)
-		hydra_rmk_done=true
-		available_rmk=`echo $available_rmk none`
-		;;
-	pbs)
-		hydra_rmk_pbs=true
-		available_rmk=`echo $available_rmk pbs`
-		;;
-	*)
-		;;
-    esac
+## Launchers
+for hydra_launcher in ${available_launchers} ; do
+    hydra_launcher_array="${hydra_launcher_array} \"${hydra_launcher}\", "
+    if test -z "${hydra_default_launcher}" ; then
+       hydra_default_launcher=$hydra_launcher
+       AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_LAUNCHER,"$hydra_default_launcher",[Default launcher])
+    fi
+    hydra_launcher_init_decl="${hydra_launcher_init_decl}
+HYD_status HYDT_bsci_launcher_${hydra_launcher}_init(void);"
+    hydra_launcher_init_array="${hydra_launcher_init_array} HYDT_bsci_launcher_${hydra_launcher}_init, "
 done
+hydra_launcher_array="${hydra_launcher_array} NULL"
+hydra_launcher_init_array="${hydra_launcher_init_array} NULL"
+AM_SUBST_NOTMAKE(hydra_launcher_init_decl)
+AC_SUBST(hydra_launcher_array)
+AC_SUBST(hydra_launcher_init_array)
+AC_SUBST(hydra_launcher_init_decl)
+AC_DEFINE_UNQUOTED(HYDRA_AVAILABLE_LAUNCHERS,"$available_launchers",
+	[Definition of enabled launchers])
 
-hydra_rmk_names=$available_rmk
-
-for hydra_rmk_name in ${hydra_rmk_names}; do
+## RMK
+for hydra_rmk in ${available_rmks} ; do
+    hydra_rmk_array="${hydra_rmk_array} \"${hydra_rmk}\", "
     if test -z "${hydra_default_rmk}" ; then
-       hydra_default_rmk=$hydra_rmk_name
+       hydra_default_rmk=$hydra_rmk
+       AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_RMK,"$hydra_default_rmk",[Default RMK])
     fi
     hydra_rmk_init_decl="${hydra_rmk_init_decl}
-HYD_status HYDT_rmki_${hydra_rmk_name}_init(void);"
-    hydra_rmk_name_array="${hydra_rmk_name_array} \"${hydra_rmk_name}\", "
-    hydra_rmk_init_array="${hydra_rmk_init_array} HYDT_rmki_${hydra_rmk_name}_init, "
+HYD_status HYDT_bsci_rmk_${hydra_rmk}_init(void);"
+    hydra_rmk_init_array="${hydra_rmk_init_array} HYDT_bsci_rmk_${hydra_rmk}_init, "
 done
-
-AC_DEFINE_UNQUOTED(HYDRA_RMK_NAMES,"$hydra_rmk_names",[Enabled resource management kernels])
-AM_SUBST_NOTMAKE(hydra_rmk_names)
-AC_SUBST(hydra_rmk_names)
-
-hydra_rmk_name_array="${hydra_rmk_name_array} NULL"
+hydra_rmk_array="${hydra_rmk_array} NULL"
 hydra_rmk_init_array="${hydra_rmk_init_array} NULL"
-if test "$hydra_default_rmk" != "" ; then
-   AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_RMK,"$hydra_default_rmk",[Default resource management kernel])
-else
-   AC_DEFINE(HYDRA_DEFAULT_RMK,NULL,[Default resource management kernel])
-fi
 AM_SUBST_NOTMAKE(hydra_rmk_init_decl)
-AM_SUBST_NOTMAKE(hydra_rmk_name_array)
-AM_SUBST_NOTMAKE(hydra_rmk_init_array)
-AC_SUBST(hydra_rmk_init_decl)
-AC_SUBST(hydra_rmk_name_array)
+AC_SUBST(hydra_rmk_array)
 AC_SUBST(hydra_rmk_init_array)
-AM_CONDITIONAL([hydra_rmk_none], [$hydra_rmk_none])
-AM_CONDITIONAL([hydra_rmk_pbs], [$hydra_rmk_pbs])
+AC_SUBST(hydra_rmk_init_decl)
+AC_DEFINE_UNQUOTED(HYDRA_AVAILABLE_RMKS,"$available_rmks",[Definition of enabled RMKS])
 
 
 #########################################################################
@@ -339,17 +320,17 @@
 # Process Binding
 #########################################################################
 AC_ARG_WITH(hydra-bindlib, [  --with-hydra-bindlib=name - Process Binding Library (hwloc, plpa)],
-			   [ hydra_bindlib=$withval ],
-			   [ hydra_bindlib=hwloc,plpa ])
+			   [ hydra_bindlib_list=$withval ],
+			   [ hydra_bindlib_list=hwloc,plpa ])
 AC_MSG_CHECKING([desired process binding libraries])
-AC_MSG_RESULT([$hydra_bindlib])
+AC_MSG_RESULT([$hydra_bindlib_list])
 
-hydra_bindlib_names="`echo $hydra_bindlib | sed -e 's/:/ /g' -e 's/,/ /g'`"
+hydra_bindlibs="`echo $hydra_bindlib_list | sed -e 's/:/ /g' -e 's/,/ /g'`"
 
 have_plpa=no
 have_hwloc=no
-for hydra_bindlib_name in ${hydra_bindlib_names}; do
-    case "$hydra_bindlib_name" in
+for hydra_bindlib in ${hydra_bindlibs}; do
+    case "$hydra_bindlib" in
     	plpa)
 		PAC_CONFIG_SUBDIR(tools/bind/plpa/plpa,plpa_works=yes,plpa_works=no)
 		if test "$plpa_works" = "no" ; then
@@ -372,7 +353,7 @@
 		LDFLAGS=$old_LDFLAGS
 		AC_MSG_RESULT($plpa_works)
 		if test "$plpa_works" = "yes" ; then
-		   available_bindlib=`echo $available_bindlib plpa`
+		   available_bindlibs=`echo $available_bindlibs plpa`
 		   have_plpa=yes
 		   AC_DEFINE(HAVE_PLPA,1,[Define if plpa is available])
 		fi
@@ -398,7 +379,7 @@
 
 		if test "$have_hwloc" = "yes" ; then
 		   AC_DEFINE(HAVE_HWLOC,1,[Define if hwloc is available])
-		   available_bindlib=`echo $available_bindlib hwloc`
+		   available_bindlibs=`echo $available_bindlibs hwloc`
 		fi
 		;;
 	*)
@@ -406,16 +387,13 @@
     esac
 done
 
-hydra_bindlib_names=$available_bindlib
-
-for hydra_bindlib_name in ${hydra_bindlib_names}; do
-    if test -z "${hydra_default_bindlib}" ; then
-       hydra_default_bindlib=$hydra_bindlib_name
-    fi
+for hydra_bindlib in ${available_bindlibs}; do
+    hydra_default_bindlib=${hydra_bindlib}
+    break
 done
 
-AC_DEFINE_UNQUOTED(HYDRA_BINDLIB_NAMES,"$hydra_bindlib_names",
-		[Definition of enabled binding libraries])
+AC_DEFINE_UNQUOTED(HYDRA_AVAILABLE_BINDLIBS,"$available_bindlibs",
+	[Definition of enabled binding libraries])
 if test "$hydra_default_bindlib" != "" ; then
    AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_BINDLIB,"$hydra_default_bindlib",[Default binding library])
 else
@@ -425,30 +403,30 @@
 AM_CONDITIONAL([hydra_have_hwloc], [test "${have_hwloc}" = "yes"])
 
 AC_MSG_CHECKING([available process binding libraries])
-AC_MSG_RESULT([$hydra_bindlib_names])
+AC_MSG_RESULT([$available_bindlibs])
 
 
 #########################################################################
 # Checkpoint/Restart
 #########################################################################
 AC_ARG_WITH(hydra-ckpointlib, [  --with-hydra-ckpointlib=name - Checkpointing Library (blcr)],
-			   [ hydra_ckpointlib=$withval ],
-			   [ hydra_ckpointlib=none ])
+			   [ hydra_ckpointlib_list=$withval ],
+			   [ hydra_ckpointlib_list=none ])
 AC_MSG_CHECKING(checkpointing library)
-AC_MSG_RESULT($hydra_ckpointlib)
+AC_MSG_RESULT($hydra_ckpointlib_list)
 
-hydra_ckpointlib_names="`echo $hydra_ckpointlib | sed -e 's/:/ /g' -e 's/,/ /g'`"
+hydra_ckpointlibs="`echo $hydra_ckpointlib_list | sed -e 's/:/ /g' -e 's/,/ /g'`"
 
 have_blcr=no
-for hydra_ckpointlib_name in ${hydra_ckpointlib_names}; do
-    case "$hydra_ckpointlib_name" in
+for hydra_ckpointlib in ${hydra_ckpointlibs}; do
+    case "$hydra_ckpointlib" in
     	blcr)
 	    PAC_SET_HEADER_LIB_PATH(blcr)
 	    PAC_CHECK_HEADER_LIB(blcr, libcr.h, cr, cr_init, have_blcr=yes, have_blcr=no)
 	    # BLCR works
 	    if test "$have_blcr" = "yes" ; then
 	       AC_DEFINE(HAVE_BLCR,1,[Define if blcr is available])
-	       available_ckpointlib=`echo $available_ckpointlib blcr`
+	       available_ckpointlibs=`echo $available_ckpointlibs blcr`
 	    fi
 	    ;;		
 	*)
@@ -456,15 +434,12 @@
     esac
 done
 
-hydra_ckpointlib_names=$available_ckpointlib
-
-for hydra_ckpointlib_name in ${hydra_ckpointlib_names}; do
-    if test -z "${hydra_default_ckpointlib}" ; then
-       hydra_default_ckpointlib=$hydra_ckpointlib_name
-    fi
+for hydra_ckpointlib in ${available_ckpointlibs}; do
+    hydra_default_ckpointlib=${hydra_ckpointlib}
+    break
 done
 
-AC_DEFINE_UNQUOTED(HYDRA_CKPOINTLIB_NAMES,"$hydra_ckpointlib_names",
+AC_DEFINE_UNQUOTED(HYDRA_AVAILABLE_CKPOINTLIBS,"$available_ckpointlibs",
 		[Definition of enabled checkpointing libraries])
 if test "$hydra_default_ckpointlib" != "" ; then
    AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_CKPOINTLIB,"$hydra_default_ckpointlib",
@@ -479,34 +454,34 @@
 # Demux engine
 #########################################################################
 AC_ARG_WITH(hydra-demux, [  --with-hydra-demux=name - Demux engine (poll, select, port)],
-			 [ hydra_demux=$withval ],
-			 [ hydra_demux=poll,select,port ])
+			 [ hydra_demux_list=$withval ],
+			 [ hydra_demux_list=poll,select,port ])
 AC_MSG_CHECKING(demux engine)
-AC_MSG_RESULT($hydra_demux)
+AC_MSG_RESULT($hydra_demux_list)
 
-hydra_demux_names="`echo $hydra_demux | sed -e 's/:/ /g' -e 's/,/ /g'`"
+hydra_demuxes="`echo $hydra_demux_list | sed -e 's/:/ /g' -e 's/,/ /g'`"
 
 have_poll=no
 have_select=no
 have_port=no
-for hydra_demux_name in ${hydra_demux_names}; do
-    case "$hydra_demux_name" in
+for hydra_demux in ${hydra_demuxes}; do
+    case "$hydra_demux" in
     	poll)
-		AC_CHECK_FUNCS(poll,have_poll=yes,have_poll=no)
+		AC_CHECK_FUNCS(poll,[have_poll=yes],[have_poll=no])
 		if test "$have_poll" = "yes" ; then
-		   available_demux_names=`echo $available_demux_names poll`
+		   available_demuxes=`echo $available_demuxes poll`
 		fi
 		;;
 	select)
-		AC_CHECK_FUNCS(select,have_select=yes,have_select=no)
+		AC_CHECK_FUNCS(select,[have_select=yes],[have_select=no])
 		if test "$have_select" = "yes" ; then
-		   available_demux_names=`echo $available_demux_names select`
+		   available_demuxes=`echo $available_demuxes select`
 		fi
 		;;
 	port)
 		# FIXME: Need to add a test for completion ports
 		if test "$have_port" = "yes" ; then
-		   available_demux_names=`echo $available_demux_names port`
+		   available_demuxes=`echo $available_demuxes port`
 		fi
 		;;
 	*)
@@ -514,18 +489,16 @@
     esac
 done
 
-hydra_demux_names=$available_demux_names
-
-for hydra_demux_name in ${hydra_demux_names}; do
-    if test -z "${hydra_default_demux}" ; then
-       hydra_default_demux=$hydra_demux_name
-    fi
+for hydra_demux in ${available_demuxes}; do
+    hydra_default_demux=${hydra_demux}
+    break
 done
 
 AM_CONDITIONAL([hydra_have_poll], [test "${have_poll}" = "yes"])
 AM_CONDITIONAL([hydra_have_select], [test "${have_select}" = "yes"])
 AM_CONDITIONAL([hydra_have_port], [test "${have_port}" = "yes"])
-AC_DEFINE_UNQUOTED(HYDRA_DEMUX_NAMES,"$hydra_demux_names",[Definition of enabled demux engines])
+AC_DEFINE_UNQUOTED(HYDRA_AVAILABLE_DEMUXES,"$available_demuxes",
+	[Definition of enabled demux engines])
 if test "$hydra_default_demux" != "" ; then
    AC_DEFINE_UNQUOTED(HYDRA_DEFAULT_DEMUX,"$hydra_default_demux",[Default demux engine])
 else
@@ -677,7 +650,5 @@
 AC_OUTPUT(Makefile
 	tools/bootstrap/src/bsci_init.c
 	tools/bootstrap/include/bsci.h
-	tools/rmk/src/rmki_init.c
-	tools/rmk/include/rmki.h
 	hydra-doxygen.cfg
 )

Modified: mpich2/trunk/src/pm/hydra/include/hydra.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/include/hydra.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -24,7 +24,6 @@
     char *base_path;
 
     char *css;
-    char *rmk;
 
     char *port_range;
 

Modified: mpich2/trunk/src/pm/hydra/include/hydra_base.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_base.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/include/hydra_base.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -279,10 +279,13 @@
 
 /* Global user parameters */
 struct HYD_user_global {
-    /* Bootstrap server */
-    char *bootstrap;
-    char *bootstrap_exec;
+    /* RMK */
+    char *rmk;
 
+    /* Launcher */
+    char *launcher;
+    char *launcher_exec;
+
     /* Process binding */
     char *binding;
     char *bindlib;

Modified: mpich2/trunk/src/pm/hydra/include/hydra_utils.h
===================================================================
--- mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/include/hydra_utils.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -110,7 +110,9 @@
 
 /* alloc */
 void HYDU_init_user_global(struct HYD_user_global *user_global);
+void HYDU_finalize_user_global(struct HYD_user_global *user_global);
 void HYDU_init_global_env(struct HYD_env_global *global_env);
+void HYDU_finalize_global_env(struct HYD_env_global *global_env);
 HYD_status HYDU_alloc_node(struct HYD_node **node);
 void HYDU_free_node_list(struct HYD_node *node_list);
 void HYDU_init_pg(struct HYD_pg *pg, int pgid);

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -62,15 +62,11 @@
 
     HYDU_FUNC_ENTER();
 
+    HYDU_finalize_user_global(&HYD_pmcd_pmip.user_global);
+
     if (HYD_pmcd_pmip.upstream.server_name)
         HYDU_FREE(HYD_pmcd_pmip.upstream.server_name);
 
-    if (HYD_pmcd_pmip.user_global.bootstrap)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.bootstrap);
-
-    if (HYD_pmcd_pmip.user_global.bootstrap_exec)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.bootstrap_exec);
-
     if (HYD_pmcd_pmip.system_global.pmi_fd)
         HYDU_FREE(HYD_pmcd_pmip.system_global.pmi_fd);
 
@@ -80,33 +76,6 @@
     if (HYD_pmcd_pmip.system_global.pmi_process_mapping)
         HYDU_FREE(HYD_pmcd_pmip.system_global.pmi_process_mapping);
 
-    if (HYD_pmcd_pmip.user_global.binding)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.binding);
-
-    if (HYD_pmcd_pmip.user_global.bindlib)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.bindlib);
-
-    if (HYD_pmcd_pmip.user_global.ckpointlib)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.ckpointlib);
-
-    if (HYD_pmcd_pmip.user_global.ckpoint_prefix)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.ckpoint_prefix);
-
-    if (HYD_pmcd_pmip.user_global.demux)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.demux);
-
-    if (HYD_pmcd_pmip.user_global.iface)
-        HYDU_FREE(HYD_pmcd_pmip.user_global.iface);
-
-    if (HYD_pmcd_pmip.user_global.global_env.system)
-        HYDU_env_free_list(HYD_pmcd_pmip.user_global.global_env.system);
-
-    if (HYD_pmcd_pmip.user_global.global_env.user)
-        HYDU_env_free_list(HYD_pmcd_pmip.user_global.global_env.user);
-
-    if (HYD_pmcd_pmip.user_global.global_env.inherited)
-        HYDU_env_free_list(HYD_pmcd_pmip.user_global.global_env.inherited);
-
     if (HYD_pmcd_pmip.exec_list) {
         exec = HYD_pmcd_pmip.exec_list;
         while (exec) {

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_pmi_v1.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -299,7 +299,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_query_usize(&usize);
-    HYDU_ERR_POP(status, "unable to get bootstrap universe size\n");
+    HYDU_ERR_POP(status, "unable to get launcher universe size\n");
 
     i = 0;
     tmp[i++] = HYDU_strdup("cmd=universe_size size=");

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmip_utils.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -68,16 +68,21 @@
     return HYDU_set_int(arg, argv, &HYD_pmcd_pmip.user_global.debug, 1);
 }
 
-static HYD_status bootstrap_fn(char *arg, char ***argv)
+static HYD_status rmk_fn(char *arg, char ***argv)
 {
-    return HYDU_set_str_and_incr(arg, argv, &HYD_pmcd_pmip.user_global.bootstrap);
+    return HYDU_set_str_and_incr(arg, argv, &HYD_pmcd_pmip.user_global.rmk);
 }
 
-static HYD_status bootstrap_exec_fn(char *arg, char ***argv)
+static HYD_status launcher_fn(char *arg, char ***argv)
 {
-    return HYDU_set_str_and_incr(arg, argv, &HYD_pmcd_pmip.user_global.bootstrap_exec);
+    return HYDU_set_str_and_incr(arg, argv, &HYD_pmcd_pmip.user_global.launcher);
 }
 
+static HYD_status launcher_exec_fn(char *arg, char ***argv)
+{
+    return HYDU_set_str_and_incr(arg, argv, &HYD_pmcd_pmip.user_global.launcher_exec);
+}
+
 static HYD_status demux_fn(char *arg, char ***argv)
 {
     return HYDU_set_str_and_incr(arg, argv, &HYD_pmcd_pmip.user_global.demux);
@@ -388,8 +393,9 @@
     {"proxy-id", proxy_id_fn, NULL},
     {"pgid", pgid_fn, NULL},
     {"debug", debug_fn, NULL},
-    {"bootstrap", bootstrap_fn, NULL},
-    {"bootstrap-exec", bootstrap_exec_fn, NULL},
+    {"rmk", rmk_fn, NULL},
+    {"launcher", launcher_fn, NULL},
+    {"launcher-exec", launcher_exec_fn, NULL},
     {"demux", demux_fn, NULL},
     {"iface", iface_fn, NULL},
     {"prepend-rank", prepend_rank_fn, NULL},
@@ -464,15 +470,17 @@
     if (HYD_pmcd_pmip.user_global.prepend_rank == -1)
         HYD_pmcd_pmip.user_global.prepend_rank = 0;
 
-    status = HYDT_bsci_init(HYD_pmcd_pmip.user_global.bootstrap, NULL /* no bootstrap exec */ ,
+    status = HYDT_bsci_init(HYD_pmcd_pmip.user_global.rmk,
+                            HYD_pmcd_pmip.user_global.launcher,
+                            HYD_pmcd_pmip.user_global.launcher_exec,
                             0 /* disable x */ , HYD_pmcd_pmip.user_global.debug);
-    HYDU_ERR_POP(status, "proxy unable to initialize bootstrap\n");
+    HYDU_ERR_POP(status, "proxy unable to initialize bootstrap server\n");
 
     if (HYD_pmcd_pmip.local.id == -1) {
-        /* We didn't get a proxy ID during launch; query the bootstrap
-         * server for it. */
+        /* We didn't get a proxy ID during launch; query the launcher
+         * for it. */
         status = HYDT_bsci_query_proxy_id(&HYD_pmcd_pmip.local.id);
-        HYDU_ERR_POP(status, "unable to query bootstrap server for proxy ID\n");
+        HYDU_ERR_POP(status, "unable to query launcher for proxy ID\n");
     }
 
     if (HYD_pmcd_pmip.local.id == -1)

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -127,7 +127,7 @@
     status = HYD_pmcd_pmi_alloc_pg_scratch(&HYD_handle.pg_list);
     HYDU_ERR_POP(status, "error allocating pg scratch space\n");
 
-    /* Copy the host list to pass to the bootstrap server */
+    /* Copy the host list to pass to the launcher */
     node_list = NULL;
     node_count = 0;
     for (proxy = HYD_handle.pg_list.proxy_list; proxy; proxy = proxy->next) {
@@ -172,7 +172,7 @@
     HYDU_ERR_POP(status, "unable to initializing binding library");
 
     status = HYDT_bsci_launch_procs(proxy_args, node_list, control_fd, enable_stdin);
-    HYDU_ERR_POP(status, "bootstrap server cannot launch processes\n");
+    HYDU_ERR_POP(status, "launcher cannot launch processes\n");
 
     for (i = 0, proxy = HYD_handle.pg_list.proxy_list; proxy; proxy = proxy->next, i++)
         if (control_fd[i] != HYD_FD_UNSET) {
@@ -226,7 +226,7 @@
     /* Either all application processes exited or we have timed
      * out. We now wait for all the proxies to terminate. */
     status = HYDT_bsci_wait_for_completion(-1);
-    HYDU_ERR_POP(status, "bootstrap server returned error waiting for completion\n");
+    HYDU_ERR_POP(status, "launcher returned error waiting for completion\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v1.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -504,7 +504,7 @@
     /* Go to the last PG */
     for (pg = &HYD_handle.pg_list; pg->next; pg = pg->next);
 
-    /* Copy the host list to pass to the bootstrap server */
+    /* Copy the host list to pass to the launcher */
     node_list = NULL;
     for (proxy = pg->proxy_list; proxy; proxy = proxy->next) {
         HYDU_alloc_node(&node);
@@ -529,7 +529,7 @@
     HYDU_ERR_POP(status, "unable to fill in executable arguments\n");
 
     status = HYDT_bsci_launch_procs(proxy_args, node_list, NULL, 0);
-    HYDU_ERR_POP(status, "bootstrap server cannot launch processes\n");
+    HYDU_ERR_POP(status, "launcher cannot launch processes\n");
     HYDU_free_node_list(node_list);
 
     {

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_pmi_v2.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -688,7 +688,7 @@
     /* Go to the last PG */
     for (pg = &HYD_handle.pg_list; pg->next; pg = pg->next);
 
-    /* Copy the host list to pass to the bootstrap server */
+    /* Copy the host list to pass to the launcher */
     node_list = NULL;
     for (proxy = pg->proxy_list; proxy; proxy = proxy->next) {
         HYDU_alloc_node(&node);
@@ -713,7 +713,7 @@
     HYDU_ERR_POP(status, "unable to fill in executable arguments\n");
 
     status = HYDT_bsci_launch_procs(proxy_args, node_list, NULL, 0);
-    HYDU_ERR_POP(status, "bootstrap server cannot launch processes\n");
+    HYDU_ERR_POP(status, "launcher cannot launch processes\n");
     HYDU_free_node_list(node_list);
 
     {

Modified: mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/pm/pmiserv/pmiserv_utils.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -57,16 +57,21 @@
     if (HYD_handle.user_global.debug)
         proxy_args[arg++] = HYDU_strdup("--debug");
 
-    if (HYD_handle.user_global.bootstrap) {
-        proxy_args[arg++] = HYDU_strdup("--bootstrap");
-        proxy_args[arg++] = HYDU_strdup(HYD_handle.user_global.bootstrap);
+    if (HYD_handle.user_global.rmk) {
+        proxy_args[arg++] = HYDU_strdup("--rmk");
+        proxy_args[arg++] = HYDU_strdup(HYD_handle.user_global.rmk);
     }
 
-    if (HYD_handle.user_global.bootstrap_exec) {
-        proxy_args[arg++] = HYDU_strdup("--bootstrap-exec");
-        proxy_args[arg++] = HYDU_strdup(HYD_handle.user_global.bootstrap_exec);
+    if (HYD_handle.user_global.launcher) {
+        proxy_args[arg++] = HYDU_strdup("--launcher");
+        proxy_args[arg++] = HYDU_strdup(HYD_handle.user_global.launcher);
     }
 
+    if (HYD_handle.user_global.launcher_exec) {
+        proxy_args[arg++] = HYDU_strdup("--launcher-exec");
+        proxy_args[arg++] = HYDU_strdup(HYD_handle.user_global.launcher_exec);
+    }
+
     if (HYD_handle.user_global.prepend_rank)
         proxy_args[arg++] = HYDU_strdup("--prepend-rank");
 

Modified: mpich2/trunk/src/pm/hydra/tools/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/Makefile.mk	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/Makefile.mk	2010-11-29 08:03:19 UTC (rev 7512)
@@ -10,7 +10,6 @@
 include tools/bootstrap/Makefile.mk
 include tools/ckpoint/Makefile.mk
 include tools/demux/Makefile.mk
-include tools/rmk/Makefile.mk
 include tools/debugger/Makefile.mk
 include tools/nameserver/Makefile.mk
 include tools/ftb/Makefile.mk

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/Makefile.mk	2010-11-29 08:03:19 UTC (rev 7512)
@@ -17,4 +17,5 @@
 	$(top_srcdir)/tools/bootstrap/external/ll_query_node_list.c \
 	$(top_srcdir)/tools/bootstrap/external/ll_query_proxy_id.c \
 	$(top_srcdir)/tools/bootstrap/external/lsf_query_node_list.c \
-	$(top_srcdir)/tools/bootstrap/external/sge_query_node_list.c
+	$(top_srcdir)/tools/bootstrap/external/sge_query_node_list.c \
+	$(top_srcdir)/tools/bootstrap/external/pbs_query_node_list.c

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -12,10 +12,11 @@
 #include "lsf.h"
 #include "ll.h"
 #include "sge.h"
+#include "pbs.h"
 
 HYD_status HYDT_bscd_external_launch_procs(char **args, struct HYD_node *node_list,
                                            int *control_fd, int enable_stdin);
-HYD_status HYDT_bscd_external_finalize(void);
+HYD_status HYDT_bscd_external_launcher_finalize(void);
 HYD_status HYDT_bscd_external_query_env_inherit(const char *env_name, int *ret);
 HYD_status HYDT_bscd_external_query_native_int(int *ret);
 

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_env.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_env.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_env.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -17,7 +17,7 @@
 
     *ret = 1;
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "ssh")) {
+    if (!strcmp(HYDT_bsci_info.rmk, "ssh")) {
         const char *env_list[] = { "DISPLAY", NULL };
 
         for (i = 0; env_list[i]; i++) {
@@ -28,7 +28,7 @@
         }
     }
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "lsf")) {
+    if (!strcmp(HYDT_bsci_info.rmk, "lsf")) {
         const char *env_list[] = { "DISPLAY", "EGO_SERVERDIR", "LSB_TRAPSIGS",
             "LSF_SERVERDIR", "HOSTTYPE", "LSB_HOSTS",
             "LSF_BINDIR", "EGO_BINDIR", "PWD", "HOME",
@@ -56,7 +56,7 @@
         }
     }
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "sge")) {
+    if (!strcmp(HYDT_bsci_info.rmk, "sge")) {
         const char *env_list[] = { "DISPLAY", "SGE_ROOT", "SGE_CELL", "SGE_DEBUG_LEVEL",
             "SGE_QMASTER_PORT", "SGE_O_HOME", "SGE_O_HOST",
             "SGE_O_LOGNAME", "SGE_O_MAIL", "SGE_O_PATH",
@@ -80,7 +80,7 @@
         }
     }
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "slurm")) {
+    if (!strcmp(HYDT_bsci_info.rmk, "slurm")) {
         const char *env_list[] = { "SLURM_ACCOUNT", "SLURM_CPU_BIND",
             "SLURM_CPUS_PER_TASK", "SLURM_CONN_TYPE",
             "SLURM_CORE_FORMAT", "SLURM_DEBUG", "SLURMD_DEBUG",
@@ -110,7 +110,7 @@
         }
     }
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "ll")) {
+    if (!strcmp(HYDT_bsci_info.rmk, "ll")) {
         const char *env_list[] = { "LOADL_STEP_CLASS", "LOADL_STEP_ARGS",
             "LOADL_STEP_ID", "LOADL_STARTD_PORT",
             "LOADL_STEP_NICE", "LOADL_STEP_IN", "LOADL_STEP_ERR",

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_finalize.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_finalize.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_finalize.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -8,14 +8,14 @@
 #include "bsci.h"
 #include "external.h"
 
-HYD_status HYDT_bscd_external_finalize(void)
+HYD_status HYDT_bscd_external_launcher_finalize(void)
 {
     struct HYDT_bscd_ssh_time *e, *tmp;
     HYD_status status = HYD_SUCCESS;
 
     HYDU_FUNC_ENTER();
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "ssh")) {
+    if (!strcmp(HYDT_bsci_info.launcher, "ssh")) {
         for (e = HYDT_bscd_ssh_time; e;) {
             HYDU_FREE(e->hostname);
             tmp = e->next;

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_init.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -8,84 +8,126 @@
 #include "bsci.h"
 #include "external.h"
 
-static HYD_status external_init(void)
+static HYD_status external_rmk_init(void)
 {
     HYD_status status = HYD_SUCCESS;
 
     HYDU_FUNC_ENTER();
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "ssh"))
-        HYDT_bsci_fns.launch_procs = HYDT_bscd_external_launch_procs;
+    if (!strcmp(HYDT_bsci_info.rmk, "slurm"))
+        HYDT_bsci_fns.query_node_list = HYDT_bscd_slurm_query_node_list;
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "lsf"))
+    if (!strcmp(HYDT_bsci_info.rmk, "ll"))
+        HYDT_bsci_fns.query_node_list = HYDT_bscd_ll_query_node_list;
+
+    if (!strcmp(HYDT_bsci_info.rmk, "lsf"))
         HYDT_bsci_fns.query_node_list = HYDT_bscd_lsf_query_node_list;
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "sge"))
+    if (!strcmp(HYDT_bsci_info.rmk, "sge"))
         HYDT_bsci_fns.query_node_list = HYDT_bscd_sge_query_node_list;
 
-    /* rsh, fork use the default values */
+    if (!strcmp(HYDT_bsci_info.rmk, "pbs"))
+        HYDT_bsci_fns.query_node_list = HYDT_bscd_pbs_query_node_list;
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "slurm")) {
+    /* for everything else, set default values */
+    if (HYDT_bsci_fns.query_native_int == NULL)
+        HYDT_bsci_fns.query_native_int = HYDT_bscd_external_query_native_int;
+
+    HYDU_FUNC_EXIT();
+
+    return status;
+}
+
+static HYD_status external_launcher_init(void)
+{
+    HYD_status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    if (!strcmp(HYDT_bsci_info.launcher, "slurm")) {
         HYDT_bsci_fns.launch_procs = HYDT_bscd_slurm_launch_procs;
         HYDT_bsci_fns.query_proxy_id = HYDT_bscd_slurm_query_proxy_id;
-        HYDT_bsci_fns.query_node_list = HYDT_bscd_slurm_query_node_list;
     }
 
-    if (!strcmp(HYDT_bsci_info.bootstrap, "ll")) {
+    if (!strcmp(HYDT_bsci_info.launcher, "ll"))
         HYDT_bsci_fns.launch_procs = HYDT_bscd_ll_launch_procs;
-        HYDT_bsci_fns.query_proxy_id = HYDT_bscd_ll_query_proxy_id;
-        HYDT_bsci_fns.query_node_list = HYDT_bscd_ll_query_node_list;
-    }
 
-    /* set default values */
+    /* for everything else, set default values */
     if (HYDT_bsci_fns.launch_procs == NULL)
         HYDT_bsci_fns.launch_procs = HYDT_bscd_external_launch_procs;
 
-    if (HYDT_bsci_fns.finalize == NULL)
-        HYDT_bsci_fns.finalize = HYDT_bscd_external_finalize;
+    if (HYDT_bsci_fns.launcher_finalize == NULL)
+        HYDT_bsci_fns.launcher_finalize = HYDT_bscd_external_launcher_finalize;
 
     if (HYDT_bsci_fns.query_env_inherit == NULL)
         HYDT_bsci_fns.query_env_inherit = HYDT_bscd_external_query_env_inherit;
 
-    if (HYDT_bsci_fns.query_native_int == NULL)
-        HYDT_bsci_fns.query_native_int = HYDT_bscd_external_query_native_int;
-
     HYDU_FUNC_EXIT();
 
     return status;
 }
 
-HYD_status HYDT_bsci_ssh_init(void)
+HYD_status HYDT_bsci_launcher_ssh_init(void)
 {
-    return external_init();
+    return external_launcher_init();
 }
 
-HYD_status HYDT_bsci_rsh_init(void)
+HYD_status HYDT_bsci_launcher_rsh_init(void)
 {
-    return external_init();
+    return external_launcher_init();
 }
 
-HYD_status HYDT_bsci_fork_init(void)
+HYD_status HYDT_bsci_launcher_fork_init(void)
 {
-    return external_init();
+    return external_launcher_init();
 }
 
-HYD_status HYDT_bsci_lsf_init(void)
+HYD_status HYDT_bsci_launcher_lsf_init(void)
 {
-    return external_init();
+    return external_launcher_init();
 }
 
-HYD_status HYDT_bsci_sge_init(void)
+HYD_status HYDT_bsci_launcher_sge_init(void)
 {
-    return external_init();
+    return external_launcher_init();
 }
 
-HYD_status HYDT_bsci_slurm_init(void)
+HYD_status HYDT_bsci_launcher_slurm_init(void)
 {
-    return external_init();
+    return external_launcher_init();
 }
 
-HYD_status HYDT_bsci_ll_init(void)
+HYD_status HYDT_bsci_launcher_ll_init(void)
 {
-    return external_init();
+    return external_launcher_init();
 }
+
+HYD_status HYDT_bsci_rmk_lsf_init(void)
+{
+    return external_rmk_init();
+}
+
+HYD_status HYDT_bsci_rmk_sge_init(void)
+{
+    return external_rmk_init();
+}
+
+HYD_status HYDT_bsci_rmk_slurm_init(void)
+{
+    return external_rmk_init();
+}
+
+HYD_status HYDT_bsci_rmk_ll_init(void)
+{
+    return external_rmk_init();
+}
+
+HYD_status HYDT_bsci_rmk_pbs_init(void)
+{
+    return external_rmk_init();
+}
+
+HYD_status HYDT_bsci_rmk_none_init(void)
+{
+    return external_rmk_init();
+}

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_launch.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_launch.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -88,21 +88,21 @@
     /* We use the following priority order for the executable path:
      * (1) user-specified; (2) search in path; (3) Hard-coded
      * location */
-    if (HYDT_bsci_info.bootstrap_exec)
-        path = HYDU_strdup(HYDT_bsci_info.bootstrap_exec);
-    if (!strcmp(HYDT_bsci_info.bootstrap, "ssh")) {
+    if (HYDT_bsci_info.launcher_exec)
+        path = HYDU_strdup(HYDT_bsci_info.launcher_exec);
+    if (!strcmp(HYDT_bsci_info.launcher, "ssh")) {
         if (!path)
             path = HYDU_find_full_path("ssh");
         if (!path)
             path = HYDU_strdup("/usr/bin/ssh");
     }
-    else if (!strcmp(HYDT_bsci_info.bootstrap, "rsh")) {
+    else if (!strcmp(HYDT_bsci_info.launcher, "rsh")) {
         if (!path)
             path = HYDU_find_full_path("rsh");
         if (!path)
             path = HYDU_strdup("/usr/bin/rsh");
     }
-    else if (!strcmp(HYDT_bsci_info.bootstrap, "lsf")) {
+    else if (!strcmp(HYDT_bsci_info.launcher, "lsf")) {
         char *bin_dir = NULL;
         int length;
 
@@ -117,7 +117,7 @@
         if (!path)
             path = HYDU_strdup("/usr/bin/blaunch");
     }
-    else if (!strcmp(HYDT_bsci_info.bootstrap, "sge")) {
+    else if (!strcmp(HYDT_bsci_info.launcher, "sge")) {
         char *sge_root = NULL, *arc = NULL;
         int length;
 
@@ -149,7 +149,7 @@
     }
 
     /* Allow X forwarding only if explicitly requested */
-    if (!strcmp(HYDT_bsci_info.bootstrap, "ssh")) {
+    if (!strcmp(HYDT_bsci_info.launcher, "ssh")) {
         if (HYDT_bsci_info.enablex == 1)
             targs[idx++] = HYDU_strdup("-X");
         else if (HYDT_bsci_info.enablex == 0)
@@ -157,10 +157,10 @@
         else    /* default mode is disable X */
             targs[idx++] = HYDU_strdup("-x");
     }
-    else if (!strcmp(HYDT_bsci_info.bootstrap, "lsf")) {
+    else if (!strcmp(HYDT_bsci_info.launcher, "lsf")) {
         targs[idx++] = HYDU_strdup("-n");
     }
-    else if (!strcmp(HYDT_bsci_info.bootstrap, "sge")) {
+    else if (!strcmp(HYDT_bsci_info.launcher, "sge")) {
         targs[idx++] = HYDU_strdup("-inherit");
         targs[idx++] = HYDU_strdup("-V");
     }
@@ -212,7 +212,7 @@
          * quickly. If this happens, the ssh daemons disables ssh
          * connections causing the job to fail. This is basically a
          * hack to slow down ssh connections to the same node. */
-        if (!strcmp(HYDT_bsci_info.bootstrap, "ssh")) {
+        if (!strcmp(HYDT_bsci_info.launcher, "ssh")) {
             status = HYDT_bscd_ssh_store_launch_time(node->hostname);
             HYDU_ERR_POP(status, "error storing launch time\n");
         }
@@ -220,9 +220,9 @@
         status = is_local_host(node->hostname, &lh);
         HYDU_ERR_POP(status, "error checking if node is localhost\n");
 
-        /* If bootstrap server is 'fork', or this is the localhost,
-         * use fork to launch the process */
-        if (!strcmp(HYDT_bsci_info.bootstrap, "fork") || lh) {
+        /* If launcher is 'fork', or this is the localhost, use fork
+         * to launch the process */
+        if (!strcmp(HYDT_bsci_info.launcher, "fork") || lh) {
             offset = exec_idx;
 
             if (control_fd) {
@@ -249,13 +249,13 @@
         else {
             offset = 0;
 
-            /* dummy is NULL only for bootstrap servers that can
-             * handle a closed stdin socket. Older versions of ssh and
-             * SGE seem to have problems when stdin is closed before
-             * they are launched. */
-            if (!strcmp(HYDT_bsci_info.bootstrap, "ssh") ||
-                !strcmp(HYDT_bsci_info.bootstrap, "rsh") ||
-                !strcmp(HYDT_bsci_info.bootstrap, "sge"))
+            /* dummy is NULL only for launchers that can handle a
+             * closed stdin socket. Older versions of ssh and SGE seem
+             * to have problems when stdin is closed before they are
+             * launched. */
+            if (!strcmp(HYDT_bsci_info.launcher, "ssh") ||
+                !strcmp(HYDT_bsci_info.launcher, "rsh") ||
+                !strcmp(HYDT_bsci_info.launcher, "sge"))
                 dummy = &fd;
             else
                 dummy = NULL;

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_query_native_int.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_query_native_int.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/external_query_native_int.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -27,7 +27,7 @@
 
     *ret = 0;
 
-    while (!strcmp(HYDT_bsci_info.bootstrap, "lsf")) {
+    while (!strcmp(HYDT_bsci_info.rmk, "lsf")) {
         if (!env_is_avail("LSF_BINDIR"))
             break;
         if (!env_is_avail("LSB_MCPU_HOSTS"))
@@ -37,7 +37,7 @@
         goto fn_exit;
     }
 
-    while (!strcmp(HYDT_bsci_info.bootstrap, "sge")) {
+    while (!strcmp(HYDT_bsci_info.rmk, "sge")) {
         if (!env_is_avail("SGE_ROOT"))
             break;
         if (!env_is_avail("ARC"))
@@ -49,7 +49,7 @@
         goto fn_exit;
     }
 
-    while (!strcmp(HYDT_bsci_info.bootstrap, "slurm")) {
+    while (!strcmp(HYDT_bsci_info.rmk, "slurm")) {
         if (!env_is_avail("SLURM_NODELIST"))
             break;
         if (!env_is_avail("SLURM_JOB_CPUS_PER_NODE"))
@@ -61,7 +61,7 @@
         goto fn_exit;
     }
 
-    while (!strcmp(HYDT_bsci_info.bootstrap, "ll")) {
+    while (!strcmp(HYDT_bsci_info.rmk, "ll")) {
         if (!env_is_avail("LOADL_HOSTFILE"))
             break;
         if (!env_is_avail("MP_CHILD"))
@@ -71,6 +71,14 @@
         goto fn_exit;
     }
 
+    while (!strcmp(HYDT_bsci_info.rmk, "pbs")) {
+        if (!env_is_avail("PBS_NODEFILE"))
+            break;
+
+        *ret = 1;
+        goto fn_exit;
+    }
+
   fn_exit:
     HYDU_FUNC_EXIT();
     return status;

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_launch.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_launch.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -28,8 +28,8 @@
     /* We use the following priority order for the executable path:
      * (1) user-specified; (2) search in path; (3) Hard-coded
      * location */
-    if (HYDT_bsci_info.bootstrap_exec)
-        path = HYDU_strdup(HYDT_bsci_info.bootstrap_exec);
+    if (HYDT_bsci_info.launcher_exec)
+        path = HYDU_strdup(HYDT_bsci_info.launcher_exec);
     if (!path)
         path = HYDU_find_full_path("poe");
     if (!path)

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_query_node_list.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_query_node_list.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/ll_query_node_list.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -60,7 +60,7 @@
     }
     *node_list = global_node_list;
 
-    /* node list is provided by the bootstrap server */
+    /* node list is provided by the RMK */
     HYDT_bscd_ll_user_node_list = 0;
 
   fn_exit:

Added: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -0,0 +1,16 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ *  (C) 2008 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#ifndef PBS_H_INCLUDED
+#define PBS_H_INCLUDED
+
+#include "hydra_base.h"
+
+HYD_status HYDT_bscd_pbs_query_node_list(struct HYD_node **node_list);
+
+extern int HYDT_bscd_pbs_user_node_list;
+
+#endif /* PBS_H_INCLUDED */

Copied: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_node_list.c (from rev 7511, mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_node_list.c)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_node_list.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/pbs_query_node_list.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -0,0 +1,65 @@
+/* -*- Mode: C; c-basic-offset:4 ; -*- */
+/*
+ *  (C) 2008 by Argonne National Laboratory.
+ *      See COPYRIGHT in top-level directory.
+ */
+
+#include "hydra_utils.h"
+#include "bsci.h"
+#include "pbs.h"
+
+static struct HYD_node *global_node_list = NULL;
+
+static HYD_status process_mfile_token(char *token, int newline)
+{
+    int num_procs;
+    char *hostname, *procs;
+    HYD_status status = HYD_SUCCESS;
+
+    if (newline) {      /* The first entry gives the hostname and processes */
+        hostname = strtok(token, ":");
+        procs = strtok(NULL, ":");
+        num_procs = procs ? atoi(procs) : 1;
+
+        status = HYDU_add_to_node_list(hostname, num_procs, &global_node_list);
+        HYDU_ERR_POP(status, "unable to initialize proxy\n");
+    }
+    else {      /* Not a new line */
+        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
+                            "token %s not supported at this time\n", token);
+    }
+
+  fn_exit:
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}
+
+HYD_status HYDT_bscd_pbs_query_node_list(struct HYD_node **node_list)
+{
+    char *hostfile;
+    HYD_status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    if (MPL_env2str("PBS_NODEFILE", (const char **) &hostfile) == 0)
+        hostfile = NULL;
+
+    if (hostfile == NULL) {
+        *node_list = NULL;
+        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "No PBS nodefile found\n");
+    }
+    else {
+        status = HYDU_parse_hostfile(hostfile, process_mfile_token);
+        HYDU_ERR_POP(status, "error parsing hostfile\n");
+    }
+    *node_list = global_node_list;
+
+  fn_exit:
+    HYDU_FUNC_EXIT();
+    return status;
+
+  fn_fail:
+    goto fn_exit;
+}

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_launch.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_launch.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -75,8 +75,8 @@
     /* We use the following priority order for the executable path:
      * (1) user-specified; (2) search in path; (3) Hard-coded
      * location */
-    if (HYDT_bsci_info.bootstrap_exec)
-        path = HYDU_strdup(HYDT_bsci_info.bootstrap_exec);
+    if (HYDT_bsci_info.launcher_exec)
+        path = HYDU_strdup(HYDT_bsci_info.launcher_exec);
     if (!path)
         path = HYDU_find_full_path("srun");
     if (!path)

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/external/slurm_query_node_list.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -201,7 +201,7 @@
             }
         }
 
-        /* node list is provided by the bootstrap server */
+        /* node list is provided by the RMK */
         HYDT_bscd_slurm_user_node_list = 0;
 
         if (tstr)

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/include/bsci.h.in	2010-11-29 08:03:19 UTC (rev 7512)
@@ -17,12 +17,15 @@
  * \brief BSCI internal structure to maintain persistent information.
  */
 struct HYDT_bsci_info {
-    /** \brief Boostrap server to use */
-    const char *bootstrap;
+    /** \brief RMK to use */
+    const char *rmk;
 
-    /** \brief Boostrap executable to use */
-    const char *bootstrap_exec;
+    /** \brief Launcher to use */
+    const char *launcher;
 
+    /** \brief Launcher executable to use */
+    const char *launcher_exec;
+
     /** \brief Enable/disable X-forwarding */
     int  enablex;
 
@@ -35,22 +38,31 @@
  * different BSCI functions.
  */
 struct HYDT_bsci_fns {
+    /* RMK functions */
+    /** \brief Query if the RMK integrates natively with the RM */
+    HYD_status(*query_native_int) (int *ret);
+
+    /** \brief Query for node list information */
+    HYD_status(*query_node_list) (struct HYD_node **node_list);
+
+    /** \brief Finalize the RMK */
+    HYD_status(*rmk_finalize) (void);
+
+
+    /* Launcher functions */
     /** \brief Launch processes */
     HYD_status(*launch_procs) (
         char **args, struct HYD_node *node_list, int *control_fd, int enable_stdin);
 
     /** \brief Finalize the bootstrap control device */
-    HYD_status(*finalize) (void);
+    HYD_status(*launcher_finalize) (void);
 
-    /** \brief Wait for bootstrap launched processes to complete */
+    /** \brief Wait for launched processes to complete */
     HYD_status(*wait_for_completion) (int timeout);
 
     /** \brief Cleanup processes */
     HYD_status(*cleanup_procs) (void);
 
-    /** \brief Query for node list information */
-    HYD_status(*query_node_list) (struct HYD_node **node_list);
-
     /** \brief Query for the universe size */
     HYD_status(*query_usize) (int *size);
 
@@ -59,10 +71,6 @@
 
     /** \brief Query if an environment variable should be inherited */
     HYD_status(*query_env_inherit) (const char *env_name, int *ret);
-
-    /** \brief Query if the bootstrap server integrates natively with
-     * the RM */
-    HYD_status(*query_native_int) (int *ret);
 };
 
 /** \cond */
@@ -73,8 +81,9 @@
 /**
  * \brief HYDT_bsci_init - Initialize the bootstrap control device
  *
- * \param[in]   bootstrap       Bootstrap device to use
- * \param[in]   bootstrap_exec  Bootstrap helper executable to use (optional)
+ * \param[in]   rmk             Resource management kernel to use
+ * \param[in]   launcher        Launcher to use
+ * \param[in]   launcher_exec   Launcher executable to use (optional)
  * \param[in]   enablex         Enable/disable X-forwarding (hint only)
  * \param[in]   debug           Enable/disable debugging
  *
@@ -83,7 +92,8 @@
  * expected to set any bootstrap implementation specific function
  * pointers in this function to be used by later BSCI calls.
  */
-HYD_status HYDT_bsci_init(const char *bootstrap, const char *bootstrap_exec, int enablex,
+HYD_status HYDT_bsci_init(const char *rmk, const char *launcher,
+                          const char *launcher_exec, int enablex,
                           int debug);
 
 
@@ -102,12 +112,11 @@
  * launch. Upper layers will need to account for this automatic
  * addition of the proxy ID.
  *
- * Bootstrap servers that perform sequential launches (one process at
- * a time), should set the proxy ID string in sequential
- * order. Bootstrap servers that perform parallel launches should set
- * the proxy ID string to "-1", but allow proxies to query their ID
- * information on each node using the HYDT_bsci_query_proxy_id
- * function.
+ * Launchers that perform sequential launches (one process at a time),
+ * should set the proxy ID string in sequential order. Launchers that
+ * perform parallel launches should set the proxy ID string to "-1",
+ * but allow proxies to query their ID information on each node using
+ * the HYDT_bsci_query_proxy_id function.
  */
 HYD_status HYDT_bsci_launch_procs(
     char **args, struct HYD_node *node_list, int *control_fd, int enable_stdin);
@@ -123,15 +132,15 @@
 
 
 /**
- * \brief HYDT_bsci_wait_for_completion - Wait for bootstrap launched processes to complete
+ * \brief HYDT_bsci_wait_for_completion - Wait for launched processes to complete
  *
  * \param[in]  timeout        Time to wait for
  *
  * \param[ret] status         HYD_TIMED_OUT if the timer expired
  *
  * This function waits for all processes it launched to finish. The
- * bootstrap control device should keep track of the processes it is
- * launching and wait for their completion.
+ * launcher should keep track of the processes it is launching and
+ * wait for their completion.
  */
 HYD_status HYDT_bsci_wait_for_completion(int timeout);
 
@@ -152,8 +161,8 @@
  *
  * This function allows the upper layers to query the available
  * nodes. It is important to note that if the upper layer queries the
- * bootstrap server with this function, the bootstrap layer is free to
- * assume that the same node list will be used for proxy launching.
+ * RMK with this function, the bootstrap device is free to assume that
+ * the same node list will be used for proxy launching.
  */
 HYD_status HYDT_bsci_query_node_list(struct HYD_node **node_list);
 
@@ -164,9 +173,9 @@
  * \param[out]  size       Maximum number of processes that can be launched
  *
  * If the underlying system allows for multitasking many processes on
- * a single processing element, the bootstrap server should return
- * "-1" (representing infinite). If not, it should specify the number
- * of processes that can be spawned.
+ * a single processing element, the launcher should return "-1"
+ * (representing infinite). If not, it should specify the number of
+ * processes that can be spawned.
  */
 HYD_status HYDT_bsci_query_usize(int *size);
 
@@ -195,8 +204,8 @@
 HYD_status HYDT_bsci_query_env_inherit(const char *env_name, int *ret);
 
 /**
- * \brief HYDT_bsci_query_native_int - Query if the bootstrap
- * server integrates natively with the RM
+ * \brief HYDT_bsci_query_native_int - Query if the RMK integrates
+ * natively with the RM
  *
  * \param[out] ret                    Boolean for true (1) or false (0)
  *
@@ -204,11 +213,12 @@
  * from the user's environment is safe to be propagated to the remote
  * processes.
  */
-HYD_status HYDT_bsci_query_native_int (int *ret);
+HYD_status HYDT_bsci_query_native_int(int *ret);
 
 /*! @} */
 
-/* Each bootstrap server has to expose an initialization function */
- at hydra_bss_init_decl@
+/* Each launcher has to expose an initialization function */
+ at hydra_launcher_init_decl@
+ at hydra_rmk_init_decl@
 
 #endif /* BSCI_H_INCLUDED */

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/persist/persist_init.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/persist/persist_init.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/persist/persist_init.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -8,7 +8,7 @@
 #include "bsci.h"
 #include "persist_client.h"
 
-HYD_status HYDT_bsci_persist_init(void)
+HYD_status HYDT_bsci_launcher_persist_init(void)
 {
     HYD_status status = HYD_SUCCESS;
 

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_cleanup.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_cleanup.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_cleanup.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.cleanup_procs();
-    HYDU_ERR_POP(status, "bootstrap device returned error cleaning up processes\n");
+    HYDU_ERR_POP(status, "launcher returned error cleaning up processes\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_env.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_env.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_env.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.query_env_inherit(env_name, ret);
-    HYDU_ERR_POP(status, "bootstrap device returned error querying env propagation\n");
+    HYDU_ERR_POP(status, "launcher returned error querying env propagation\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_finalize.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_finalize.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_finalize.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -14,15 +14,21 @@
 
     HYDU_FUNC_ENTER();
 
-    status = HYDT_bsci_fns.finalize();
-    HYDU_ERR_POP(status, "bootstrap device returned error while finalizing\n");
+    status = HYDT_bsci_fns.rmk_finalize();
+    HYDU_ERR_POP(status, "RMK returned error while finalizing\n");
 
-    if (HYDT_bsci_info.bootstrap)
-        HYDU_FREE(HYDT_bsci_info.bootstrap);
+    status = HYDT_bsci_fns.launcher_finalize();
+    HYDU_ERR_POP(status, "RMK returned error while finalizing\n");
 
-    if (HYDT_bsci_info.bootstrap_exec)
-        HYDU_FREE(HYDT_bsci_info.bootstrap_exec);
+    if (HYDT_bsci_info.rmk)
+        HYDU_FREE(HYDT_bsci_info.rmk);
 
+    if (HYDT_bsci_info.launcher)
+        HYDU_FREE(HYDT_bsci_info.launcher);
+
+    if (HYDT_bsci_info.launcher_exec)
+        HYDU_FREE(HYDT_bsci_info.launcher_exec);
+
   fn_exit:
     HYDU_FUNC_EXIT();
     return status;

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_init.c.in	2010-11-29 08:03:19 UTC (rev 7512)
@@ -9,137 +9,193 @@
 #include "bscu.h"
 
 struct HYDT_bsci_fns HYDT_bsci_fns = { 0 };
-static const char *bss_name_array[] = { @hydra_bss_name_array@ };
-static HYD_status(*bss_init_array[])(void) = { @hydra_bss_init_array@ };
 struct HYDT_bsci_info HYDT_bsci_info = { 0 };
 
-static void init_bsci_fns(void)
+static const char *launcher_array[] = { @hydra_launcher_array@ };
+static const char *rmk_array[] = { @hydra_rmk_array@ };
+static HYD_status(*launcher_init_array[])(void) = { @hydra_launcher_init_array@ };
+static HYD_status(*rmk_init_array[])(void) = { @hydra_rmk_init_array@ };
+
+static void init_rmk_fns(void)
 {
+    HYDT_bsci_fns.query_native_int = NULL;
+    HYDT_bsci_fns.query_node_list = NULL;
+    HYDT_bsci_fns.rmk_finalize = NULL;
+}
+
+static void init_launcher_fns(void)
+{
     HYDT_bsci_fns.launch_procs = NULL;
-    HYDT_bsci_fns.finalize = NULL;
+    HYDT_bsci_fns.launcher_finalize = NULL;
     HYDT_bsci_fns.wait_for_completion = NULL;
     HYDT_bsci_fns.cleanup_procs = NULL;
-    HYDT_bsci_fns.query_node_list = NULL;
     HYDT_bsci_fns.query_usize = NULL;
     HYDT_bsci_fns.query_proxy_id = NULL;
     HYDT_bsci_fns.query_env_inherit = NULL;
-    HYDT_bsci_fns.query_native_int = NULL;
 }
 
-static HYD_status set_bsci_defaults(void)
+static void set_rmk_defaults(void)
 {
-    HYD_status status = HYD_SUCCESS;
+    if (HYDT_bsci_fns.query_native_int == NULL)
+        HYDT_bsci_fns.query_native_int = HYDT_bscu_query_native_int;
+    if (HYDT_bsci_fns.query_node_list == NULL)
+        HYDT_bsci_fns.query_node_list = HYDT_bscu_query_node_list;
+    if (HYDT_bsci_fns.rmk_finalize == NULL)
+        HYDT_bsci_fns.rmk_finalize = HYDT_bscu_rmk_finalize;
+}
 
-    HYDU_FUNC_ENTER();
-
-    /* This function is mandatory */
-    if (HYDT_bsci_fns.launch_procs == NULL)
-        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
-                            "mandatory bootstrap launch function undefined\n");
-
-    if (HYDT_bsci_fns.finalize == NULL)
-        HYDT_bsci_fns.finalize = HYDT_bscu_finalize;
+static void set_launcher_defaults(void)
+{
+    if (HYDT_bsci_fns.launcher_finalize == NULL)
+        HYDT_bsci_fns.launcher_finalize = HYDT_bscu_launcher_finalize;
     if (HYDT_bsci_fns.wait_for_completion == NULL)
         HYDT_bsci_fns.wait_for_completion = HYDT_bscu_wait_for_completion;
     if (HYDT_bsci_fns.cleanup_procs == NULL)
         HYDT_bsci_fns.cleanup_procs = HYDT_bscu_cleanup_procs;
-    if (HYDT_bsci_fns.query_node_list == NULL)
-        HYDT_bsci_fns.query_node_list = HYDT_bscu_query_node_list;
     if (HYDT_bsci_fns.query_usize == NULL)
         HYDT_bsci_fns.query_usize = HYDT_bscu_query_usize;
     if (HYDT_bsci_fns.query_proxy_id == NULL)
         HYDT_bsci_fns.query_proxy_id = HYDT_bscu_query_proxy_id;
     if (HYDT_bsci_fns.query_env_inherit == NULL)
         HYDT_bsci_fns.query_env_inherit = HYDT_bscu_query_env_inherit;
-    if (HYDT_bsci_fns.query_native_int == NULL)
-        HYDT_bsci_fns.query_native_int = HYDT_bscu_query_native_int;
+}
 
+static const char *detect_rmk(int debug)
+{
+    int i, ret;
+    HYD_status status = HYD_SUCCESS;
+
+    for (i = 0; rmk_array[i]; i++) {
+        init_rmk_fns();
+
+        HYDT_bsci_info.rmk = HYDU_strdup(rmk_array[i]);
+        HYDT_bsci_info.debug = debug;
+
+        status = (*rmk_init_array[i])();
+        HYDU_ERR_POP(status, "bootstrap device returned error initializing\n");
+
+        /* Set default values for the RMK functions */
+        set_rmk_defaults();
+
+        status = HYDT_bsci_fns.query_native_int(&ret);
+        HYDU_ERR_POP(status, "unable to query native environment\n");
+
+        status = HYDT_bsci_fns.rmk_finalize();
+        HYDU_ERR_POP(status, "unable to finalize bootstrap server\n");
+
+        HYDU_FREE(HYDT_bsci_info.rmk);
+        init_rmk_fns();
+
+        if (ret)
+            break;
+    }
+
   fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
+    if (ret)
+        return ((const char *) HYDU_strdup(rmk_array[i]));
+    else
+        return NULL;
 
   fn_fail:
     goto fn_exit;
 }
 
-HYD_status HYDT_bsci_init(const char *user_bootstrap, const char *user_bootstrap_exec,
-                          int enablex, int debug)
+HYD_status HYDT_bsci_init(const char *user_rmk, const char *user_launcher,
+                          const char *user_launcher_exec, int enablex, int debug)
 {
-    int i, ret;
+    int i;
     HYD_status status = HYD_SUCCESS;
 
     HYDU_FUNC_ENTER();
 
-    /* Initialize bootstrap functions */
-    init_bsci_fns();
+    /* Initialize the RMK and launcher functions */
+    init_rmk_fns();
+    init_launcher_fns();
 
-    /* Store the bootstrap value as multiple bootstrap servers might
-     * set the same internal function pointers */
-    if (user_bootstrap)
-        HYDT_bsci_info.bootstrap = HYDU_strdup(user_bootstrap);
-    else {
-        MPL_env2str("HYDRA_BOOTSTRAP", (const char **) &HYDT_bsci_info.bootstrap);
-        if (HYDT_bsci_info.bootstrap == NULL) {
-            /* user didn't specify anything; try to find a bootstrap
-             * that will work correctly */
-            for (i = 0; bss_name_array[i]; i++) {
-                HYDT_bsci_info.bootstrap = HYDU_strdup(bss_name_array[i]);
-                HYDT_bsci_info.enablex = enablex;
-                HYDT_bsci_info.debug = debug;
 
-                status = (*bss_init_array[i])();
-                HYDU_ERR_POP(status, "bootstrap device returned error initializing\n");
+    /* See if the user specified an RMK */
+    if (user_rmk)
+        HYDT_bsci_info.rmk = HYDU_strdup(user_rmk);
+    if (HYDT_bsci_info.rmk == NULL)
+        MPL_env2str("HYDRA_RMK", (const char **) &HYDT_bsci_info.rmk);
 
-                /* Set default values for the bootstrap functions */
-                status = set_bsci_defaults();
-                HYDU_ERR_POP(status, "error setting BSCI defaults\n");
+    /* User didn't specify an RMK; try to detect one */
+    if (HYDT_bsci_info.rmk == NULL)
+        HYDT_bsci_info.rmk = detect_rmk(debug);
 
-                status = HYDT_bsci_fns.query_native_int(&ret);
-                HYDU_ERR_POP(status, "unable to query native environment\n");
+    if (HYDT_bsci_info.rmk == NULL)
+        HYDT_bsci_info.rmk = HYDU_strdup(HYDRA_DEFAULT_RMK);
 
-                status = HYDT_bsci_fns.finalize();
-                HYDU_ERR_POP(status, "unable to finalize bootstrap server\n");
+    /* Make sure the RMK we found is valid */
+    for (i = 0; rmk_array[i]; i++) {
+        if (!strcmp(HYDT_bsci_info.rmk, rmk_array[i])) {
+            status = (*rmk_init_array[i])();
+            HYDU_ERR_POP(status, "RMK init returned error\n");
+            break;
+        }
+    }
+    if (rmk_array[i] == NULL)
+        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
+                            "unrecognized RMK: %s\n", HYDT_bsci_info.rmk);
 
-                if (ret)
-                    break;
+    /* Set default values for the remaining functions */
+    set_rmk_defaults();
 
-                HYDU_FREE(HYDT_bsci_info.bootstrap);
-                HYDT_bsci_info.bootstrap = NULL;
 
-                /* Reinitialize the bootstrap functions */
-                init_bsci_fns();
-            }
-        }
+    /* See if the user specified a launcher */
+    if (user_launcher)
+        HYDT_bsci_info.launcher = HYDU_strdup(user_launcher);
+    if (HYDT_bsci_info.launcher == NULL)
+        MPL_env2str("HYDRA_LAUNCHER", (const char **) &HYDT_bsci_info.launcher);
+    if (HYDT_bsci_info.launcher == NULL)
+        MPL_env2str("HYDRA_BOOTSTRAP", (const char **) &HYDT_bsci_info.launcher);
 
-        if (HYDT_bsci_info.bootstrap == NULL)
-            HYDT_bsci_info.bootstrap = HYDU_strdup(HYDRA_DEFAULT_BSS);
+    /* User didn't specify a launcher; try to see if the RMK also
+     * provides launcher capabilities */
+    if (HYDT_bsci_info.launcher == NULL) {
+        for (i = 0; launcher_array[i]; i++)
+            if (!strcmp(HYDT_bsci_info.rmk, launcher_array[i]))
+                break;
+        if (launcher_array[i])
+            HYDT_bsci_info.launcher = HYDU_strdup(launcher_array[i]);
     }
 
-    if (user_bootstrap_exec)
-        HYDT_bsci_info.bootstrap_exec = HYDU_strdup(user_bootstrap_exec);
-    else
-        HYD_GET_ENV_STR_VAL(HYDT_bsci_info.bootstrap_exec, "HYDRA_BOOTSTRAP_EXEC", NULL);
+    if (HYDT_bsci_info.launcher == NULL)
+        HYDT_bsci_info.launcher = HYDU_strdup(HYDRA_DEFAULT_LAUNCHER);
 
-    for (i = 0; bss_name_array[i]; i++) {
-        if (!strcmp(HYDT_bsci_info.bootstrap, bss_name_array[i])) {
-            status = (*bss_init_array[i])();
-            HYDU_ERR_POP(status, "bootstrap device returned error initializing\n");
+    if (HYDT_bsci_info.launcher == NULL)
+        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "no appropriate launcher found\n");
+
+    HYDT_bsci_info.debug = debug;
+    HYDT_bsci_info.enablex = enablex;
+
+    if (user_launcher_exec)
+        HYDT_bsci_info.launcher_exec = HYDU_strdup(user_launcher_exec);
+    if (HYDT_bsci_info.launcher_exec == NULL)
+        HYD_GET_ENV_STR_VAL(HYDT_bsci_info.launcher_exec, "HYDRA_LAUNCHER_EXEC", NULL);
+    if (HYDT_bsci_info.launcher_exec == NULL)
+        HYD_GET_ENV_STR_VAL(HYDT_bsci_info.launcher_exec, "HYDRA_BOOTSTRAP_EXEC", NULL);
+
+    /* Make sure the launcher we found is valid */
+    for (i = 0; launcher_array[i]; i++) {
+        if (!strcmp(HYDT_bsci_info.launcher, launcher_array[i])) {
+            status = (*launcher_init_array[i])();
+            HYDU_ERR_POP(status, "launcher init returned error\n");
             break;
         }
     }
+    if (launcher_array[i] == NULL)
+        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
+                            "unrecognized launcher: %s\n", HYDT_bsci_info.launcher);
 
-    /* Set the appropriate info */
-    HYDT_bsci_info.enablex = enablex;
-    HYDT_bsci_info.debug = debug;
+    /* Set default values for the remaining functions */
+    set_launcher_defaults();
 
-    if (bss_name_array[i] == NULL)
+    /* This function is mandatory */
+    if (HYDT_bsci_fns.launch_procs == NULL)
         HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
-                            "unrecognized bootstrap server: %s\n", HYDT_bsci_info.bootstrap);
+                            "mandatory launch function undefined\n");
 
-    /* Set default values for the bootstrap functions */
-    status = set_bsci_defaults();
-    HYDU_ERR_POP(status, "error setting BSCI defaults\n");
-
   fn_exit:
     HYDU_FUNC_EXIT();
     return status;

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_launch.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_launch.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_launch.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.launch_procs(args, node_list, control_fd, enable_stdin);
-    HYDU_ERR_POP(status, "bootstrap device returned error while launching processes\n");
+    HYDU_ERR_POP(status, "launcher returned error while launching processes\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_native_int.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_native_int.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_native_int.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.query_native_int(ret);
-    HYDU_ERR_POP(status, "bootstrap device returned error querying native integration\n");
+    HYDU_ERR_POP(status, "RMK returned error querying native integration\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_node_list.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_node_list.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_node_list.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.query_node_list(node_list);
-    HYDU_ERR_POP(status, "bootstrap device returned error while querying node list\n");
+    HYDU_ERR_POP(status, "RMK returned error while querying node list\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_proxy_id.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_proxy_id.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_query_proxy_id.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.query_proxy_id(proxy_id);
-    HYDU_ERR_POP(status, "bootstrap device returned error while querying proxy ID\n");
+    HYDU_ERR_POP(status, "launcher returned error while querying proxy ID\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_usize.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_usize.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_usize.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.query_usize(size);
-    HYDU_ERR_POP(status, "bootstrap device returned error querying usize\n");
+    HYDU_ERR_POP(status, "launcher returned error querying usize\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_wait.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_wait.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/src/bsci_wait.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,7 @@
     HYDU_FUNC_ENTER();
 
     status = HYDT_bsci_fns.wait_for_completion(timeout);
-    HYDU_ERR_POP(status, "bootstrap device returned error waiting for completion\n");
+    HYDU_ERR_POP(status, "launcher returned error waiting for completion\n");
 
   fn_exit:
     HYDU_FUNC_EXIT();

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -15,7 +15,8 @@
 extern int *HYD_bscu_pid_list;
 extern int HYD_bscu_pid_count;
 
-HYD_status HYDT_bscu_finalize(void);
+HYD_status HYDT_bscu_rmk_finalize(void);
+HYD_status HYDT_bscu_launcher_finalize(void);
 HYD_status HYDT_bscu_query_node_list(struct HYD_node **node_list);
 HYD_status HYDT_bscu_query_usize(int *size);
 HYD_status HYDT_bscu_query_proxy_id(int *proxy_id);

Modified: mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_finalize.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_finalize.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/bootstrap/utils/bscu_finalize.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -8,7 +8,7 @@
 #include "hydra_utils.h"
 #include "bscu.h"
 
-HYD_status HYDT_bscu_finalize(void)
+HYD_status HYDT_bscu_rmk_finalize(void)
 {
     HYD_status status = HYD_SUCCESS;
 
@@ -18,3 +18,14 @@
 
     return status;
 }
+
+HYD_status HYDT_bscu_launcher_finalize(void)
+{
+    HYD_status status = HYD_SUCCESS;
+
+    HYDU_FUNC_ENTER();
+
+    HYDU_FUNC_EXIT();
+
+    return status;
+}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/Makefile.mk	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/Makefile.mk	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,18 +0,0 @@
-# -*- Mode: Makefile; -*-
-#
-# (C) 2008 by Argonne National Laboratory.
-#     See COPYRIGHT in top-level directory.
-#
-
-AM_CPPFLAGS += -I$(top_srcdir)/tools/rmk/include -I$(top_builddir)/tools/rmk/include
-
-include tools/rmk/src/Makefile.mk
-include tools/rmk/utils/Makefile.mk
-
-if hydra_rmk_none
-include tools/rmk/none/Makefile.mk
-endif
-
-if hydra_rmk_pbs
-include tools/rmk/pbs/Makefile.mk
-endif

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/include/rmki.h.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/include/rmki.h.in	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/include/rmki.h.in	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,65 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2008 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#ifndef RMKI_H_INCLUDED
-#define RMKI_H_INCLUDED
-
-/** @file rmki.h.in */
-
-#include "hydra_utils.h"
-
-/*! \addtogroup rmki Resource Management Kernel Interface
- * @{
- */
-
-/**
- * \brief Function pointers for device specific implementations of
- * different RMK functions
- */
-struct HYDT_rmki_fns {
-    /** \brief Query node list information */
-    HYD_status(*query_node_list) (struct HYD_node **node_list);
-
-    /** \brief Query native integration in the environment */
-    HYD_status(*query_native_int) (int *ret);
-};
-
-/** \cond */
-extern struct HYDT_rmki_fns HYDT_rmki_fns;
-/** \endcond */
-
-/**
- * \brief HYDT_rmki_init - Initialize the resource management kernel
- *
- * \param[in]   rmk     Resource management kernel to use
- *
- * Initializes the resource management kernel
- */
-HYD_status HYDT_rmki_init(char *rmk);
-
-/**
- * \brief HYDT_rmki_query_node_list - Query node list information
- *
- * \param[out]  node_list  List of nodes available
- */
-HYD_status HYDT_rmki_query_node_list(struct HYD_node **node_list);
-
-/**
- * \brief HYDT_rmki_query_native_int - Query native integration into
- * the environment
- *
- * \param[out]  ret        Return bool: true (1) or false (0)
- */
-HYD_status HYDT_rmki_query_native_int(int *ret);
-
-/*!
- * @}
- */
-
-/* Each resource management kernel has to expose an initialization function */
- at hydra_rmk_init_decl@
-
-#endif /* RMKI_H_INCLUDED */

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/none/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/none/Makefile.mk	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/none/Makefile.mk	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,7 +0,0 @@
-# -*- Mode: Makefile; -*-
-#
-# (C) 2008 by Argonne National Laboratory.
-#     See COPYRIGHT in top-level directory.
-#
-
-libhydra_la_SOURCES += $(top_srcdir)/tools/rmk/none/rmk_none_init.c

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,12 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2008 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#ifndef RMK_NONE_H_INCLUDED
-#define RMK_NONE_H_INCLUDED
-
-#include "hydra_base.h"
-
-#endif /* RMK_NONE_H_INCLUDED */

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none_init.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none_init.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/none/rmk_none_init.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,20 +0,0 @@
-/* -*- 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 "rmk_none.h"
-
-HYD_status HYDT_rmki_none_init(void)
-{
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    HYDU_FUNC_EXIT();
-
-    return status;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/pbs/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/pbs/Makefile.mk	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/pbs/Makefile.mk	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,9 +0,0 @@
-# -*- Mode: Makefile; -*-
-#
-# (C) 2008 by Argonne National Laboratory.
-#     See COPYRIGHT in top-level directory.
-#
-
-libhydra_la_SOURCES += $(top_srcdir)/tools/rmk/pbs/rmk_pbs_init.c \
-	$(top_srcdir)/tools/rmk/pbs/rmk_pbs_query_node_list.c \
-	$(top_srcdir)/tools/rmk/pbs/rmk_pbs_query_native_int.c

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,15 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2008 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#ifndef RMK_PBS_H_INCLUDED
-#define RMK_PBS_H_INCLUDED
-
-#include "hydra_base.h"
-
-HYD_status HYDT_rmkd_pbs_query_node_list(struct HYD_node **node_list);
-HYD_status HYDT_rmkd_pbs_query_native_int(int *ret);
-
-#endif /* RMK_PBS_H_INCLUDED */

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_init.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_init.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_init.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,23 +0,0 @@
-/* -*- 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 "rmk_pbs.h"
-
-HYD_status HYDT_rmki_pbs_init(void)
-{
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    HYDT_rmki_fns.query_node_list = HYDT_rmkd_pbs_query_node_list;
-    HYDT_rmki_fns.query_native_int = HYDT_rmkd_pbs_query_native_int;
-
-    HYDU_FUNC_EXIT();
-
-    return status;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_native_int.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_native_int.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_native_int.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,30 +0,0 @@
-/* -*- 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 "rmk_pbs.h"
-
-HYD_status HYDT_rmkd_pbs_query_native_int(int *ret)
-{
-    const char *dummy = NULL;
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    MPL_env2str("PBS_NODEFILE", &dummy);
-    if (!dummy)
-        *ret = 0;
-    else
-        *ret = 1;
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_node_list.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_node_list.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/pbs/rmk_pbs_query_node_list.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,65 +0,0 @@
-/* -*- 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 "rmk_pbs.h"
-
-static struct HYD_node *global_node_list = NULL;
-
-static HYD_status process_mfile_token(char *token, int newline)
-{
-    int num_procs;
-    char *hostname, *procs;
-    HYD_status status = HYD_SUCCESS;
-
-    if (newline) {      /* The first entry gives the hostname and processes */
-        hostname = strtok(token, ":");
-        procs = strtok(NULL, ":");
-        num_procs = procs ? atoi(procs) : 1;
-
-        status = HYDU_add_to_node_list(hostname, num_procs, &global_node_list);
-        HYDU_ERR_POP(status, "unable to initialize proxy\n");
-    }
-    else {      /* Not a new line */
-        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
-                            "token %s not supported at this time\n", token);
-    }
-
-  fn_exit:
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}
-
-HYD_status HYDT_rmkd_pbs_query_node_list(struct HYD_node **node_list)
-{
-    char *hostfile;
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    if (MPL_env2str("PBS_NODEFILE", (const char **) &hostfile) == 0)
-        hostfile = NULL;
-
-    if (hostfile == NULL) {
-        *node_list = NULL;
-        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR, "No PBS nodefile found\n");
-    }
-    else {
-        status = HYDU_parse_hostfile(hostfile, process_mfile_token);
-        HYDU_ERR_POP(status, "error parsing hostfile\n");
-    }
-    *node_list = global_node_list;
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/src/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/src/Makefile.mk	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/src/Makefile.mk	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,9 +0,0 @@
-# -*- Mode: Makefile; -*-
-#
-# (C) 2008 by Argonne National Laboratory.
-#     See COPYRIGHT in top-level directory.
-#
-
-libhydra_la_SOURCES += $(top_builddir)/tools/rmk/src/rmki_init.c \
-	$(top_srcdir)/tools/rmk/src/rmki_query_node_list.c \
-	$(top_srcdir)/tools/rmk/src/rmki_query_native_int.c

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_init.c.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_init.c.in	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_init.c.in	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,89 +0,0 @@
-/* -*- 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"
-
-/* initialize to avoid common symbols */
-struct HYDT_rmki_fns HYDT_rmki_fns = { 0 };
-
-static const char *rmk_name_array[] = { @hydra_rmk_name_array@ };
-static HYD_status(*rmk_init_array[])(void) = { @hydra_rmk_init_array@ };
-
-static void init_rmki_fns(void)
-{
-    HYDT_rmki_fns.query_node_list = NULL;
-    HYDT_rmki_fns.query_native_int = NULL;
-}
-
-static void set_rmki_defaults(void)
-{
-    if (HYDT_rmki_fns.query_node_list == NULL)
-        HYDT_rmki_fns.query_node_list = HYD_rmku_query_node_list;
-    if (HYDT_rmki_fns.query_native_int == NULL)
-        HYDT_rmki_fns.query_native_int = HYD_rmku_query_native_int;
-}
-
-HYD_status HYDT_rmki_init(char *user_rmk)
-{
-    int i, ret;
-    char *rmk = NULL;
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    /* Initialize RMK functions */
-    init_rmki_fns();
-
-    if (user_rmk)
-        rmk = HYDU_strdup(user_rmk);
-    else {
-        for (i = 0; rmk_name_array[i]; i++) {
-            status = (*rmk_init_array[i])();
-            HYDU_ERR_POP(status, "RMK device returned error initializing\n");
-
-            set_rmki_defaults();
-
-            status = HYDT_rmki_fns.query_native_int(&ret);
-            HYDU_ERR_POP(status, "unable to query native environment\n");
-
-            if (ret)
-                break;
-
-            /* Reinitialize the RMK functions */
-            init_rmki_fns();
-        }
-
-        if (rmk == NULL) {
-            if (HYDRA_DEFAULT_RMK)
-                rmk = HYDU_strdup(HYDRA_DEFAULT_RMK);
-            else
-                goto fn_exit;
-        }
-    }
-
-    for (i = 0; rmk_name_array[i]; i++) {
-        if (!strcmp(rmk, rmk_name_array[i])) {
-            status = (*rmk_init_array[i])();
-            HYDU_ERR_POP(status, "RMK device returned error initializing\n");
-            break;
-        }
-    }
-
-    if (rmk_name_array[i] == NULL)
-        HYDU_ERR_SETANDJUMP(status, HYD_INTERNAL_ERROR,
-                            "unrecognized resource management kernel: %s\n", rmk);
-
-  fn_exit:
-    set_rmki_defaults();
-    HYDU_FREE(rmk);
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_native_int.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_native_int.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_native_int.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,25 +0,0 @@
-/* -*- 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"
-
-HYD_status HYDT_rmki_query_native_int(int *ret)
-{
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    status = HYDT_rmki_fns.query_native_int(ret);
-    HYDU_ERR_POP(status, "RMK device returned error while querying native integration\n");
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_node_list.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_node_list.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/src/rmki_query_node_list.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,25 +0,0 @@
-/* -*- 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"
-
-HYD_status HYDT_rmki_query_node_list(struct HYD_node **node_list)
-{
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    status = HYDT_rmki_fns.query_node_list(node_list);
-    HYDU_ERR_POP(status, "RMK device returned error while querying node list\n");
-
-  fn_exit:
-    HYDU_FUNC_EXIT();
-    return status;
-
-  fn_fail:
-    goto fn_exit;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/utils/Makefile.mk
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/utils/Makefile.mk	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/utils/Makefile.mk	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,10 +0,0 @@
-# -*- Mode: Makefile; -*-
-#
-# (C) 2008 by Argonne National Laboratory.
-#     See COPYRIGHT in top-level directory.
-#
-
-AM_CPPFLAGS += -I$(top_srcdir)/tools/rmk/utils
-
-libhydra_la_SOURCES += $(top_srcdir)/tools/rmk/utils/rmku_query_node_list.c \
-	$(top_srcdir)/tools/rmk/utils/rmku_query_native_int.c

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku.h	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku.h	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,15 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2008 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#ifndef RMKU_H_INCLUDED
-#define RMKU_H_INCLUDED
-
-#include "hydra_base.h"
-
-HYD_status HYD_rmku_query_node_list(struct HYD_node **node_list);
-HYD_status HYD_rmku_query_native_int(int *ret);
-
-#endif /* RMKU_H_INCLUDED */

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_native_int.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_native_int.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_native_int.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,21 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2008 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#include "hydra_base.h"
-#include "hydra_utils.h"
-#include "rmku.h"
-
-HYD_status HYD_rmku_query_native_int(int *ret)
-{
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    *ret = 0;
-
-    HYDU_FUNC_EXIT();
-    return status;
-}

Deleted: mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_node_list.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_node_list.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/tools/rmk/utils/rmku_query_node_list.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -1,22 +0,0 @@
-/* -*- Mode: C; c-basic-offset:4 ; -*- */
-/*
- *  (C) 2008 by Argonne National Laboratory.
- *      See COPYRIGHT in top-level directory.
- */
-
-#include "hydra_base.h"
-#include "hydra_utils.h"
-#include "rmku.h"
-
-HYD_status HYD_rmku_query_node_list(struct HYD_node **node_list)
-{
-    HYD_status status = HYD_SUCCESS;
-
-    HYDU_FUNC_ENTER();
-
-    /* We don't know anything about nodes or resources */
-    *node_list = NULL;
-
-    HYDU_FUNC_EXIT();
-    return status;
-}

Modified: mpich2/trunk/src/pm/hydra/ui/mpich/mpiexec.c
===================================================================
--- mpich2/trunk/src/pm/hydra/ui/mpich/mpiexec.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/ui/mpich/mpiexec.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -7,7 +7,6 @@
 #include "hydra.h"
 #include "hydra_utils.h"
 #include "mpiexec.h"
-#include "rmki.h"
 #include "pmci.h"
 #include "bsci.h"
 #include "hydt_ftb.h"
@@ -63,16 +62,16 @@
     printf("Hydra specific options (treated as global):\n");
 
     printf("\n");
-    printf("  Bootstrap options:\n");
-    printf("    -bootstrap                       bootstrap server to use (%s)\n",
-           HYDRA_BSS_NAMES);
-    printf("    -bootstrap-exec                  executable to use to bootstrap processes\n");
+    printf("  Launch options:\n");
+    printf("    -launcher                        launcher to use (%s)\n",
+           HYDRA_AVAILABLE_LAUNCHERS);
+    printf("    -launcher-exec                   executable to use to launch processes\n");
     printf("    -enable-x/-disable-x             enable or disable X forwarding\n");
 
     printf("\n");
     printf("  Resource management kernel options:\n");
     printf("    -rmk                             resource management kernel to use (%s)\n",
-           HYDRA_RMK_NAMES);
+           HYDRA_AVAILABLE_RMKS);
 
     printf("\n");
     printf("  Hybrid programming options:\n");
@@ -82,7 +81,7 @@
     printf("  Process-core binding options:\n");
     printf("    -binding                         process-to-core binding mode\n");
     printf("    -bindlib                         process-to-core binding library (%s)\n",
-           HYDRA_BINDLIB_NAMES);
+           HYDRA_AVAILABLE_BINDLIBS);
 
     printf("\n");
     printf("  Checkpoint/Restart options:\n");
@@ -90,11 +89,12 @@
     printf("    -ckpoint-prefix                  checkpoint file prefix\n");
     printf("    -ckpoint-num                     checkpoint number to restart\n");
     printf("    -ckpointlib                      checkpointing library (%s)\n",
-           !strcmp(HYDRA_CKPOINTLIB_NAMES, "") ? "none" : HYDRA_CKPOINTLIB_NAMES);
+           !strcmp(HYDRA_AVAILABLE_CKPOINTLIBS, "") ? "none" : HYDRA_AVAILABLE_CKPOINTLIBS);
 
     printf("\n");
     printf("  Demux engine options:\n");
-    printf("    -demux                           demux engine (%s)\n", HYDRA_DEMUX_NAMES);
+    printf("    -demux                           demux engine (%s)\n",
+           HYDRA_AVAILABLE_DEMUXES);
 
     printf("\n");
     printf("  Other Hydra options:\n");
@@ -195,28 +195,19 @@
     status = HYDT_dmx_init(&HYD_handle.user_global.demux);
     HYDU_ERR_POP(status, "unable to initialize the demux engine\n");
 
-    status = HYDT_rmki_init(HYD_handle.rmk);
-    HYDU_ERR_POP(status, "unable to initialize RMK\n");
-
-    status = HYDT_bsci_init(HYD_handle.user_global.bootstrap,
-                            HYD_handle.user_global.bootstrap_exec,
+    status = HYDT_bsci_init(HYD_handle.user_global.rmk, HYD_handle.user_global.launcher,
+                            HYD_handle.user_global.launcher_exec,
                             HYD_handle.user_global.enablex, HYD_handle.user_global.debug);
     HYDU_ERR_POP(status, "unable to initialize the bootstrap server\n");
 
     if (HYD_handle.node_list == NULL) {
         /* Node list is not created yet. The user might not have
          * provided the host file. Query the RMK. */
-        status = HYDT_rmki_query_node_list(&HYD_handle.node_list);
+        status = HYDT_bsci_query_node_list(&HYD_handle.node_list);
         HYDU_ERR_POP(status, "unable to query the RMK for a node list\n");
 
         if (HYD_handle.node_list == NULL) {
-            /* didn't get anything from the RMK; try the bootstrap server */
-            status = HYDT_bsci_query_node_list(&HYD_handle.node_list);
-            HYDU_ERR_POP(status, "bootstrap returned error while querying node list\n");
-        }
-
-        if (HYD_handle.node_list == NULL) {
-            /* The RMK and bootstrap didn't give us anything back; use localhost */
+            /* The RMK didn't give us anything back; use localhost */
             status = HYDU_add_to_node_list("localhost", 1, &HYD_handle.node_list);
             HYDU_ERR_POP(status, "unable to add to node list\n");
         }

Modified: mpich2/trunk/src/pm/hydra/ui/mpich/utils.c
===================================================================
--- mpich2/trunk/src/pm/hydra/ui/mpich/utils.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/ui/mpich/utils.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -596,30 +596,30 @@
     goto fn_exit;
 }
 
-static void bootstrap_help_fn(void)
+static void launcher_help_fn(void)
 {
     printf("\n");
-    printf("-bootstrap: Bootstrap server to use\n\n");
+    printf("-launcher: Launcher to use\n\n");
     printf("Notes:\n");
     printf("  * Use the -info option to see what all are compiled in\n\n");
 }
 
-static HYD_status bootstrap_fn(char *arg, char ***argv)
+static HYD_status launcher_fn(char *arg, char ***argv)
 {
-    return HYDU_set_str_and_incr(arg, argv, &HYD_handle.user_global.bootstrap);
+    return HYDU_set_str_and_incr(arg, argv, &HYD_handle.user_global.launcher);
 }
 
-static void bootstrap_exec_help_fn(void)
+static void launcher_exec_help_fn(void)
 {
     printf("\n");
-    printf("-bootstrap-exec: Bootstrap executable to use\n\n");
+    printf("-launcher-exec: Launcher executable to use\n\n");
     printf("Notes:\n");
     printf("  * This is needed only if Hydra cannot automatically find it\n\n");
 }
 
-static HYD_status bootstrap_exec_fn(char *arg, char ***argv)
+static HYD_status launcher_exec_fn(char *arg, char ***argv)
 {
-    return HYDU_set_str_and_incr(arg, argv, &HYD_handle.user_global.bootstrap_exec);
+    return HYDU_set_str_and_incr(arg, argv, &HYD_handle.user_global.launcher_exec);
 }
 
 static void enablex_help_fn(void)
@@ -644,7 +644,7 @@
 
 static HYD_status rmk_fn(char *arg, char ***argv)
 {
-    return HYDU_set_str_and_incr(arg, argv, &HYD_handle.rmk);
+    return HYDU_set_str_and_incr(arg, argv, &HYD_handle.user_global.rmk);
 }
 
 static void ranks_per_proc_help_fn(void)
@@ -787,26 +787,29 @@
     HYDU_dump_noprefix(stdout,
                        "    Release Date:                            %s\n",
                        HYDRA_RELEASE_DATE);
-    HYDU_dump_noprefix(stdout, "    CC:                                      %s\n", HYDRA_CC);
-    HYDU_dump_noprefix(stdout, "    CXX:                                     %s\n", HYDRA_CXX);
-    HYDU_dump_noprefix(stdout, "    F77:                                     %s\n", HYDRA_F77);
-    HYDU_dump_noprefix(stdout, "    F90:                                     %s\n", HYDRA_F90);
+    HYDU_dump_noprefix(stdout, "    CC:                              %s\n", HYDRA_CC);
+    HYDU_dump_noprefix(stdout, "    CXX:                             %s\n", HYDRA_CXX);
+    HYDU_dump_noprefix(stdout, "    F77:                             %s\n", HYDRA_F77);
+    HYDU_dump_noprefix(stdout, "    F90:                             %s\n", HYDRA_F90);
     HYDU_dump_noprefix(stdout,
                        "    Configure options:                       %s\n",
                        HYDRA_CONFIGURE_ARGS_CLEAN);
     HYDU_dump_noprefix(stdout, "    Process Manager:                         pmi\n");
     HYDU_dump_noprefix(stdout,
-                       "    Bootstrap servers available:             %s\n", HYDRA_BSS_NAMES);
+                       "    Launchers available:                     %s\n",
+                       HYDRA_AVAILABLE_LAUNCHERS);
     HYDU_dump_noprefix(stdout,
                        "    Binding libraries available:             %s\n",
-                       HYDRA_BINDLIB_NAMES);
+                       HYDRA_AVAILABLE_BINDLIBS);
     HYDU_dump_noprefix(stdout,
-                       "    Resource management kernels available:   %s\n", HYDRA_RMK_NAMES);
+                       "    Resource management kernels available:   %s\n",
+                       HYDRA_AVAILABLE_RMKS);
     HYDU_dump_noprefix(stdout,
                        "    Checkpointing libraries available:       %s\n",
-                       HYDRA_CKPOINTLIB_NAMES);
+                       HYDRA_AVAILABLE_CKPOINTLIBS);
     HYDU_dump_noprefix(stdout,
-                       "    Demux engines available:                 %s\n", HYDRA_DEMUX_NAMES);
+                       "    Demux engines available:                 %s\n",
+                       HYDRA_AVAILABLE_DEMUXES);
 
     HYDU_ERR_SETANDJUMP(status, HYD_GRACEFUL_ABORT, "");
 
@@ -910,9 +913,11 @@
 
     /* Hydra specific options */
 
-    /* Bootstrap options */
-    {"bootstrap", bootstrap_fn, bootstrap_help_fn},
-    {"bootstrap-exec", bootstrap_exec_fn, bootstrap_exec_help_fn},
+    /* Launcher options */
+    {"launcher", launcher_fn, launcher_help_fn},
+    {"launcher-exec", launcher_exec_fn, launcher_exec_help_fn},
+    {"bootstrap", launcher_fn, launcher_help_fn},
+    {"bootstrap-exec", launcher_exec_fn, launcher_exec_help_fn},
     {"enable-x", enablex_fn, enablex_help_fn},
     {"disable-x", enablex_fn, enablex_help_fn},
 

Modified: mpich2/trunk/src/pm/hydra/ui/utils/uiu.c
===================================================================
--- mpich2/trunk/src/pm/hydra/ui/utils/uiu.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/ui/utils/uiu.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -16,8 +16,6 @@
 
     HYD_handle.base_path = NULL;
 
-    HYD_handle.rmk = NULL;
-
     HYD_handle.port_range = NULL;
     HYD_handle.interface_env_name = NULL;
 
@@ -49,54 +47,17 @@
 
 void HYD_uiu_free_params(void)
 {
+    HYDU_finalize_user_global(&HYD_handle.user_global);
+
     if (HYD_handle.base_path)
         HYDU_FREE(HYD_handle.base_path);
 
-    if (HYD_handle.rmk)
-        HYDU_FREE(HYD_handle.rmk);
-
     if (HYD_handle.port_range)
         HYDU_FREE(HYD_handle.port_range);
 
     if (HYD_handle.interface_env_name)
         HYDU_FREE(HYD_handle.interface_env_name);
 
-    if (HYD_handle.user_global.binding)
-        HYDU_FREE(HYD_handle.user_global.binding);
-
-    if (HYD_handle.user_global.bindlib)
-        HYDU_FREE(HYD_handle.user_global.bindlib);
-
-    if (HYD_handle.user_global.ckpointlib)
-        HYDU_FREE(HYD_handle.user_global.ckpointlib);
-
-    if (HYD_handle.user_global.ckpoint_prefix)
-        HYDU_FREE(HYD_handle.user_global.ckpoint_prefix);
-
-    if (HYD_handle.user_global.bootstrap)
-        HYDU_FREE(HYD_handle.user_global.bootstrap);
-
-    if (HYD_handle.user_global.demux)
-        HYDU_FREE(HYD_handle.user_global.demux);
-
-    if (HYD_handle.user_global.iface)
-        HYDU_FREE(HYD_handle.user_global.iface);
-
-    if (HYD_handle.user_global.bootstrap_exec)
-        HYDU_FREE(HYD_handle.user_global.bootstrap_exec);
-
-    if (HYD_handle.user_global.global_env.inherited)
-        HYDU_env_free_list(HYD_handle.user_global.global_env.inherited);
-
-    if (HYD_handle.user_global.global_env.system)
-        HYDU_env_free_list(HYD_handle.user_global.global_env.system);
-
-    if (HYD_handle.user_global.global_env.user)
-        HYDU_env_free_list(HYD_handle.user_global.global_env.user);
-
-    if (HYD_handle.user_global.global_env.prop)
-        HYDU_FREE(HYD_handle.user_global.global_env.prop);
-
     if (HYD_handle.node_list)
         HYDU_free_node_list(HYD_handle.node_list);
 
@@ -126,7 +87,7 @@
     HYDU_dump_noprefix(stdout, "mpiexec options:\n");
     HYDU_dump_noprefix(stdout, "----------------\n");
     HYDU_dump_noprefix(stdout, "  Base path: %s\n", HYD_handle.base_path);
-    HYDU_dump_noprefix(stdout, "  Bootstrap server: %s\n", HYD_handle.user_global.bootstrap);
+    HYDU_dump_noprefix(stdout, "  Launcher: %s\n", HYD_handle.user_global.launcher);
     HYDU_dump_noprefix(stdout, "  Debug level: %d\n", HYD_handle.user_global.debug);
     HYDU_dump_noprefix(stdout, "  Enable X: %d\n", HYD_handle.user_global.enablex);
 

Modified: mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c
===================================================================
--- mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c	2010-11-26 13:10:36 UTC (rev 7511)
+++ mpich2/trunk/src/pm/hydra/utils/alloc/alloc.c	2010-11-29 08:03:19 UTC (rev 7512)
@@ -8,8 +8,9 @@
 
 void HYDU_init_user_global(struct HYD_user_global *user_global)
 {
-    user_global->bootstrap = NULL;
-    user_global->bootstrap_exec = NULL;
+    user_global->rmk = NULL;
+    user_global->launcher = NULL;
+    user_global->launcher_exec = NULL;
 
     user_global->binding = NULL;
     user_global->bindlib = NULL;
@@ -30,6 +31,38 @@
     HYDU_init_global_env(&user_global->global_env);
 }
 
+void HYDU_finalize_user_global(struct HYD_user_global *user_global)
+{
+    if (user_global->rmk)
+        HYDU_FREE(user_global->rmk);
+
+    if (user_global->launcher)
+        HYDU_FREE(user_global->launcher);
+
+    if (user_global->launcher_exec)
+        HYDU_FREE(user_global->launcher_exec);
+
+    if (user_global->binding)
+        HYDU_FREE(user_global->binding);
+
+    if (user_global->bindlib)
+        HYDU_FREE(user_global->bindlib);
+
+    if (user_global->ckpointlib)
+        HYDU_FREE(user_global->ckpointlib);
+
+    if (user_global->ckpoint_prefix)
+        HYDU_FREE(user_global->ckpoint_prefix);
+
+    if (user_global->demux)
+        HYDU_FREE(user_global->demux);
+
+    if (user_global->iface)
+        HYDU_FREE(user_global->iface);
+
+    HYDU_finalize_global_env(&user_global->global_env);
+}
+
 void HYDU_init_global_env(struct HYD_env_global *global_env)
 {
     global_env->system = NULL;
@@ -38,6 +71,21 @@
     global_env->prop = NULL;
 }
 
+void HYDU_finalize_global_env(struct HYD_env_global *global_env)
+{
+    if (global_env->system)
+        HYDU_env_free_list(global_env->system);
+
+    if (global_env->user)
+        HYDU_env_free_list(global_env->user);
+
+    if (global_env->inherited)
+        HYDU_env_free_list(global_env->inherited);
+
+    if (global_env->prop)
+        HYDU_FREE(global_env->prop);
+}
+
 static void init_node(struct HYD_node *node)
 {
     node->hostname = NULL;



More information about the mpich2-commits mailing list