26 #ifndef DEDOS_THREADS_H_
27 #define DEDOS_THREADS_H_
32 #include <semaphore.h>
89 #endif //DEDOS_THREADS_H_
Container for linked list message queue.
A linked-list entry containing a message.
enum dedos_msg_type type
Target of delivery: runtime, thread, or MSU.
int schedule_msg(struct msg_queue *q, struct dedos_msg *msg, struct timespec *interval)
Schedules a message to be delivered once interval time has passed.
int init_msg_queue(struct msg_queue *q, sem_t *sem)
Initilializes a mesasge queue to have no messages in it, and sets up the mutex and semaphore...
sem_t * sem
Post to this semaphore on each new enqueue.
struct dedos_msg * tail
Last entry in the queue.
struct dedos_msg * head
First entry in the queue.
struct timespec delivery_time
Message is ignored until this time (in CLOCK_MONOTONIC_COARSE) has passed.
int enqueue_msg(struct msg_queue *q, struct dedos_msg *msg)
Enqueues a message to be delivered as soon as possible.
uint32_t num_msgs
Number of messages currently in the queue.
dedos_msg_type
Messages can either be for delivery to runtime, thread, or MSU.
struct dedos_msg * next
The next message in the list, or NULL if N/A.
bool shared
Whether the queue needs to be locked (always true at the moment)
struct dedos_msg * dequeue_msg(struct msg_queue *q)
Dequeues the first available message from q.
pthread_mutex_t mutex
Mutex if the queue is shared.
ssize_t data_size
Size of payload.