* shell code for rsh pcm module. Doesn't work, but has priority of 99, so
it should really never get selected. This commit was SVN r807.
Этот коммит содержится в:
родитель
b4746704ab
Коммит
d50cb6b82a
37
src/mca/lam/pcm/rsh/Makefile.am
Обычный файл
37
src/mca/lam/pcm/rsh/Makefile.am
Обычный файл
@ -0,0 +1,37 @@
|
||||
# -*- makefile -*-
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# Use the top-level LAM Makefile.options
|
||||
|
||||
include $(top_lam_srcdir)/config/Makefile.options
|
||||
|
||||
SUBDIRS = src
|
||||
|
||||
EXTRA_DIST = VERSION
|
||||
|
||||
# According to the MCA spec, we have to make the output library here
|
||||
# in the top-level directory, and it has to be named
|
||||
# liblam_ssi_coll_lam_basic.la
|
||||
|
||||
if LAM_BUILD_pcm_rsh_LOADABLE_MODULE
|
||||
module_noinst =
|
||||
module_install = mca_pcm_rsh.la
|
||||
else
|
||||
module_noinst = libmca_lam_pcm_rsh.la
|
||||
module_install =
|
||||
endif
|
||||
|
||||
mcamoduledir = $(libdir)/lam
|
||||
mcamodule_LTLIBRARIES = $(module_install)
|
||||
mca_pcm_rsh_la_SOURCES =
|
||||
mca_pcm_rsh_la_LIBADD = \
|
||||
src/libmca_pcm_rsh.la \
|
||||
$(LIBLAM_LA)
|
||||
mca_pcm_rsh_la_LDFLAGS = -module -avoid-version
|
||||
|
||||
noinst_LTLIBRARIES = $(module_noinst)
|
||||
libmca_lam_pcm_rsh_la_SOURCES =
|
||||
libmca_lam_pcm_rsh_la_LIBADD = src/libmca_pcm_rsh.la
|
||||
libmca_lam_pcm_rsh_la_LDFLAGS = -module -avoid-version
|
6
src/mca/lam/pcm/rsh/VERSION
Обычный файл
6
src/mca/lam/pcm/rsh/VERSION
Обычный файл
@ -0,0 +1,6 @@
|
||||
major=1
|
||||
minor=0
|
||||
release=0
|
||||
alpha=0
|
||||
beta=0
|
||||
cvs=1
|
9
src/mca/lam/pcm/rsh/configure.params
Обычный файл
9
src/mca/lam/pcm/rsh/configure.params
Обычный файл
@ -0,0 +1,9 @@
|
||||
# -*- shell-script -*-
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# Specific to this module
|
||||
|
||||
PARAM_INIT_FILE=src/pcm_rsh.c
|
||||
PARAM_CONFIG_FILES="Makefile src/Makefile"
|
17
src/mca/lam/pcm/rsh/src/Makefile.am
Обычный файл
17
src/mca/lam/pcm/rsh/src/Makefile.am
Обычный файл
@ -0,0 +1,17 @@
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
include $(top_lam_srcdir)/config/Makefile.options
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_lam_builddir)/src/include \
|
||||
-I$(top_lam_srcdir)/src \
|
||||
-I$(top_lam_srcdir)/src/include
|
||||
|
||||
noinst_LTLIBRARIES = libmca_pcm_rsh.la
|
||||
libmca_pcm_rsh_la_SOURCES = \
|
||||
pcm_rsh.h \
|
||||
pcm_rsh_module.c \
|
||||
pcm_rsh.c
|
||||
|
155
src/mca/lam/pcm/rsh/src/pcm_rsh.c
Обычный файл
155
src/mca/lam/pcm/rsh/src/pcm_rsh.c
Обычный файл
@ -0,0 +1,155 @@
|
||||
/* -*- C -*-
|
||||
*
|
||||
* $HEADER$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "lam_config.h"
|
||||
|
||||
#include "mca/lam/pcm/pcm.h"
|
||||
#include "mca/lam/pcm/rsh/src/pcm_rsh.h"
|
||||
#include "lam/mem/malloc.h"
|
||||
#include "lam/types.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <dirent.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static const char *handle_base = "pcm_rsh_job";
|
||||
static unsigned long handle_count = 0;
|
||||
|
||||
int
|
||||
mca_pcm_rsh_query_get_nodes(mca_pcm_rte_node_t **nodes, size_t * nodes_len,
|
||||
int *available_procs)
|
||||
{
|
||||
return LAM_ERR_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
|
||||
lam_job_handle_t
|
||||
mca_pcm_rsh_handle_new(lam_job_handle_t parent)
|
||||
{
|
||||
char *new_handle = NULL;
|
||||
int mypid = 0;
|
||||
char hostname[MAXHOSTNAMELEN];
|
||||
size_t handle_len = strlen(handle_base) + strlen("___") +
|
||||
(8 * sizeof(int) * 2) + MAXHOSTNAMELEN;
|
||||
|
||||
/* we don't support spawning just yet */
|
||||
if (parent != NULL) return NULL;
|
||||
|
||||
gethostname(hostname, MAXHOSTNAMELEN);
|
||||
|
||||
new_handle = (char*) malloc(handle_len);
|
||||
if (new_handle == NULL) return new_handle;
|
||||
|
||||
snprintf(new_handle, handle_len, "%s_%s_%d_%d", handle_base, hostname,
|
||||
mypid, handle_count++);
|
||||
return new_handle;
|
||||
}
|
||||
|
||||
|
||||
lam_job_handle_t
|
||||
mca_pcm_rsh_handle_get(void)
|
||||
{
|
||||
return mca_pcm_rsh_my_job_handle;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
mca_pcm_rsh_handle_free(lam_job_handle_t * job_handle)
|
||||
{
|
||||
if (job_handle != NULL) free(job_handle);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_job_can_spawn(lam_job_handle_t job_handle)
|
||||
{
|
||||
if (mca_pcm_rsh_handle_get() != NULL) {
|
||||
/* no support for spawned jobs */
|
||||
return LAM_ERR_NOT_SUPPORTED;
|
||||
} else {
|
||||
return LAM_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_job_set_arguments(lam_job_handle_t job_handle,
|
||||
mca_pcm_control_args_t * opts,
|
||||
size_t opts_len)
|
||||
{
|
||||
return LAM_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_job_launch_procs(lam_job_handle_t job_handle,
|
||||
mca_pcm_rte_node_t *nodes,
|
||||
size_t nodes_len, const char *file,
|
||||
int argc, const char *argv[],
|
||||
const char *env[])
|
||||
{
|
||||
return LAM_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_job_rendezvous(lam_job_handle_t job_handle)
|
||||
{
|
||||
return LAM_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_job_wait(lam_job_handle_t job_handle)
|
||||
{
|
||||
return LAM_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_job_running(lam_job_handle_t job_handle,
|
||||
int *running)
|
||||
{
|
||||
return LAM_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_job_list_running(lam_job_handle_t ** handles,
|
||||
size_t handles_len)
|
||||
{
|
||||
return LAM_ERR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_proc_startup(void)
|
||||
{
|
||||
return LAM_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_proc_get_peers(mca_pcm_proc_t **procs, size_t *nprocs)
|
||||
{
|
||||
return LAM_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
mca_pcm_proc_t*
|
||||
mca_pcm_rsh_proc_get_me(void)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_proc_get_parent(void)
|
||||
{
|
||||
return LAM_ERR_NOT_IMPLEMENTED;
|
||||
}
|
84
src/mca/lam/pcm/rsh/src/pcm_rsh.h
Обычный файл
84
src/mca/lam/pcm/rsh/src/pcm_rsh.h
Обычный файл
@ -0,0 +1,84 @@
|
||||
/* -*- C -*-
|
||||
*
|
||||
* $HEADER$
|
||||
*
|
||||
*/
|
||||
#include "lam_config.h"
|
||||
|
||||
#include "mca/lam/pcm/pcm.h"
|
||||
#include "lam/types.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/*
|
||||
* Module open / close
|
||||
*/
|
||||
int mca_pcm_rsh_open(void);
|
||||
int mca_pcm_rsh_close(void);
|
||||
|
||||
/*
|
||||
* Startup / Shutdown
|
||||
*/
|
||||
struct mca_pcm_1_0_0_t* mca_pcm_rsh_init(int *priority,
|
||||
bool *allow_multi_user_threads,
|
||||
bool *have_hidden_threads);
|
||||
int mca_pcm_rsh_finalize(void);
|
||||
|
||||
|
||||
/*
|
||||
* "Action" functions
|
||||
*/
|
||||
int mca_pcm_rsh_query_get_nodes(mca_pcm_rte_node_t **nodes, size_t *nodes_len,
|
||||
int *available_procs);
|
||||
|
||||
lam_job_handle_t mca_pcm_rsh_handle_new(lam_job_handle_t parent);
|
||||
lam_job_handle_t mca_pcm_rsh_handle_get(void);
|
||||
void mca_pcm_rsh_handle_free(lam_job_handle_t *job_handle);
|
||||
|
||||
int mca_pcm_rsh_job_can_spawn(lam_job_handle_t job_handle);
|
||||
int mca_pcm_rsh_job_set_arguments(lam_job_handle_t job_handle,
|
||||
mca_pcm_control_args_t* opts,
|
||||
size_t opts_len);
|
||||
int mca_pcm_rsh_job_launch_procs(lam_job_handle_t job_handle,
|
||||
mca_pcm_rte_node_t *nodes,
|
||||
size_t nodes_len, const char* file,
|
||||
int argc, const char* argv[],
|
||||
const char *env[]);
|
||||
int mca_pcm_rsh_job_rendezvous(lam_job_handle_t job_handle);
|
||||
int mca_pcm_rsh_job_wait(lam_job_handle_t job_handle);
|
||||
int mca_pcm_rsh_job_running(lam_job_handle_t job_handle,
|
||||
int* running);
|
||||
int mca_pcm_rsh_job_list_running(lam_job_handle_t **handles,
|
||||
size_t handles_len);
|
||||
|
||||
int mca_pcm_rsh_proc_startup(void);
|
||||
int mca_pcm_rsh_proc_get_peers(mca_pcm_proc_t **procs, size_t *nprocs);
|
||||
mca_pcm_proc_t* mca_pcm_rsh_proc_get_me(void);
|
||||
int mca_pcm_rsh_proc_get_parent(void);
|
||||
|
||||
/*
|
||||
* Private types / data / etc.
|
||||
*/
|
||||
|
||||
struct mca_pcm_rsh_connection_item_t {
|
||||
lam_list_item_t super;
|
||||
|
||||
pid_t rshpid;
|
||||
int vpid;
|
||||
int status;
|
||||
};
|
||||
typedef struct mca_pcm_rsh_connection_t mca_pcm_rsh_connection_t;
|
||||
|
||||
extern lam_list_t mca_pcm_rsh_connections;
|
||||
|
||||
extern lam_job_handle_t mca_pcm_rsh_my_job_handle;
|
||||
extern int mca_pcm_rsh_my_vpid;
|
||||
|
||||
extern char *mca_pcm_rsh_rsh;
|
||||
|
||||
|
||||
/*
|
||||
* Private functions
|
||||
*/
|
||||
void mca_pcm_rsh_lock_connections(void);
|
||||
void mca_pcm_rsh_unlock_connections(void);
|
130
src/mca/lam/pcm/rsh/src/pcm_rsh_module.c
Обычный файл
130
src/mca/lam/pcm/rsh/src/pcm_rsh_module.c
Обычный файл
@ -0,0 +1,130 @@
|
||||
/* -*- C -*-
|
||||
*
|
||||
* $HEADER$
|
||||
*
|
||||
*/
|
||||
|
||||
#include "lam_config.h"
|
||||
|
||||
#include "lam/constants.h"
|
||||
#include "lam/types.h"
|
||||
#include "lam/mem/malloc.h"
|
||||
#include "lam/lfc/lam_list.h"
|
||||
#include "mca/mca.h"
|
||||
#include "mca/lam/base/mca_base_param.h"
|
||||
#include "mca/lam/pcm/pcm.h"
|
||||
#include "mca/lam/pcm/rsh/src/pcm_rsh.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
/*
|
||||
* Struct of function pointers and all that to let us be initialized
|
||||
*/
|
||||
mca_pcm_base_module_1_0_0_t mca_pcm_rsh_module = {
|
||||
{
|
||||
MCA_PCM_BASE_VERSION_1_0_0,
|
||||
|
||||
"rsh", /* MCA module name */
|
||||
1, /* MCA module major version */
|
||||
0, /* MCA module minor version */
|
||||
0, /* MCA module release version */
|
||||
mca_pcm_rsh_open, /* module open */
|
||||
mca_pcm_rsh_close /* module close */
|
||||
},
|
||||
{
|
||||
false /* checkpoint / restart */
|
||||
},
|
||||
mca_pcm_rsh_init, /* module init */
|
||||
mca_pcm_rsh_finalize
|
||||
};
|
||||
|
||||
|
||||
struct mca_pcm_1_0_0_t mca_pcm_rsh_1_0_0 = {
|
||||
mca_pcm_rsh_query_get_nodes,
|
||||
|
||||
mca_pcm_rsh_handle_new,
|
||||
mca_pcm_rsh_handle_get,
|
||||
mca_pcm_rsh_handle_free,
|
||||
|
||||
mca_pcm_rsh_job_can_spawn,
|
||||
mca_pcm_rsh_job_set_arguments,
|
||||
mca_pcm_rsh_job_launch_procs,
|
||||
mca_pcm_rsh_job_rendezvous,
|
||||
mca_pcm_rsh_job_wait,
|
||||
mca_pcm_rsh_job_running,
|
||||
mca_pcm_rsh_job_list_running,
|
||||
|
||||
mca_pcm_rsh_proc_startup,
|
||||
mca_pcm_rsh_proc_get_peers,
|
||||
mca_pcm_rsh_proc_get_me,
|
||||
mca_pcm_rsh_proc_get_parent
|
||||
};
|
||||
|
||||
lam_list_t mca_pcm_rsh_connections;
|
||||
|
||||
lam_job_handle_t mca_pcm_rsh_my_job_handle = NULL;
|
||||
int mca_pcm_rsh_my_vpid = -1;
|
||||
|
||||
char *mca_pcm_rsh_rsh = NULL;
|
||||
char *mca_pcm_rsh_hostfile = NULL;
|
||||
|
||||
int
|
||||
mca_pcm_rsh_open(void)
|
||||
{
|
||||
int id;
|
||||
|
||||
OBJ_CONSTRUCT(&mca_pcm_rsh_connections, lam_list_t);
|
||||
|
||||
/* BWB - we should really make sure that we have an RSH in the path
|
||||
somewhere and make that a configure option and all that */
|
||||
id = mca_base_param_register_string("pcm", "rsh", "rsh", NULL, "ssh");
|
||||
mca_base_param_lookup_string(id, &mca_pcm_rsh_rsh);
|
||||
|
||||
id = mca_base_param_register_int("pcm", "rsh", "vpid", NULL, 0);
|
||||
mca_base_param_lookup_int(id, &mca_pcm_rsh_my_vpid);
|
||||
|
||||
id = mca_base_param_register_string("pcm", "rsh", "job_handle", NULL, NULL);
|
||||
mca_base_param_lookup_string(id, &mca_pcm_rsh_my_job_handle);
|
||||
|
||||
id = mca_base_param_register_string("pcm", "rsh", "hostfile", NULL, NULL);
|
||||
mca_base_param_lookup_string(id, &mca_pcm_rsh_hostfile);
|
||||
|
||||
return LAM_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_close(void)
|
||||
{
|
||||
/* BWB - free list? */
|
||||
|
||||
OBJ_DESTRUCT(&mca_pcm_rsh_connections);
|
||||
|
||||
return LAM_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
struct mca_pcm_1_0_0_t*
|
||||
mca_pcm_rsh_init(int *priority, bool *allow_multi_user_threads,
|
||||
bool *have_hidden_threads)
|
||||
{
|
||||
*priority = 0;
|
||||
/* BWB - reevaluate this setting at some point */
|
||||
*allow_multi_user_threads = true;
|
||||
*have_hidden_threads = false;
|
||||
|
||||
/* That's about all we wrote thus far */
|
||||
|
||||
return &mca_pcm_rsh_1_0_0;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
mca_pcm_rsh_finalize(void)
|
||||
{
|
||||
return LAM_SUCCESS;
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user