2004-07-01 18:49:54 +04:00
|
|
|
/*
|
2004-02-01 00:43:26 +03:00
|
|
|
* $HEADER$
|
|
|
|
*/
|
2004-07-01 18:49:54 +04:00
|
|
|
/** @file:
|
|
|
|
*
|
2004-08-05 03:42:51 +04:00
|
|
|
* the oob framework
|
2004-07-01 18:49:54 +04:00
|
|
|
*/
|
2004-02-01 00:43:26 +03:00
|
|
|
|
2004-08-05 03:42:51 +04:00
|
|
|
#ifndef _MCA_OOB_BASE_H_
|
|
|
|
#define _MCA_OOB_BASE_H_
|
|
|
|
#include "mca/mca.h"
|
|
|
|
#include "mca/ns/ns.h"
|
|
|
|
#include <sys/uio.h>
|
2004-09-20 23:55:01 +04:00
|
|
|
#include "util/bufpack.h"
|
2004-02-01 00:43:26 +03:00
|
|
|
|
|
|
|
|
2004-08-05 03:42:51 +04:00
|
|
|
/*
|
|
|
|
* Well known address
|
|
|
|
*/
|
|
|
|
|
|
|
|
extern ompi_process_name_t mca_oob_name_any;
|
2004-09-09 18:41:22 +04:00
|
|
|
extern ompi_process_name_t mca_oob_name_seed;
|
2004-08-05 03:42:51 +04:00
|
|
|
extern ompi_process_name_t mca_oob_name_self;
|
|
|
|
|
2004-08-10 03:07:53 +04:00
|
|
|
/**
|
|
|
|
* The wildcard for recieves from any peer.
|
|
|
|
*/
|
2004-08-05 03:42:51 +04:00
|
|
|
#define MCA_OOB_NAME_ANY &mca_oob_name_any
|
2004-08-10 03:07:53 +04:00
|
|
|
/**
|
|
|
|
* Process name of self
|
|
|
|
*/
|
2004-08-05 03:42:51 +04:00
|
|
|
#define MCA_OOB_NAME_SELF &mca_oob_name_self
|
2004-09-09 18:41:22 +04:00
|
|
|
/**
|
|
|
|
* Process name of seed
|
|
|
|
*/
|
|
|
|
#define MCA_OOB_NAME_SEED &mca_oob_name_seed
|
|
|
|
|
2004-02-01 00:43:26 +03:00
|
|
|
|
2004-07-01 18:49:54 +04:00
|
|
|
/*
|
2004-08-05 03:42:51 +04:00
|
|
|
* Other constants
|
2004-07-01 18:49:54 +04:00
|
|
|
*/
|
2004-08-10 03:07:53 +04:00
|
|
|
/**
|
2004-08-13 19:09:24 +04:00
|
|
|
* Receive from any tag.
|
2004-08-10 03:07:53 +04:00
|
|
|
*/
|
2004-08-05 03:42:51 +04:00
|
|
|
#define MCA_OOB_TAG_ANY 0
|
2004-08-13 19:09:24 +04:00
|
|
|
/**
|
|
|
|
* Service tags
|
|
|
|
*/
|
2004-08-27 19:54:58 +04:00
|
|
|
#define MCA_OOB_TAG_NS 1
|
|
|
|
#define MCA_OOB_TAG_GPR 2
|
|
|
|
#define MCA_OOB_TAG_GPR_NOTIFY 3
|
2004-09-02 03:07:40 +04:00
|
|
|
#define MCA_OOB_TAG_RTE 4
|
|
|
|
#define MCA_OOB_TAG_EXEC 5
|
2004-09-03 17:54:34 +04:00
|
|
|
#define MCA_OOB_TAG_DAEMON 6
|
2004-09-09 01:52:44 +04:00
|
|
|
#define MCA_OOB_TAG_STDIO 7
|
2004-09-09 18:41:22 +04:00
|
|
|
#define MCA_OOB_TAG_SCHED 8
|
2004-09-10 02:00:25 +04:00
|
|
|
#define MCA_OOB_TAG_USER 1000 /* user defined tags should be assigned above this level */
|
2004-08-05 03:42:51 +04:00
|
|
|
|
|
|
|
/*
|
|
|
|
* OOB API
|
2004-06-30 00:36:34 +04:00
|
|
|
*/
|
2004-07-01 18:49:54 +04:00
|
|
|
|
2004-08-05 03:42:51 +04:00
|
|
|
/**
|
|
|
|
* General flags for send/recv
|
|
|
|
*
|
|
|
|
* An example of usage - to determine the size of the next available message w/out receiving it:
|
|
|
|
*
|
2004-08-12 01:07:16 +04:00
|
|
|
* int size = mca_oob_recv(name, 0, 0, MCA_OOB_TRUNC|MCA_OOB_PEEK);
|
2004-08-05 03:42:51 +04:00
|
|
|
*/
|
2004-07-01 18:49:54 +04:00
|
|
|
|
2004-08-10 03:07:53 +04:00
|
|
|
#define MCA_OOB_PEEK 0x01 /**< flag to oob_recv to allow caller to peek a portion of the next available
|
2004-08-05 03:42:51 +04:00
|
|
|
* message w/out removing the message from the queue. */
|
2004-08-13 02:41:42 +04:00
|
|
|
#define MCA_OOB_TRUNC 0x02 /**< flag to oob_recv to return the actual size of the message even if
|
|
|
|
* the receive buffer is smaller than the number of bytes available */
|
|
|
|
#define MCA_OOB_ALLOC 0x04 /**< flag to oob_recv to request the oob to allocate a buffer of the appropriate
|
|
|
|
* size for the receive and return the allocated buffer and size in the first
|
|
|
|
* element of the iovec array. */
|
2004-06-30 00:36:34 +04:00
|
|
|
|
2004-02-01 00:43:26 +03:00
|
|
|
#if defined(c_plusplus) || defined(__cplusplus)
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
2004-08-05 03:42:51 +04:00
|
|
|
|
2004-08-24 20:54:45 +04:00
|
|
|
/**
|
|
|
|
* Obtain a string representation of the OOB contact information for
|
|
|
|
* the selected OOB channels. This string may be passed to another
|
|
|
|
* application via an MCA parameter (OMPI_MCA_oob_base_seed) to bootstrap
|
|
|
|
* communications.
|
|
|
|
*
|
|
|
|
* @return A null terminated string that should be freed by the caller.
|
|
|
|
*
|
|
|
|
* Note that mca_oob_base_init() must be called to load and select
|
|
|
|
* an OOB module prior to calling this routine.
|
|
|
|
*/
|
|
|
|
|
|
|
|
char* mca_oob_get_contact_info(void);
|
|
|
|
|
|
|
|
/**
|
2004-09-08 21:02:24 +04:00
|
|
|
* Pre-populate the cache of contact information required by the OOB
|
|
|
|
* to reach a given destination. This is required to setup a pointer
|
|
|
|
* to initial registry/name server/etc.
|
2004-08-24 20:54:45 +04:00
|
|
|
*
|
Not as bad as this all may look. Tim and I made a significant change to the way we handle the startup of the oob, the seed, etc. We have made it backwards-compatible so that mpirun2 and singleton operations remain working. We had to adjust the name server and gpr as well, plus the process_info structure.
This also includes a checkpoint update to openmpi.c and ompid.c. I have re-enabled the ompid compile.
This latter raises an important point. The trunk compiles the programs like ompid just fine under Linux. It also does just fine for OSX under the dynamic libraries. However, we are seeing errors when compiling under OSX for the static case - the linker seems to have trouble resolving some variable names, even though linker diagnostics show the variables as being defined. Thus, a warning to Mac users that you may have to locally turn things off if you are trying to do static compiles. We ask, however, that you don't commit those changes that turn things off for everyone else - instead, let's try to figure out why the static compile is having a problem, and let everyone else continue to work.
Thanks
Ralph
This commit was SVN r2534.
2004-09-08 07:59:06 +04:00
|
|
|
* @param uri The contact information of the peer process obtained
|
2004-08-24 20:54:45 +04:00
|
|
|
* via a call to mca_oob_get_contact_info().
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_set_contact_info(const char*);
|
|
|
|
|
2004-09-08 21:02:24 +04:00
|
|
|
/**
|
|
|
|
* A routine to ping a given process name to determine if it is reachable.
|
|
|
|
*
|
|
|
|
* @param name The peer name.
|
|
|
|
* @param tv The length of time to wait on a connection/response.
|
|
|
|
*
|
|
|
|
* Note that this routine blocks up to the specified timeout waiting for a
|
|
|
|
* connection / response from the specified peer. If the peer is unavailable
|
|
|
|
* an error status is returned.
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_ping(ompi_process_name_t* name, struct timeval* tv);
|
|
|
|
|
2004-08-11 02:11:31 +04:00
|
|
|
/**
|
Not as bad as this all may look. Tim and I made a significant change to the way we handle the startup of the oob, the seed, etc. We have made it backwards-compatible so that mpirun2 and singleton operations remain working. We had to adjust the name server and gpr as well, plus the process_info structure.
This also includes a checkpoint update to openmpi.c and ompid.c. I have re-enabled the ompid compile.
This latter raises an important point. The trunk compiles the programs like ompid just fine under Linux. It also does just fine for OSX under the dynamic libraries. However, we are seeing errors when compiling under OSX for the static case - the linker seems to have trouble resolving some variable names, even though linker diagnostics show the variables as being defined. Thus, a warning to Mac users that you may have to locally turn things off if you are trying to do static compiles. We ask, however, that you don't commit those changes that turn things off for everyone else - instead, let's try to figure out why the static compile is having a problem, and let everyone else continue to work.
Thanks
Ralph
This commit was SVN r2534.
2004-09-08 07:59:06 +04:00
|
|
|
* Extract from the contact info the peer process identifier.
|
2004-08-11 02:11:31 +04:00
|
|
|
*
|
Not as bad as this all may look. Tim and I made a significant change to the way we handle the startup of the oob, the seed, etc. We have made it backwards-compatible so that mpirun2 and singleton operations remain working. We had to adjust the name server and gpr as well, plus the process_info structure.
This also includes a checkpoint update to openmpi.c and ompid.c. I have re-enabled the ompid compile.
This latter raises an important point. The trunk compiles the programs like ompid just fine under Linux. It also does just fine for OSX under the dynamic libraries. However, we are seeing errors when compiling under OSX for the static case - the linker seems to have trouble resolving some variable names, even though linker diagnostics show the variables as being defined. Thus, a warning to Mac users that you may have to locally turn things off if you are trying to do static compiles. We ask, however, that you don't commit those changes that turn things off for everyone else - instead, let's try to figure out why the static compile is having a problem, and let everyone else continue to work.
Thanks
Ralph
This commit was SVN r2534.
2004-09-08 07:59:06 +04:00
|
|
|
* @param cinfo (IN) The contact information of the peer process.
|
|
|
|
* @param name (OUT) The peer process identifier.
|
|
|
|
* @param uris (OUT) Will return an array of uri strings corresponding
|
|
|
|
* to the peers exported protocols.
|
|
|
|
*
|
|
|
|
* Note the caller may pass NULL for the uris if they only wish to extact
|
|
|
|
* the process name.
|
2004-08-11 02:11:31 +04:00
|
|
|
*/
|
|
|
|
|
Not as bad as this all may look. Tim and I made a significant change to the way we handle the startup of the oob, the seed, etc. We have made it backwards-compatible so that mpirun2 and singleton operations remain working. We had to adjust the name server and gpr as well, plus the process_info structure.
This also includes a checkpoint update to openmpi.c and ompid.c. I have re-enabled the ompid compile.
This latter raises an important point. The trunk compiles the programs like ompid just fine under Linux. It also does just fine for OSX under the dynamic libraries. However, we are seeing errors when compiling under OSX for the static case - the linker seems to have trouble resolving some variable names, even though linker diagnostics show the variables as being defined. Thus, a warning to Mac users that you may have to locally turn things off if you are trying to do static compiles. We ask, however, that you don't commit those changes that turn things off for everyone else - instead, let's try to figure out why the static compile is having a problem, and let everyone else continue to work.
Thanks
Ralph
This commit was SVN r2534.
2004-09-08 07:59:06 +04:00
|
|
|
int mca_oob_parse_contact_info(const char* uri, ompi_process_name_t* peer, char*** uris);
|
2004-08-28 05:15:19 +04:00
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the contact info for the seed daemon.
|
|
|
|
*
|
|
|
|
* Note that this can also be passed to the application as an
|
|
|
|
* MCA parameter (OMPI_MCA_oob_base_seed). The contact info (of the seed)
|
|
|
|
* must currently be set before calling mca_oob_base_init().
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_set_contact_info(const char*);
|
|
|
|
|
2004-08-05 03:42:51 +04:00
|
|
|
/**
|
|
|
|
* Similiar to unix writev(2).
|
|
|
|
*
|
|
|
|
* @param peer (IN) Opaque name of peer process.
|
|
|
|
* @param msg (IN) Array of iovecs describing user buffers and lengths.
|
|
|
|
* @param count (IN) Number of elements in iovec array.
|
|
|
|
* @param tag (IN) User defined tag for matching send/recv.
|
|
|
|
* @param flags (IN) Currently unused.
|
|
|
|
* @return OMPI error code (<0) on error number of bytes actually sent.
|
|
|
|
*
|
|
|
|
* This routine provides semantics similar to unix send/writev with the addition of
|
|
|
|
* a tag parameter that can be used by the application to match the send w/ a specific
|
|
|
|
* receive. In other words - a recv call by the specified peer will only succeed when
|
|
|
|
* the corresponding (or wildcard) tag is used.
|
|
|
|
*
|
|
|
|
* The <i>peer</i> parameter represents an opaque handle to the peer process that
|
|
|
|
* is resolved by the oob layer (using the registry) to an actual physical network
|
|
|
|
* address.
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_send(
|
2004-08-13 02:41:42 +04:00
|
|
|
ompi_process_name_t* peer,
|
|
|
|
struct iovec *msg,
|
2004-08-05 03:42:51 +04:00
|
|
|
int count,
|
|
|
|
int tag,
|
|
|
|
int flags);
|
|
|
|
|
2004-08-12 02:05:02 +04:00
|
|
|
/*
|
|
|
|
* Similiar to unix send(2) and mca_oob_send.
|
|
|
|
*
|
|
|
|
* @param peer (IN) Opaque name of peer process.
|
|
|
|
* @param buffer (IN) Prepacked OMPI_BUFFER containing data to send
|
|
|
|
* @param flags (IN) Currently unused.
|
|
|
|
* @return OMPI error code (<0) on error or number of bytes actually sent.
|
|
|
|
*/
|
|
|
|
|
2004-08-13 02:41:42 +04:00
|
|
|
int mca_oob_send_packed(
|
|
|
|
ompi_process_name_t* peer,
|
|
|
|
ompi_buffer_t buffer,
|
|
|
|
int tag,
|
2004-08-05 03:42:51 +04:00
|
|
|
int flags);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Similiar to unix readv(2)
|
|
|
|
*
|
2004-08-13 02:41:42 +04:00
|
|
|
* @param peer (IN/OUT) Opaque name of peer process or MCA_OOB_NAME_ANY for wildcard receive. In the
|
|
|
|
* case of a wildcard receive, will be modified to return the matched peer name.
|
|
|
|
* @param msg (IN) Array of iovecs describing user buffers and lengths.
|
|
|
|
* @param count (IN) Number of elements in iovec array.
|
|
|
|
* @param tag (IN/OUT) User defined tag for matching send/recv. In the case of a wildcard receive, will
|
|
|
|
* be modified to return the matched tag. May be optionally by NULL to specify a
|
|
|
|
* wildcard receive with no return value.
|
|
|
|
* @param flags (IN) May be MCA_OOB_PEEK to return up to the number of bytes provided in the
|
|
|
|
* iovec array without removing the message from the queue.
|
|
|
|
* @return OMPI error code (<0) on error or number of bytes actually received.
|
2004-08-05 03:42:51 +04:00
|
|
|
*
|
|
|
|
* The OOB recv call is similar to unix recv/readv in that it requires the caller to manage
|
|
|
|
* memory associated w/ the message. The routine accepts an array of iovecs (<i>msg</i>); however,
|
|
|
|
* the caller must determine the appropriate number of elements (<i>count</i>) and allocate the
|
|
|
|
* buffer space for each entry.
|
|
|
|
*
|
|
|
|
* The <i>tag</i> parameter is provided to facilitate this. The user may define tags based on message
|
|
|
|
* type to determine the message layout and size, as the mca_oob_recv call will block until a message
|
|
|
|
* with the matching tag is received.
|
|
|
|
*
|
|
|
|
* Alternately, the <i>flags</i> parameter may be used to peek (MCA_OOB_PEEK) a portion of the message
|
|
|
|
* (e.g. a standard message header) or determine the overall message size (MCA_OOB_TRUNC|MCA_OOB_PEEK)
|
|
|
|
* without removing the message from the queue.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_recv(
|
|
|
|
ompi_process_name_t* peer,
|
2004-08-13 02:41:42 +04:00
|
|
|
struct iovec *msg,
|
2004-08-05 03:42:51 +04:00
|
|
|
int count,
|
2004-08-13 02:41:42 +04:00
|
|
|
int* tag,
|
2004-08-05 03:42:51 +04:00
|
|
|
int flags);
|
|
|
|
|
2004-08-12 01:07:16 +04:00
|
|
|
/**
|
|
|
|
* Similiar to unix read(2)
|
|
|
|
*
|
|
|
|
* @param peer (IN) Opaque name of peer process or MCA_OOB_NAME_ANY for wildcard receive.
|
2004-08-13 02:41:42 +04:00
|
|
|
* @param buf (OUT) Array of iovecs describing user buffers and lengths.
|
|
|
|
* @param tag (IN/OUT) User defined tag for matching send/recv.
|
2004-08-12 01:07:16 +04:00
|
|
|
* @return OMPI error code (<0) on error or number of bytes actually received.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* This version of oob_recv is as above except it does NOT take a iovec list
|
|
|
|
* but instead hands back a ompi_buffer_t buffer with the message in it.
|
|
|
|
* The user is responsible for freeing this buffer with ompi_buffer_free()
|
|
|
|
* when finished.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_recv_packed (
|
|
|
|
ompi_process_name_t* peer,
|
|
|
|
ompi_buffer_t *buf,
|
2004-08-13 02:41:42 +04:00
|
|
|
int* tag);
|
2004-08-12 01:07:16 +04:00
|
|
|
|
2004-08-05 03:42:51 +04:00
|
|
|
/*
|
|
|
|
* Non-blocking versions of send/recv.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Callback function on send/recv completion.
|
|
|
|
*
|
|
|
|
* @param status (IN) Completion status - equivalent to the return value from blocking send/recv.
|
|
|
|
* @param peer (IN) Opaque name of peer process.
|
|
|
|
* @param msg (IN) Array of iovecs describing user buffers and lengths.
|
|
|
|
* @param count (IN) Number of elements in iovec array.
|
|
|
|
* @param tag (IN) User defined tag for matching send/recv.
|
|
|
|
* @param cbdata (IN) User data.
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef void (*mca_oob_callback_fn_t)(
|
|
|
|
int status,
|
2004-08-13 02:41:42 +04:00
|
|
|
ompi_process_name_t* peer,
|
|
|
|
struct iovec* msg,
|
2004-08-05 03:42:51 +04:00
|
|
|
int count,
|
2004-08-18 19:51:40 +04:00
|
|
|
int tag,
|
2004-08-13 00:30:03 +04:00
|
|
|
void* cbdata);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Callback function on send/recv completion for buffer PACKED message only.
|
|
|
|
* i.e. only mca_oob_send_packed_nb and mca_oob_recv_packed_nb USE this.
|
|
|
|
*
|
|
|
|
* @param status (IN) Completion status - equivalent to the return value from blocking send/recv.
|
|
|
|
* @param peer (IN) Opaque name of peer process.
|
|
|
|
* @param buffer (IN) For sends, this is a pointer to a prepacked buffer
|
|
|
|
For recvs, OOB creates and returns a buffer
|
|
|
|
* @param tag (IN) User defined tag for matching send/recv.
|
|
|
|
* @param cbdata (IN) User data.
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef void (*mca_oob_callback_packed_fn_t)(
|
|
|
|
int status,
|
2004-08-13 02:41:42 +04:00
|
|
|
ompi_process_name_t* peer,
|
2004-08-18 19:51:40 +04:00
|
|
|
ompi_buffer_t buffer,
|
|
|
|
int tag,
|
2004-08-05 03:42:51 +04:00
|
|
|
void* cbdata);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Non-blocking version of mca_oob_send().
|
|
|
|
*
|
|
|
|
* @param peer (IN) Opaque name of peer process.
|
|
|
|
* @param msg (IN) Array of iovecs describing user buffers and lengths.
|
|
|
|
* @param count (IN) Number of elements in iovec array.
|
|
|
|
* @param tag (IN) User defined tag for matching send/recv.
|
|
|
|
* @param flags (IN) Currently unused.
|
|
|
|
* @param cbfunc (IN) Callback function on send completion.
|
|
|
|
* @param cbdata (IN) User data that is passed to callback function.
|
|
|
|
* @return OMPI error code (<0) on error number of bytes actually sent.
|
|
|
|
*
|
|
|
|
* The user supplied callback function is called when the send completes. Note that
|
|
|
|
* the callback may occur before the call to mca_oob_send returns to the caller,
|
|
|
|
* if the send completes during the call.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_send_nb(
|
2004-08-13 02:41:42 +04:00
|
|
|
ompi_process_name_t* peer,
|
|
|
|
struct iovec* msg,
|
2004-08-05 03:42:51 +04:00
|
|
|
int count,
|
|
|
|
int tag,
|
|
|
|
int flags,
|
|
|
|
mca_oob_callback_fn_t cbfunc,
|
|
|
|
void* cbdata);
|
|
|
|
|
2004-08-18 19:51:40 +04:00
|
|
|
/**
|
|
|
|
* Non-blocking version of mca_oob_send_packed().
|
|
|
|
*
|
|
|
|
* @param peer (IN) Opaque name of peer process.
|
|
|
|
* @param buffer (IN) Opaque buffer handle.
|
|
|
|
* @param tag (IN) User defined tag for matching send/recv.
|
|
|
|
* @param flags (IN) Currently unused.
|
|
|
|
* @param cbfunc (IN) Callback function on send completion.
|
|
|
|
* @param cbdata (IN) User data that is passed to callback function.
|
|
|
|
* @return OMPI error code (<0) on error number of bytes actually sent.
|
|
|
|
*
|
|
|
|
* The user supplied callback function is called when the send completes. Note that
|
|
|
|
* the callback may occur before the call to mca_oob_send returns to the caller,
|
|
|
|
* if the send completes during the call.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_send_packed_nb(
|
|
|
|
ompi_process_name_t* peer,
|
|
|
|
ompi_buffer_t buffer,
|
|
|
|
int tag,
|
|
|
|
int flags,
|
|
|
|
mca_oob_callback_packed_fn_t cbfunc,
|
|
|
|
void* cbdata);
|
|
|
|
|
2004-08-05 03:42:51 +04:00
|
|
|
/**
|
|
|
|
* Non-blocking version of mca_oob_recv().
|
|
|
|
*
|
|
|
|
* @param peer (IN) Opaque name of peer process or MCA_OOB_NAME_ANY for wildcard receive.
|
|
|
|
* @param msg (IN) Array of iovecs describing user buffers and lengths.
|
|
|
|
* @param count (IN) Number of elements in iovec array.
|
|
|
|
* @param tag (IN) User defined tag for matching send/recv.
|
|
|
|
* @param flags (IN) May be MCA_OOB_PEEK to return up to size bytes of msg w/out removing it from the queue,
|
|
|
|
* @param cbfunc (IN) Callback function on recv completion.
|
|
|
|
* @param cbdata (IN) User data that is passed to callback function.
|
|
|
|
* @return OMPI error code (<0) on error or number of bytes actually received.
|
|
|
|
*
|
|
|
|
* The user supplied callback function is called asynchronously when a message is received
|
|
|
|
* that matches the call parameters.
|
|
|
|
*/
|
|
|
|
|
|
|
|
int mca_oob_recv_nb(
|
|
|
|
ompi_process_name_t* peer,
|
2004-08-13 02:41:42 +04:00
|
|
|
struct iovec* msg,
|
2004-08-05 03:42:51 +04:00
|
|
|
int count,
|
2004-08-18 19:51:40 +04:00
|
|
|
int tag,
|
2004-08-05 03:42:51 +04:00
|
|
|
int flags,
|
|
|
|
mca_oob_callback_fn_t cbfunc,
|
|
|
|
void* cbdata);
|
|
|
|
|
2004-06-30 00:36:34 +04:00
|
|
|
/**
|
2004-08-18 19:51:40 +04:00
|
|
|
* Non-blocking version of mca_oob_recv_packed().
|
|
|
|
*
|
|
|
|
* @param peer (IN) Opaque name of peer process or MCA_OOB_NAME_ANY for wildcard receive.
|
|
|
|
* @param buffer (IN) Array of iovecs describing user buffers and lengths.
|
|
|
|
* @param count (IN) Number of elements in iovec array.
|
|
|
|
* @param tag (IN) User defined tag for matching send/recv.
|
|
|
|
* @param flags (IN) May be MCA_OOB_PEEK to return up to size bytes of msg w/out removing it from the queue,
|
|
|
|
* @param cbfunc (IN) Callback function on recv completion.
|
|
|
|
* @param cbdata (IN) User data that is passed to callback function.
|
|
|
|
* @return OMPI error code (<0) on error or number of bytes actually received.
|
|
|
|
*
|
|
|
|
* The user supplied callback function is called asynchronously when a message is received
|
|
|
|
* that matches the call parameters.
|
|
|
|
*/
|
2004-06-30 00:36:34 +04:00
|
|
|
|
2004-08-18 19:51:40 +04:00
|
|
|
int mca_oob_recv_packed_nb(
|
|
|
|
ompi_process_name_t* peer,
|
|
|
|
int tag,
|
|
|
|
int flags,
|
|
|
|
mca_oob_callback_packed_fn_t cbfunc,
|
|
|
|
void* cbdata);
|
2004-02-01 00:43:26 +03:00
|
|
|
|
|
|
|
#if defined(c_plusplus) || defined(__cplusplus)
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|
2004-08-05 03:42:51 +04:00
|
|
|
|