NewMadeleine

Documentation

nm_sendrecv_interface.h File Reference
#include <nm_public.h>
#include <nm_session_interface.h>
#include <nm_core_interface.h>
#include <sys/uio.h>
#include <limits.h>
#include <nm_sendrecv_private.h>
Include dependency graph for nm_sendrecv_interface.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

union  nm_sr_event_info_t
 information field for sendrecv events More...
 
struct  nm_sr_monitor_s
 a global monitor to listen to events on the full session More...
 

Macros

#define NM_SR_PRIORITY_MIN   INT_MIN
 minimum priority level More...
 
#define NM_SR_PRIORITY_MAX   INT_MAX
 maximum priority level More...
 

Functions

static void nm_sr_recv_init (nm_session_t p_session, nm_sr_request_t *p_request)
 
static void nm_sr_recv_unpack_contiguous (nm_session_t p_session, nm_sr_request_t *p_request, void *ptr, nm_len_t len)
 
static void nm_sr_recv_unpack_iov (nm_session_t p_session, nm_sr_request_t *p_request, const struct iovec *iov, int num_entry)
 
static void nm_sr_recv_unpack_data (nm_session_t p_session, nm_sr_request_t *p_request, const struct nm_data_s *p_data)
 
static int nm_sr_recv_irecv (nm_session_t p_session, nm_sr_request_t *p_request, nm_gate_t p_gate, nm_tag_t tag, nm_tag_t mask)
 
static void nm_sr_recv_match (nm_session_t p_session, nm_sr_request_t *p_request, nm_gate_t p_gate, nm_tag_t tag, nm_tag_t mask)
 match the request with given gate/tag/mask More...
 
static void nm_sr_recv_match_event (nm_session_t p_session, nm_sr_request_t *p_request, const nm_sr_event_info_t *p_event)
 match the request with event More...
 
static int nm_sr_recv_peek (nm_session_t p_session, nm_sr_request_t *p_request, const struct nm_data_s *p_data)
 peek for already received (unexpected) data More...
 
static int nm_sr_recv_peek_offset (nm_session_t p_session, nm_sr_request_t *p_request, const struct nm_data_s *p_data, nm_len_t peek_offset, nm_len_t peek_len)
 peek for already received (unexpected) data, with offset and explicit len More...
 
static void nm_sr_recv_offset (nm_session_t p_session, nm_sr_request_t *p_request, nm_len_t offset)
 set offset of data to receive; data before offset will be discarded More...
 
static int nm_sr_recv_iprobe (nm_session_t p_session, nm_sr_request_t *p_request)
 probes whether an incoming packet matched this non-posted request More...
 
static void nm_sr_recv_data_wait (nm_session_t p_session, nm_sr_request_t *p_request)
 waits for first byte of data to be available, for a request posted without data descriptor More...
 
static void nm_sr_recv_data_size_wait (nm_session_t p_session, nm_sr_request_t *p_request)
 waits for data size to be available, for a request posted without data descriptor More...
 
static int nm_sr_recv_data_test (nm_session_t p_session, nm_sr_request_t *p_request)
 checks whether data is available, for a request posted without data descriptor More...
 
static int nm_sr_recv_post (nm_session_t p_session, nm_sr_request_t *p_request)
 posts the receive request to the scheduler More...
 
static int nm_sr_issend (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, const void *data, nm_len_t len, nm_sr_request_t *p_request)
 Synchronous send. More...
 
static int nm_sr_isend (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, const void *data, nm_len_t len, nm_sr_request_t *p_request)
 Post a non blocking send request. More...
 
static int nm_sr_isend_with_ref (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, const void *data, nm_len_t len, nm_sr_request_t *p_request, void *ref)
 
static int nm_sr_rsend (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, const void *data, nm_len_t len, nm_sr_request_t *p_request)
 Post a ready send request, i.e. More...
 
static int nm_sr_isend_iov (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, const struct iovec *iov, int num_entries, nm_sr_request_t *p_request)
 Test for the completion of a non blocking send request. More...
 
static int nm_sr_isend_iov_with_ref (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, const struct iovec *iov, int num_entries, nm_sr_request_t *p_request, void *ref)
 
static int nm_sr_isend_data (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, struct nm_data_s *p_data, nm_sr_request_t *p_request)
 
int nm_sr_stest (nm_session_t p_session, nm_sr_request_t *p_request)
 Test for the completion of a non blocking send request. More...
 
int nm_sr_progress (nm_session_t p_session)
 Calls the scheduler. More...
 
static int nm_sr_swait (nm_session_t p_session, nm_sr_request_t *p_request)
 Wait for the completion of a non blocking send request. More...
 
int nm_sr_scancel (nm_session_t p_session, nm_sr_request_t *p_request)
 Cancel a emission request. More...
 
static int nm_sr_irecv (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, void *data, nm_len_t len, nm_sr_request_t *p_request)
 Post a non blocking receive request. More...
 
static int nm_sr_irecv_with_ref (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, void *data, nm_len_t len, nm_sr_request_t *p_request, void *ref)
 Test for the completion of a non blocking receive request. More...
 
static int nm_sr_irecv_iov (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, struct iovec *iov, int num_entries, nm_sr_request_t *p_request)
 
static int nm_sr_irecv_iov_with_ref (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, struct iovec *iov, int num_entries, nm_sr_request_t *p_request, void *ref)
 
static int nm_sr_irecv_data (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, struct nm_data_s *p_data, nm_sr_request_t *p_request)
 
int nm_sr_rtest (nm_session_t p_session, nm_sr_request_t *p_request)
 Test for the completion of a non blocking receive request. More...
 
static int nm_sr_rwait (nm_session_t p_session, nm_sr_request_t *p_request)
 Wait for the completion of a non blocking receive request. More...
 
static int nm_sr_rwait_data (nm_session_t p_session, nm_sr_request_t *p_request)
 Wait for data to be available from a non blocking receive request. More...
 
int nm_sr_rcancel (nm_session_t p_session, nm_sr_request_t *p_request)
 Cancel a reception request. More...
 
int nm_sr_recv_source (nm_session_t p_session, nm_sr_request_t *p_request, nm_gate_t *p_gate)
 Retrieve the pkt source of a complete any source receive request. More...
 
int nm_sr_probe (nm_session_t p_session, nm_gate_t p_gate, nm_gate_t *p_out_gate, nm_tag_t tag, nm_tag_t tag_mask, nm_tag_t *p_out_tag, nm_len_t *p_out_len)
 Unblockingly check if a packet is available for extraction on the (gate,tag) pair . More...
 
int nm_sr_monitor (nm_session_t p_session, nm_sr_event_t mask, nm_sr_event_notifier_t notifier)
 monitors sendrecv events globally More...
 
int nm_sr_session_monitor_set (nm_session_t p_session, const struct nm_sr_monitor_s *p_monitor)
 set a monitor for events on the session More...
 
int nm_sr_session_monitor_remove (nm_session_t p_session, const struct nm_sr_monitor_s *p_monitor)
 remove the event monitor from the session More...
 
int nm_sr_recv_success (nm_session_t p_session, nm_sr_request_t **out_req)
 Poll for any completed recv request (any source, any tag). More...
 
int nm_sr_send_success (nm_session_t p_session, nm_sr_request_t **out_req)
 Poll for any completed send request. More...
 
static int nm_sr_send (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, const void *data, nm_len_t len)
 blocking send More...
 
static int nm_sr_recv (nm_session_t p_session, nm_gate_t p_gate, nm_tag_t tag, void *data, nm_len_t len)
 blocking recv More...
 
enum  nm_sr_event_t {
  NM_SR_EVENT_RECV_UNEXPECTED , NM_SR_EVENT_RECV_COMPLETED , NM_SR_EVENT_SEND_COMPLETED , NM_SR_EVENT_RECV_DATA ,
  NM_SR_EVENT_RECV_CANCELLED , NM_SR_EVENT_FINALIZED
}
 events for nm_sr_monitor() More...
 
typedef struct nm_sr_request_s nm_sr_request_t
 a sendrecv request object. More...
 
typedef void(* nm_sr_event_notifier_t) (nm_sr_event_t event, const nm_sr_event_info_t *event_info, void *ref)
 notification function for sendrecv events. More...
 
int nm_sr_request_monitor (nm_session_t p_session, nm_sr_request_t *p_request, nm_sr_event_t mask, nm_sr_event_notifier_t notifier)
 Set a notification function called upon request completion. More...
 
int nm_sr_request_set_completion_queue (nm_session_t p_session, nm_sr_request_t *p_request)
 Ask to enqueue the request in the completion queue upon completion. More...
 
int nm_sr_request_unset_completion_queue (nm_session_t p_session, nm_sr_request_t *p_request)
 Ask to not enqueue the request in the completion queue upon completion. More...
 
static int nm_sr_request_isnull (nm_sr_request_t *p_request)
 tests whether a request is NULL More...
 
static int nm_sr_request_set_ref (nm_sr_request_t *p_request, void *ref)
 Add a user reference to a request. More...
 
static void * nm_sr_request_get_ref (nm_sr_request_t *p_request)
 Retrieve the 'ref' from a sendrecv request. More...
 
static nm_tag_t nm_sr_request_get_tag (nm_sr_request_t *p_request)
 Retrieve the tag from a sendrecv request. More...
 
static int nm_sr_request_get_size (nm_sr_request_t *request, nm_len_t *size)
 Returns the actual received or sent size of the message with the specified request. More...
 
static int nm_sr_request_get_expected_size (nm_sr_request_t *request, nm_len_t *size)
 Returns the expected size (to be received or to be sent) of the message with the specified request. More...
 
static nm_gate_t nm_sr_request_get_gate (nm_sr_request_t *p_request)
 
static nm_session_t nm_sr_request_get_session (nm_sr_request_t *p_request)
 Returns the session this request belongs to. More...
 
int nm_sr_request_wait (nm_sr_request_t *p_request)
 Wait for request completion (or cancelation) More...
 
static void nm_sr_request_wait_all (nm_sr_request_t **p_requests, int n)
 wait for completion of an array of requests More...
 
static int nm_sr_request_test (nm_sr_request_t *p_request, nm_status_t status)
 Tests whether the given status bits are set in request. More...
 
static int nm_sr_request_get_error (nm_sr_request_t *p_request)
 Get the error status of the request. More...
 
int nm_sr_flush (struct nm_session_s *p_session)
 Flush all pending requests (force submission to the core) and all pending events. More...
 
static void nm_sr_send_init (nm_session_t p_session, nm_sr_request_t *p_request)
 Init a send request. More...
 
static void nm_sr_send_pack_contiguous (nm_session_t p_session, nm_sr_request_t *p_request, const void *, nm_len_t len)
 Pack contiguous data into the given request. More...
 
static void nm_sr_send_pack_iov (nm_session_t p_session, nm_sr_request_t *p_request, const struct iovec *iov, int num_entries)
 Pack data described through iovec into the given request. More...
 
static void nm_sr_send_pack_data (nm_session_t p_session, nm_sr_request_t *p_request, const struct nm_data_s *p_data)
 Pack data described through an iterator into the given request. More...
 
static int nm_sr_send_isend (nm_session_t p_session, nm_sr_request_t *p_request, nm_gate_t p_gate, nm_tag_t tag)
 send a built request to given gate & tag More...
 
static int nm_sr_send_issend (nm_session_t p_session, nm_sr_request_t *p_request, nm_gate_t p_gate, nm_tag_t tag)
 send a built request in synchronous mode More...
 
static int nm_sr_send_rsend (nm_session_t p_session, nm_sr_request_t *p_request, nm_gate_t p_gate, nm_tag_t tag)
 send a built request in ready mode More...
 
static int nm_sr_send_dest (nm_session_t p_session, nm_sr_request_t *p_request, nm_gate_t p_gate, nm_tag_t tag)
 set destination to a request, but do not send it immediately More...
 
static int nm_sr_send_header (nm_session_t p_session, nm_sr_request_t *p_request, nm_len_t hlen)
 
static int nm_sr_send_submit (nm_session_t p_session, nm_sr_request_t *p_request)
 submit the request once it is built More...
 
static int nm_sr_send_submit_chunks (nm_session_t p_session, nm_sr_request_t *p_request, int n, const struct nm_chunk_s *p_chunks)
 submit partial chunks of a request. More...
 
static void nm_sr_send_set_priority (nm_session_t p_session, nm_sr_request_t *p_request, nm_prio_t priority)
 attach the given priority to the request. More...
 

Macro Definition Documentation

◆ NM_SR_PRIORITY_MAX

#define NM_SR_PRIORITY_MAX   INT_MAX

maximum priority level

Definition at line 205 of file nm_sendrecv_interface.h.

◆ NM_SR_PRIORITY_MIN

#define NM_SR_PRIORITY_MIN   INT_MIN

minimum priority level

Definition at line 202 of file nm_sendrecv_interface.h.

Function Documentation

◆ nm_sr_irecv()

static int nm_sr_irecv ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
void *  data,
nm_len_t  len,
nm_sr_request_t p_request 
)
inlinestatic

Post a non blocking receive request.

Parameters
p_sessiona pointer to a nmad session object.
p_gatea pointer to the destination gate.
tagthe message tag.
datathe data fragment pointer.
lenthe data fragment length.
p_requesta pointer to a sendrecv request to be filled.
Returns
The NM status.
Examples
nm_bench_req_monitor.c, and nm_sr_hello.c.

Definition at line 402 of file nm_sendrecv_interface.h.

References len, NM_ESUCCESS, nm_sr_recv_init(), nm_sr_recv_irecv(), nm_sr_recv_unpack_contiguous(), NM_TAG_MASK_FULL, p_gate, p_session, and tag.

Referenced by nm_sr_recv().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nm_sr_irecv_data()

static int nm_sr_irecv_data ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
struct nm_data_s p_data,
nm_sr_request_t p_request 
)
inlinestatic
Examples
nm_sr_custom_data.c.

Definition at line 456 of file nm_sendrecv_interface.h.

References nm_sr_recv_init(), nm_sr_recv_irecv(), nm_sr_recv_unpack_data(), NM_TAG_MASK_FULL, p_gate, p_session, and tag.

Referenced by nm_coll_tree_recv().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nm_sr_irecv_iov()

static int nm_sr_irecv_iov ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
struct iovec *  iov,
int  num_entries,
nm_sr_request_t p_request 
)
inlinestatic

Definition at line 435 of file nm_sendrecv_interface.h.

References nm_sr_recv_init(), nm_sr_recv_irecv(), nm_sr_recv_unpack_iov(), NM_TAG_MASK_FULL, p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_irecv_iov_with_ref()

static int nm_sr_irecv_iov_with_ref ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
struct iovec *  iov,
int  num_entries,
nm_sr_request_t p_request,
void *  ref 
)
inlinestatic

Definition at line 445 of file nm_sendrecv_interface.h.

References nm_sr_recv_init(), nm_sr_recv_irecv(), nm_sr_recv_unpack_iov(), nm_sr_request_set_ref(), NM_TAG_MASK_FULL, p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_irecv_with_ref()

static int nm_sr_irecv_with_ref ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
void *  data,
nm_len_t  len,
nm_sr_request_t p_request,
void *  ref 
)
inlinestatic

Test for the completion of a non blocking receive request.

Parameters
p_sessiona pointer to a nmad session object.
p_gatea pointer to the destination gate.
tagthe message tag.
datathe data fragment pointer.
lenthe data fragment length.
p_requesta pointer to a sendrecv request to be filled.
ref
Returns
The NM status.

Definition at line 423 of file nm_sendrecv_interface.h.

References len, nm_sr_recv_init(), nm_sr_recv_irecv(), nm_sr_recv_unpack_contiguous(), nm_sr_request_set_ref(), NM_TAG_MASK_FULL, p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_isend()

static int nm_sr_isend ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
const void *  data,
nm_len_t  len,
nm_sr_request_t p_request 
)
inlinestatic

Post a non blocking send request.

Parameters
p_sessiona pointer to a nmad session object.
p_gatea pointer to the destination gate.
tagthe message tag.
datathe data fragment pointer.
lenthe data fragment length.
p_requesta pointer to a NM request to be filled.
Returns
The NM status.
Examples
nm_bench_req_monitor.c, nm_sr_hello.c, and nm_sr_peek.c.

Definition at line 273 of file nm_sendrecv_interface.h.

References len, nm_sr_send_init(), nm_sr_send_isend(), nm_sr_send_pack_contiguous(), p_gate, p_session, and tag.

Referenced by nm_sr_send().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nm_sr_isend_data()

static int nm_sr_isend_data ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
struct nm_data_s p_data,
nm_sr_request_t p_request 
)
inlinestatic
Examples
nm_sr_custom_data.c.

Definition at line 351 of file nm_sendrecv_interface.h.

References nm_sr_send_init(), nm_sr_send_isend(), nm_sr_send_pack_data(), p_gate, p_session, and tag.

Referenced by nm_coll_tree_send().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nm_sr_isend_iov()

static int nm_sr_isend_iov ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
const struct iovec *  iov,
int  num_entries,
nm_sr_request_t p_request 
)
inlinestatic

Test for the completion of a non blocking send request.

Parameters
p_sessiona pointer to a nmad session object.
p_gatea pointer to the destination gate.
tagthe message tag.
iov
num_entries
p_requesta pointer to a sendrecv request to be filled.
Returns
The NM status.

Definition at line 327 of file nm_sendrecv_interface.h.

References nm_sr_send_init(), nm_sr_send_isend(), nm_sr_send_pack_iov(), p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_isend_iov_with_ref()

static int nm_sr_isend_iov_with_ref ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
const struct iovec *  iov,
int  num_entries,
nm_sr_request_t p_request,
void *  ref 
)
inlinestatic

Definition at line 338 of file nm_sendrecv_interface.h.

References nm_sr_request_set_ref(), nm_sr_send_init(), nm_sr_send_isend(), nm_sr_send_pack_iov(), p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_isend_with_ref()

static int nm_sr_isend_with_ref ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
const void *  data,
nm_len_t  len,
nm_sr_request_t p_request,
void *  ref 
)
inlinestatic

Definition at line 284 of file nm_sendrecv_interface.h.

References len, nm_sr_request_set_ref(), nm_sr_send_init(), nm_sr_send_isend(), nm_sr_send_pack_contiguous(), p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_issend()

static int nm_sr_issend ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
const void *  data,
nm_len_t  len,
nm_sr_request_t p_request 
)
inlinestatic

Synchronous send.

Definition at line 253 of file nm_sendrecv_interface.h.

References len, nm_sr_send_init(), nm_sr_send_issend(), nm_sr_send_pack_contiguous(), p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_monitor()

int nm_sr_monitor ( nm_session_t  p_session,
nm_sr_event_t  mask,
nm_sr_event_notifier_t  notifier 
)

monitors sendrecv events globally

◆ nm_sr_probe()

int nm_sr_probe ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_gate_t p_out_gate,
nm_tag_t  tag,
nm_tag_t  tag_mask,
nm_tag_t p_out_tag,
nm_len_t p_out_len 
)

Unblockingly check if a packet is available for extraction on the (gate,tag) pair .

Parameters
p_sessiona pointer to a nmad session object.
p_gatea pointer to the expected gate.
p_out_gatereturn value with the originating gate.
tagthe expected message tag.
tag_maska mask to be applied on tag before matching
p_out_tagreturn value with the tag
p_out_lenreturn value with the message length
Returns
The NM status.
Note
p_out_gate, p_out_tag and p_out_len may be NULL

◆ nm_sr_progress()

int nm_sr_progress ( nm_session_t  p_session)

Calls the scheduler.

Parameters
p_sessiona pointer to a nmad session object.
Returns
The NM status.

Referenced by nm_sr_recv_data_test().

Here is the caller graph for this function:

◆ nm_sr_rcancel()

int nm_sr_rcancel ( nm_session_t  p_session,
nm_sr_request_t p_request 
)

Cancel a reception request.

Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to cancel.
Returns
The NM status.

◆ nm_sr_recv()

static int nm_sr_recv ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
void *  data,
nm_len_t  len 
)
inlinestatic

blocking recv

Examples
nm_mcast_basic.c, nm_onesided_queues.c, and nm_onesided_simple.c.

Definition at line 561 of file nm_sendrecv_interface.h.

References len, NM_ESUCCESS, nm_sr_irecv(), nm_sr_rwait(), p_gate, p_session, and tag.

Referenced by nm_sync_clocks_recv().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nm_sr_recv_data_size_wait()

static void nm_sr_recv_data_size_wait ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

waits for data size to be available, for a request posted without data descriptor

◆ nm_sr_recv_data_test()

static int nm_sr_recv_data_test ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

checks whether data is available, for a request posted without data descriptor

◆ nm_sr_recv_data_wait()

static void nm_sr_recv_data_wait ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

waits for first byte of data to be available, for a request posted without data descriptor

Examples
nm_sr_peek.c.

◆ nm_sr_recv_init()

static void nm_sr_recv_init ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic
Examples
nm_sr_peek.c.

Referenced by nm_sr_irecv(), nm_sr_irecv_data(), nm_sr_irecv_iov(), nm_sr_irecv_iov_with_ref(), and nm_sr_irecv_with_ref().

Here is the caller graph for this function:

◆ nm_sr_recv_iprobe()

static int nm_sr_recv_iprobe ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

probes whether an incoming packet matched this non-posted request

◆ nm_sr_recv_irecv()

static int nm_sr_recv_irecv ( nm_session_t  p_session,
nm_sr_request_t p_request,
nm_gate_t  p_gate,
nm_tag_t  tag,
nm_tag_t  mask 
)
inlinestatic

Referenced by nm_sr_irecv(), nm_sr_irecv_data(), nm_sr_irecv_iov(), nm_sr_irecv_iov_with_ref(), and nm_sr_irecv_with_ref().

Here is the caller graph for this function:

◆ nm_sr_recv_match()

static void nm_sr_recv_match ( nm_session_t  p_session,
nm_sr_request_t p_request,
nm_gate_t  p_gate,
nm_tag_t  tag,
nm_tag_t  mask 
)
inlinestatic

match the request with given gate/tag/mask

Examples
nm_sr_peek.c.

◆ nm_sr_recv_match_event()

static void nm_sr_recv_match_event ( nm_session_t  p_session,
nm_sr_request_t p_request,
const nm_sr_event_info_t p_event 
)
inlinestatic

match the request with event

◆ nm_sr_recv_offset()

static void nm_sr_recv_offset ( nm_session_t  p_session,
nm_sr_request_t p_request,
nm_len_t  offset 
)
inlinestatic

set offset of data to receive; data before offset will be discarded

Referenced by nm_rpc_recv_header_data().

Here is the caller graph for this function:

◆ nm_sr_recv_peek()

static int nm_sr_recv_peek ( nm_session_t  p_session,
nm_sr_request_t p_request,
const struct nm_data_s p_data 
)
inlinestatic

peek for already received (unexpected) data

Examples
nm_sr_peek.c.

◆ nm_sr_recv_peek_offset()

static int nm_sr_recv_peek_offset ( nm_session_t  p_session,
nm_sr_request_t p_request,
const struct nm_data_s p_data,
nm_len_t  peek_offset,
nm_len_t  peek_len 
)
inlinestatic

peek for already received (unexpected) data, with offset and explicit len

Referenced by nm_rpc_recv_header_data().

Here is the caller graph for this function:

◆ nm_sr_recv_post()

static int nm_sr_recv_post ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

posts the receive request to the scheduler

Examples
nm_sr_peek.c.

◆ nm_sr_recv_source()

int nm_sr_recv_source ( nm_session_t  p_session,
nm_sr_request_t p_request,
nm_gate_t p_gate 
)

Retrieve the pkt source of a complete any source receive request.

Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to check.
p_gatea pointer to the destination gate.
Returns
The NM status.

◆ nm_sr_recv_success()

int nm_sr_recv_success ( nm_session_t  p_session,
nm_sr_request_t **  out_req 
)

Poll for any completed recv request (any source, any tag).

Note
call nm_sr_request_set_completion_queue() to generate such an event.

◆ nm_sr_recv_unpack_contiguous()

static void nm_sr_recv_unpack_contiguous ( nm_session_t  p_session,
nm_sr_request_t p_request,
void *  ptr,
nm_len_t  len 
)
inlinestatic
Examples
nm_sr_peek.c.

Referenced by nm_sr_irecv(), and nm_sr_irecv_with_ref().

Here is the caller graph for this function:

◆ nm_sr_recv_unpack_data()

static void nm_sr_recv_unpack_data ( nm_session_t  p_session,
nm_sr_request_t p_request,
const struct nm_data_s p_data 
)
inlinestatic

Referenced by nm_sr_irecv_data().

Here is the caller graph for this function:

◆ nm_sr_recv_unpack_iov()

static void nm_sr_recv_unpack_iov ( nm_session_t  p_session,
nm_sr_request_t p_request,
const struct iovec *  iov,
int  num_entry 
)
inlinestatic

Referenced by nm_sr_irecv_iov(), and nm_sr_irecv_iov_with_ref().

Here is the caller graph for this function:

◆ nm_sr_rsend()

static int nm_sr_rsend ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
const void *  data,
nm_len_t  len,
nm_sr_request_t p_request 
)
inlinestatic

Post a ready send request, i.e.

assume the receiver is ready thus removing the need for a rdv.

Parameters
p_sessiona pointer to a nmad session object.
p_gatea pointer to the destination gate.
tagthe message tag.
datathe data fragment pointer.
lenthe data fragment length.
p_requesta pointer to a sendrecv request to be filled.
Returns
The NM status.

Definition at line 307 of file nm_sendrecv_interface.h.

References len, nm_sr_send_init(), nm_sr_send_pack_contiguous(), nm_sr_send_rsend(), p_gate, p_session, and tag.

Here is the call graph for this function:

◆ nm_sr_rtest()

int nm_sr_rtest ( nm_session_t  p_session,
nm_sr_request_t p_request 
)

Test for the completion of a non blocking receive request.

Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to check.
Returns
The NM status.

◆ nm_sr_rwait()

static int nm_sr_rwait ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

Wait for the completion of a non blocking receive request.

Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to check.
Returns
The NM status.
Examples
nm_sr_custom_data.c, nm_sr_hello.c, and nm_sr_peek.c.

Referenced by nm_sr_recv().

Here is the caller graph for this function:

◆ nm_sr_rwait_data()

static int nm_sr_rwait_data ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

Wait for data to be available from a non blocking receive request.

Warning
the request may not be fully completed, and neither request nor data buffers may be freed at this point.
Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to check.
Returns
The NM status.

◆ nm_sr_scancel()

int nm_sr_scancel ( nm_session_t  p_session,
nm_sr_request_t p_request 
)

Cancel a emission request.

Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to cancel.
Returns
The NM status.

◆ nm_sr_send()

static int nm_sr_send ( nm_session_t  p_session,
nm_gate_t  p_gate,
nm_tag_t  tag,
const void *  data,
nm_len_t  len 
)
inlinestatic

blocking send

Examples
nm_onesided_queues.c, and nm_onesided_simple.c.

Definition at line 547 of file nm_sendrecv_interface.h.

References len, NM_ESUCCESS, nm_sr_isend(), nm_sr_swait(), p_gate, p_session, and tag.

Referenced by nm_sync_clocks_send().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nm_sr_send_success()

int nm_sr_send_success ( nm_session_t  p_session,
nm_sr_request_t **  out_req 
)

Poll for any completed send request.

Note
call nm_sr_request_set_completion_queue() to generate such an event.

◆ nm_sr_session_monitor_remove()

int nm_sr_session_monitor_remove ( nm_session_t  p_session,
const struct nm_sr_monitor_s p_monitor 
)

remove the event monitor from the session

◆ nm_sr_session_monitor_set()

int nm_sr_session_monitor_set ( nm_session_t  p_session,
const struct nm_sr_monitor_s p_monitor 
)

set a monitor for events on the session

◆ nm_sr_stest()

int nm_sr_stest ( nm_session_t  p_session,
nm_sr_request_t p_request 
)

Test for the completion of a non blocking send request.

Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to check.
Returns
The NM status.

◆ nm_sr_swait()

static int nm_sr_swait ( nm_session_t  p_session,
nm_sr_request_t p_request 
)
inlinestatic

Wait for the completion of a non blocking send request.

Parameters
p_sessiona pointer to a nmad session object.
p_requestthe request to check.
Returns
The NM status.
Examples
nm_bench_req_monitor.c, nm_sr_custom_data.c, nm_sr_hello.c, and nm_sr_peek.c.

Referenced by nm_rpc_req_wait(), and nm_sr_send().

Here is the caller graph for this function: