30 struct dedos_msg *msg = malloc(
sizeof(*msg));
32 log_error(
"Error allocating dedos_msg for thread_msg");
37 msg->
data = thread_msg;
40 log_error(
"Error enqueueing message on thread message queue");
43 log(LOG_THREAD_MESSAGES,
"Enqueued thread message %p on queue %p",
54 log_error(
"Attempted to dequeue non-thread msg from queue");
59 log(LOG_THREAD_MESSAGES,
"Dequeued thread message %p from queue %p",
68 struct thread_msg *msg = calloc(1,
sizeof(*msg));
70 log_error(
"Error allocating thread message");
76 log(LOG_THREAD_MESSAGES,
"Constructed thread message %p of size %d",
82 log(LOG_THREAD_MESSAGES,
"Freeing thread message %p",
88 unsigned int target_id,
93 log_error(
"Error allocating send_to_runtime_thread_msg");
104 if (thread_msg == NULL) {
105 log_error(
"Error creating thread message for send-to-runtime message");
Messages to be delivered to dedos_threads.
thread_msg_type
All messages that can be received by output thread or workers.
For delivery to the output monitor thread, a message to be sent to a peer runtime.
struct dedos_msg * dequeue_msg(struct msg_queue *q)
Dequeues the first available message from q.
Container for linked list message queue.
Logging of status messages to the terminal.
int enqueue_thread_msg(struct thread_msg *thread_msg, struct msg_queue *queue)
Enqueues a dedos_msg with a thread_msg as the payload to the appropriate queue.
void destroy_thread_msg(struct thread_msg *msg)
Frees a thread message.
enum thread_msg_type type
struct thread_msg * dequeue_thread_msg(struct msg_queue *queue)
Dequeues a thread_msg from the message queue.
A linked-list entry containing a message.
enum dedos_msg_type type
Target of delivery: runtime, thread, or MSU.
struct thread_msg * construct_thread_msg(enum thread_msg_type type, ssize_t data_size, void *data)
Allocates and initializes a thread message with the provided options.
#define log_error(fmt,...)
A message to be delivered to a dedos_thread.
Paylaod type: output of serialize_msu_msg.
int enqueue_msg(struct msg_queue *q, struct dedos_msg *msg)
Enqueues a message to be delivered as soon as possible.
struct inter_runtime_msg_hdr hdr
unsigned int target
MSU ID or thread ID depending on message type.
struct thread_msg * init_send_thread_msg(unsigned int runtime_id, unsigned int target_id, size_t data_len, void *data)
Initializes a send_to_peer message (SEND_TO_PEER)
static int runtime_id(int runtime_fd)
#define log(level, fmt,...)
Log at a custom level.
enum inter_runtime_msg_type type
payload: send_to_runtime_msg (below)
ssize_t data_size
Size of payload.
unsigned int runtime_id
The runtime ID to which the message is delivered.