My Project
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
Classes | Enumerations | Functions
message_queue.h File Reference

Structures and functions for enqueueing and dequeuing general-purpose messages from a queue. More...

#include <stdbool.h>
#include <inttypes.h>
#include <unistd.h>
#include <pthread.h>
#include <semaphore.h>

Go to the source code of this file.

Classes

struct  dedos_msg
 A linked-list entry containing a message. More...
 
struct  msg_queue
 Container for linked list message queue. More...
 

Enumerations

enum  dedos_msg_type { RUNTIME_MSG, THREAD_MSG, MSU_MSG }
 Messages can either be for delivery to runtime, thread, or MSU. More...
 

Functions

struct dedos_msgdequeue_msg (struct msg_queue *q)
 Dequeues the first available message from q. More...
 
int enqueue_msg (struct msg_queue *q, struct dedos_msg *msg)
 Enqueues a message to be delivered as soon as possible. More...
 
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. More...
 
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. More...
 

Detailed Description

Structures and functions for enqueueing and dequeuing general-purpose messages from a queue.

Definition in file message_queue.h.

Enumeration Type Documentation

Messages can either be for delivery to runtime, thread, or MSU.

Enumerator
RUNTIME_MSG 
THREAD_MSG 
MSU_MSG 

Definition at line 35 of file message_queue.h.

Function Documentation

struct dedos_msg* dequeue_msg ( struct msg_queue q)

Dequeues the first available message from q.

If there are no messages, or no messages with a suitable delivery time, returns NULL.

Returns
dedos_msg dequeued, or NULL

Definition at line 87 of file message_queue.c.

int enqueue_msg ( struct msg_queue q,
struct dedos_msg msg 
)

Enqueues a message to be delivered as soon as possible.

Returns
0 on success, -1 on error

Definition at line 34 of file message_queue.c.

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.

Returns
0 on success, -1 on error

Definition at line 153 of file message_queue.c.

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.

Returns
0 on success, -1 on error

Definition at line 38 of file message_queue.c.