diff --git a/configure.ac b/configure.ac index e09ee54697..da83c96960 100644 --- a/configure.ac +++ b/configure.ac @@ -403,9 +403,6 @@ AC_CONFIG_FILES([ src/mca/mpi/topo/Makefile src/mca/mpi/topo/base/Makefile - src/mca/lam/oob/cofs/Makefile - src/mca/lam/oob/cofs/src/Makefile - src/tools/Makefile src/tools/wrappers/Makefile diff --git a/src/mca/lam/Makefile.am b/src/mca/lam/Makefile.am index eadac9bcc2..04456d30b7 100644 --- a/src/mca/lam/Makefile.am +++ b/src/mca/lam/Makefile.am @@ -9,7 +9,7 @@ include $(top_srcdir)/config/Makefile.options # the base first). common_lam must be second, however, because # modules under there may be statically linked to other modules. -SUBDIRS = base common_lam pcm registry +SUBDIRS = base common_lam oob pcm registry # Source code files diff --git a/src/mca/lam/oob/base/.cvsignore b/src/mca/lam/oob/base/.cvsignore index 3dda72986f..b312ec8684 100644 --- a/src/mca/lam/oob/base/.cvsignore +++ b/src/mca/lam/oob/base/.cvsignore @@ -1,2 +1,3 @@ Makefile.in Makefile +static-modules.h diff --git a/src/mca/lam/oob/cofs/.cvsignore b/src/mca/lam/oob/cofs/.cvsignore index f880c281a3..4f7712fb02 100644 --- a/src/mca/lam/oob/cofs/.cvsignore +++ b/src/mca/lam/oob/cofs/.cvsignore @@ -1,4 +1,14 @@ -.libs -libmca_lam_oob_cofs.la Makefile Makefile.in +acinclude.m4 +aclocal.m4 +configure +configure.ac +config.log +config.status +libtool +autom4te.cache +.libs +.deps +*.la +.lam* diff --git a/src/mca/lam/oob/cofs/Makefile.am b/src/mca/lam/oob/cofs/Makefile.am index 93a71a7ab2..89e54b2620 100644 --- a/src/mca/lam/oob/cofs/Makefile.am +++ b/src/mca/lam/oob/cofs/Makefile.am @@ -3,15 +3,36 @@ # $HEADER$ # -include $(top_srcdir)/config/Makefile.options +# Use the top-level LAM Makefile.options -SUBDIRS = src -DIST_SUBDIRS = $(SUBDIRS) +include $(top_lam_srcdir)/config/Makefile.options -module_noinst = libmca_lam_oob_cofs.la -module_install = +SUBDIRS = src +DIST_SUBDIRS = config $(SUBDIRS) + +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_LOADABLE_MODULE +module_noinst = +module_install = mca_oob_cofs.la +else +module_noinst = libmca_lam_oob_cofs.la +module_install = +endif + +lamssiexecdir = $(libdir)/lam +lamssiexec_LTLIBRARIES = $(module_install) +mca_oob_cofs_la_SOURCES = +mca_oob_cofs_la_LIBADD = \ + src/libmca_oob_cofs.la \ + $(top_lam_builddir)/src/lam/liblam.la +mca_oob_cofs_la_LDFLAGS = -module -avoid-version noinst_LTLIBRARIES = $(module_noinst) - -libmca_lam_oob_cofs_la_SOURCES= -libmca_lam_oob_cofs_la_LIBADD = src/libcofs.la +libmca_lam_oob_cofs_la_SOURCES = +libmca_lam_oob_cofs_la_LIBADD = src/libmca_oob_cofs.la +libmca_lam_oob_cofs_la_LDFLAGS = -module -avoid-version diff --git a/src/mca/lam/oob/cofs/VERSION b/src/mca/lam/oob/cofs/VERSION new file mode 100644 index 0000000000..54f912ce99 --- /dev/null +++ b/src/mca/lam/oob/cofs/VERSION @@ -0,0 +1,6 @@ +major=1 +minor=0 +release=0 +alpha=0 +beta=0 +cvs=1 diff --git a/src/mca/lam/oob/cofs/config/.cvsignore b/src/mca/lam/oob/cofs/config/.cvsignore new file mode 100644 index 0000000000..9503f6b47c --- /dev/null +++ b/src/mca/lam/oob/cofs/config/.cvsignore @@ -0,0 +1,9 @@ +config.guess +config.sub +depcomp +install-sh +ltmain.sh +Makefile +Makefile.in +missing +mkinstalldirs diff --git a/src/mca/lam/oob/cofs/config/Makefile.am b/src/mca/lam/oob/cofs/config/Makefile.am new file mode 100644 index 0000000000..270f85be02 --- /dev/null +++ b/src/mca/lam/oob/cofs/config/Makefile.am @@ -0,0 +1,15 @@ +# -*- makefile -*- +# +# $HEADER$ +# + +include $(top_lam_srcdir)/config/Makefile.options + +# This file is only here so that "make dist" grabs all the extra +# config-level files that are necessary to build a LAM distribution +# tarball. Nothing gets built in this directory. + +# Seems to be an automake bug -- depcomp is not automatically included +# in distribution tarballs. + +EXTRA_DIST = depcomp diff --git a/src/mca/lam/oob/cofs/configure.params b/src/mca/lam/oob/cofs/configure.params new file mode 100644 index 0000000000..a288603b2e --- /dev/null +++ b/src/mca/lam/oob/cofs/configure.params @@ -0,0 +1,9 @@ +# -*- shell-script -*- +# +# $HEADER$ +# + +# Specific to this module + +PARAM_INIT_FILE=src/oob_cofs.c +PARAM_CONFIG_FILES="Makefile config/Makefile src/Makefile" diff --git a/src/mca/lam/oob/cofs/src/.cvsignore b/src/mca/lam/oob/cofs/src/.cvsignore index dc53cf5945..9f2bf05175 100644 --- a/src/mca/lam/oob/cofs/src/.cvsignore +++ b/src/mca/lam/oob/cofs/src/.cvsignore @@ -1,7 +1,9 @@ .deps .libs -libcofs.la Makefile Makefile.in -oob_cofs.lo -oob_cofs_module.lo +*.lo +libmca_oob_cofs.la +oob_cofs_config.h +oob_cofs_config.h.in +stamp-h1 diff --git a/src/mca/lam/oob/cofs/src/Makefile.am b/src/mca/lam/oob/cofs/src/Makefile.am index 55d0020597..61cfc9a455 100644 --- a/src/mca/lam/oob/cofs/src/Makefile.am +++ b/src/mca/lam/oob/cofs/src/Makefile.am @@ -2,17 +2,16 @@ # $HEADER$ # -include $(top_srcdir)/config/Makefile.options +include $(top_lam_srcdir)/config/Makefile.options -noinst_LTLIBRARIES = libcofs.la +AM_CPPFLAGS = \ + -I$(top_lam_builddir)/src/include \ + -I$(top_lam_srcdir)/src \ + -I$(top_lam_srcdir)/src/include -# Source code files - -headers = \ - oob_cofs.h - -libcofs_la_SOURCES = \ - $(headers) \ +noinst_LTLIBRARIES = libmca_oob_cofs.la +libmca_oob_cofs_la_SOURCES = \ + oob_cofs.h \ oob_cofs_module.c \ oob_cofs.c diff --git a/src/mca/lam/oob/cofs/src/oob_cofs.c b/src/mca/lam/oob/cofs/src/oob_cofs.c index 0d46fdc37e..35cdb4f6ea 100644 --- a/src/mca/lam/oob/cofs/src/oob_cofs.c +++ b/src/mca/lam/oob/cofs/src/oob_cofs.c @@ -95,7 +95,7 @@ mca_oob_cofs_recv_nb(lam_job_handle_t job_handle, int* tag, int* vpid, int mca_oob_cofs_recv_cb(lam_job_handle_t job_handle, int tag, - mca_oob_recv_cb_t callback) + mca_oob_base_recv_cb_t callback) { return LAM_ERR_NOT_SUPPORTED; } diff --git a/src/mca/lam/oob/cofs/src/oob_cofs.h b/src/mca/lam/oob/cofs/src/oob_cofs.h index 701871d4d6..5b2bd7ab0a 100644 --- a/src/mca/lam/oob/cofs/src/oob_cofs.h +++ b/src/mca/lam/oob/cofs/src/oob_cofs.h @@ -19,7 +19,7 @@ int mca_oob_cofs_close(void); * Startup / Shutdown */ int mca_oob_cofs_query(int *priority); -struct mca_oob_1_0_0* mca_oob_cofs_init(void); +struct mca_oob_1_0_0_t* mca_oob_cofs_init(void); int mca_oob_cofs_finalize(void); @@ -33,7 +33,7 @@ int mca_oob_cofs_recv(lam_job_handle_t job_handle, int* tag, int* vpid, int mca_oob_cofs_recv_nb(lam_job_handle_t job_handle, int* tag, int* vpid, void** data, size_t* data_len); int mca_oob_cofs_recv_cb(lam_job_handle_t job_handle, int tag, - mca_oob_recv_cb_t callback); + mca_oob_base_recv_cb_t callback); extern char mca_oob_cofs_comm_loc[LAM_PATH_MAX]; /* location for file drop-off */ diff --git a/src/mca/lam/oob/cofs/src/oob_cofs_module.c b/src/mca/lam/oob/cofs/src/oob_cofs_module.c index 60f06e5bdd..e4cd664dbc 100644 --- a/src/mca/lam/oob/cofs/src/oob_cofs_module.c +++ b/src/mca/lam/oob/cofs/src/oob_cofs_module.c @@ -19,22 +19,19 @@ /* * Struct of function pointers and all that to let us be initialized */ -mca_oob_module_1_0_0_t mca_oob_cofs_module_1_0_0_0 = { +mca_oob_base_module_1_0_0_t mca_oob_cofs_module = { { - 1, /* MCA major version */ - 0, /* MCA minor version */ - 0, /* MCA release version */ - "OOB", /* MCA type name */ - 1, /* MCA type major version */ - 0, /* MCA type minor version */ - 0, /* MCA type release version */ - "COFS", /* MCA module name */ + MCA_OOB_BASE_VERSION_1_0_0, + + "cofs", /* MCA module name */ 1, /* MCA module major version */ 0, /* MCA module minor version */ 0, /* MCA module release version */ mca_oob_cofs_open, /* module open */ - mca_oob_cofs_close, /* module close */ - false /* MCA module is not checkpointable */ + mca_oob_cofs_close /* module close */ + }, + { + false /* checkpoint / restart */ }, mca_oob_cofs_query, /* module query */ mca_oob_cofs_init, /* module init */ @@ -74,7 +71,7 @@ mca_oob_cofs_query(int *priority) } -struct mca_oob_1_0_0* +struct mca_oob_1_0_0_t* mca_oob_cofs_init(void) { char *tmp; diff --git a/src/mca/lam/oob/oob.h b/src/mca/lam/oob/oob.h index 21825684b7..29d529ad62 100644 --- a/src/mca/lam/oob/oob.h +++ b/src/mca/lam/oob/oob.h @@ -42,53 +42,64 @@ */ /* "Special" tags */ -#define MCA_OOB_ANY_TAG -1 +#define MCA_OOB_ANY_TAG -1 #define MCA_OOB_REGISTRY_TAG -2 /* "Special" vpids */ -#define MCA_OOB_MPIRUN -1 +#define MCA_OOB_MPIRUN -1 -typedef void (*mca_oob_recv_cb_t)(lam_job_handle_t job_handle, int tag, - int vpid, void* data, size_t data_len, int status); +typedef void (*mca_oob_base_recv_cb_t)(lam_job_handle_t job_handle, int tag, + int vpid, void* data, size_t data_len, int status); /* * Functions every module instance will have to provide */ -typedef int (*mca_oob_query_fn_t)(int *priority); -typedef struct mca_oob_1_0_0* (*mca_oob_init_fn_t)(void); -typedef int (*mca_oob_send_fn_t)(lam_job_handle_t job_handle, int vpid, int tag, - void* data, size_t data_len); -typedef int (*mca_oob_recv_fn_t)(lam_job_handle_t job_handle, int* tag, int* vpid, - void** data, size_t* data_len); -typedef int (*mca_oob_recv_nb_fn_t)(lam_job_handle_t job_handle, int* tag, int* vpid, - void** data, size_t* data_len); -typedef int (*mca_oob_recv_cb_fn_t)(lam_job_handle_t job_handle, int tag, - mca_oob_recv_cb_t callback); -typedef int (*mca_oob_finalize_fn_t)(void); +typedef int (*mca_oob_base_query_fn_t)(int *priority); +typedef struct mca_oob_1_0_0_t* (*mca_oob_base_init_fn_t)(void); +typedef int (*mca_oob_base_send_fn_t)(lam_job_handle_t job_handle, int vpid, int tag, + void* data, size_t data_len); +typedef int (*mca_oob_base_recv_fn_t)(lam_job_handle_t job_handle, int* tag, int* vpid, + void** data, size_t* data_len); +typedef int (*mca_oob_base_recv_nb_fn_t)(lam_job_handle_t job_handle, int* tag, int* vpid, + void** data, size_t* data_len); +typedef int (*mca_oob_base_recv_cb_fn_t)(lam_job_handle_t job_handle, int tag, + mca_oob_base_recv_cb_t callback); +typedef int (*mca_oob_base_finalize_fn_t)(void); /* * Ver 1.0.0 */ -struct mca_oob_module_1_0_0_t { - mca_module_1_0_0_t super; +struct mca_oob_base_module_1_0_0_t { + mca_base_module_t oobm_version; + mca_base_module_data_1_0_0_t oobm_data; - mca_oob_query_fn_t oobm_query; - mca_oob_init_fn_t oobm_init; - mca_oob_finalize_fn_t oob_finalize; + mca_oob_base_query_fn_t oobm_query; + mca_oob_base_init_fn_t oobm_init; + mca_oob_base_finalize_fn_t oob_finalize; }; -typedef struct mca_oob_module_1_0_0_t mca_oob_module_1_0_0_t; +typedef struct mca_oob_base_module_1_0_0_t mca_oob_base_module_1_0_0_t; struct mca_oob_1_0_0_t { - mca_oob_send_fn_t oob_send; - mca_oob_recv_fn_t oob_recv; - mca_oob_recv_nb_fn_t oob_recv_nb; - mca_oob_recv_cb_fn_t oob_recv_cb; + mca_oob_base_send_fn_t oob_send; + mca_oob_base_recv_fn_t oob_recv; + mca_oob_base_recv_nb_fn_t oob_recv_nb; + mca_oob_base_recv_cb_fn_t oob_recv_cb; }; typedef struct mca_oob_1_0_0_t mca_oob_1_0_0_t; -typedef mca_oob_module_1_0_0_t mca_oob_module_t; +/* + * Macro for use in modules that are of type coll v1.0.0 + */ +#define MCA_OOB_BASE_VERSION_1_0_0 \ + /* oob v1.0 is chained to MCA v1.0 */ \ + MCA_BASE_VERSION_1_0_0, \ + /* oob v1.0 */ \ + "oob", 1, 0, 0 + + +typedef mca_oob_base_module_1_0_0_t mca_oob_base_module_t; typedef mca_oob_1_0_0_t mca_oob_t; diff --git a/test/unit/lam/oob_cofs/.cvsignore b/test/unit/lam/oob_cofs/.cvsignore index 88fbe48c69..b0560e60c0 100644 --- a/test/unit/lam/oob_cofs/.cvsignore +++ b/test/unit/lam/oob_cofs/.cvsignore @@ -3,3 +3,4 @@ Makefile .deps .libs .gdb_history +oob_cofs_test diff --git a/test/unit/lam/oob_cofs/oob_cofs_test.c b/test/unit/lam/oob_cofs/oob_cofs_test.c index ab681990e5..9b383871f3 100644 --- a/test/unit/lam/oob_cofs/oob_cofs_test.c +++ b/test/unit/lam/oob_cofs/oob_cofs_test.c @@ -49,9 +49,10 @@ main(int argc, char* argv[]) exit(1); } - printf("#\n# Sending Messages\n#\n"); + printf("#\n# Sending Messages\n#\n\n"); for (msg_count = 0 ; msg_count < 20 ; ++msg_count) { sprintf(buffer, "%s's message number %d\n", argv[1], msg_count); + printf("%d %d: %s\n", target_vpid, 1, buffer); ret = mca_oob_cofs_send("foobar", target_vpid, 1, buffer, strlen(buffer) + 1); if (ret != LAM_SUCCESS) { printf("mca_oob_cofs_send failed on msg_count %d\n", msg_count); @@ -59,7 +60,7 @@ main(int argc, char* argv[]) } } - printf("#\n# Receiving Messages\n#\n"); + printf("#\n# Receiving Messages\n#\n\n"); for (msg_count = 0 ; msg_count < 20 ; ++msg_count) { source_tag = 1; ret = mca_oob_cofs_recv("foobar", &source_tag, &source_vpid, (void**) &source_data, &source_len); @@ -71,6 +72,6 @@ main(int argc, char* argv[]) free(source_data); } - printf("#\n# Finished\n#\n"); + printf("#\n# Finished\n#\n\n"); return 0; }