43 #define SLAB_MSG_SIZE 512 59 RESERVED_MSG_CODE = 65532,
76 #define is_control_msg(type) (type >= MIN_VALUE_CONTROL && type != RENDEZVOUS_START) 101 #define INIT_OUTGOING_MSG 8 152 #define validate_msg(msg) void communication_fini(void)
Finalize the communication subsystem.
ECS protocol: a remote LP is asked for a certain set of pages.
ECS protocol: the sender LP has been synchronized and is now blocked.
void communication_init(void)
Initialize the communication subsystem.
void dump_msg_content(msg_t *msg)
Dump the content of a message.
void pack_msg(msg_t **msg, GID_t sender, GID_t receiver, int type, simtime_t timestamp, simtime_t send_time, size_t size, void *payload)
Pack a message in a platform-level data structure.
void validate_msg(msg_t *msg)
Perform some sanity checks on a message buffer.
Core ROOT-Sim functionalities.
unsigned int max_size
Total space in outgoing_msgs.
void msg_release(msg_t *msg)
Release a message buffer.
_control_msgs
Simulation Platform Control Messages.
Master notifies the new GVT.
Anything after this value is considered as an impossible message.
void insert_outgoing_msg(msg_t *msg)
Place a message in the temporary LP outgoing buffer.
Separation value between model and platform messages.
msg_hdr_t * get_msg_hdr_from_slab(struct lp_struct *)
Get a buffer to keep a message header.
One rank informs the others that the simulation has to be stopped.
ECS protocol: start synchronizing two LPs for a page fault.
double simtime_t
This defines the type with whom timestamps are represented.
void ParallelScheduleNewEvent(unsigned int, simtime_t, unsigned int, void *, unsigned int)
Schedule a new message to some LP.
void msg_to_hdr(msg_hdr_t *hdr, msg_t *msg)
Convert a message to a message header.
void msg_hdr_release(msg_hdr_t *msg)
Release a message header.
ECS protocol: the destination LP can resume its normal execution.
struct _outgoing_t outgoing_t
Per-LP buffer of newly-generated events.
ECS protocol: modified pages are sent back to the owner LP.
ECS protocol: an ECS synchronization should be rolled back.
void hdr_to_msg(msg_hdr_t *hdr, msg_t *msg)
convert a message header into a message
_mpi_tags
Internal MPI tags.
unsigned int size
How many events is this currently keeping.
msg_t * get_msg_from_slab(struct lp_struct *)
Get a buffer to keep a message.
Message envelope definition. This is used to handle the output queue and stores information needed to...
ECS protocol: the sender LP is giving a lease on a set of pages.
msg_t ** outgoing_msgs
Resizable array of message pointers.
simtime_t * min_in_transit
Smallest timestamp of events kept here.
Per-LP buffer of newly-generated events.
void send_antimessages(struct lp_struct *, simtime_t)
Send all antimessages for a certain LP.
void send_outgoing_msgs(struct lp_struct *)
Send all pending outgoing messages.
void Send(msg_t *msg)
Send a message.