73 size += list_sizeof(outgoing_queues[i].queue);
93 oq = outgoing_queues + i;
112 if (
unlikely(pending_out_msgs > 0)) {
117 rsfree(outgoing_queues);
172 list_insert_tail(oq->queue, out_msg);
204 list_delete_by_content(oq->queue, msg);
static int n_queues
The number of outgoing queues which are managed by the submodule.
int prune_outgoing_queues(void)
Prune all outgoing queues.
bool is_request_completed(MPI_Request *req)
check if an MPI request has been completed
The structure representing a node in the outgoing_queue list.
#define spinlock_init(s)
Spinlock initialization.
static int prune_outgoing_queue(outgoing_queue *oq)
Prune an outgoing queue.
void store_outgoing_msg(outgoing_msg *out_msg, unsigned int dest_kid)
Store an outgoing message.
spinlock_t lock
A lock used to protect access to the actual queue.
static bool is_msg_delivered(outgoing_msg *msg)
Check if a message has been delivered.
void spin_lock(spinlock_t *s)
MPI_Request req
The MPI Request used to keep track of the delivery operation.
outgoing_msg * allocate_outgoing_msg(void)
Allocate a buffer for an outgoing message node.
void outgoing_window_init(void)
Outgoing queue initialization.
void msg_release(msg_t *msg)
Release a message buffer.
An outgoing queue, to keep track of pending MPI-based message delivery.
msg_t * msg
A pointer to the msg_t which MPI is delivering.
static size_t outgoing_queues_size(void)
Compute the size of all outgoing queues.
Message delivery support.
void outgoing_window_finalize(void)
Finalize the message delivery subsystem.
static outgoing_queue * outgoing_queues
unsigned int n_ker
Total number of simulation kernel instances running.
#define unlikely(exp)
Optimize the branch as likely not taken.
void spin_unlock(spinlock_t *s)