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

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

#include "message_queue.h"
#include "logging.h"
#include <time.h>

Go to the source code of this file.

Functions

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...
 
static double timediff_s (struct timespec *t1, struct timespec *t2)
 Returns the difference in time in seconds, t2 - t1. More...
 
struct dedos_msgdequeue_msg (struct msg_queue *q)
 Dequeues the first available message from q. 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...
 

Variables

static struct timespec zero = {}
 Interval 0 seconds from now. More...
 

Detailed Description

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

Definition in file message_queue.c.

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.

static double timediff_s ( struct timespec *  t1,
struct timespec *  t2 
)
static

Returns the difference in time in seconds, t2 - t1.

Definition at line 83 of file message_queue.c.

Variable Documentation

struct timespec zero = {}
static

Interval 0 seconds from now.

Definition at line 32 of file message_queue.c.