gmerlin
Typedefs | Functions
Message queues

Thread save message queues. More...

Typedefs

typedef struct bg_msg_queue_s bg_msg_queue_t
 Opaque message queue type. You don't want to know what's inside. More...
 

Functions

bg_msg_queue_tbg_msg_queue_create ()
 Create a message queue. More...
 
void bg_msg_queue_destroy (bg_msg_queue_t *mq)
 Destroy a message queue. More...
 
bg_msg_tbg_msg_queue_lock_read (bg_msg_queue_t *mq)
 Lock a message queue for reading. More...
 
bg_msg_tbg_msg_queue_try_lock_read (bg_msg_queue_t *mq)
 Try to lock a message queue for reading. More...
 
void bg_msg_queue_unlock_read (bg_msg_queue_t *mq)
 Unlock a message queue for reading. More...
 
bg_msg_tbg_msg_queue_lock_write (bg_msg_queue_t *mq)
 Lock a message queue for writing. More...
 
void bg_msg_queue_unlock_write (bg_msg_queue_t *mq)
 Unlock a message queue for writing. More...
 
int bg_msg_queue_peek (bg_msg_queue_t *mq, uint32_t *id)
 Check, if there is a message for readinbg available and get the ID. More...
 

Detailed Description

Thread save message queues.

Typedef Documentation

typedef struct bg_msg_queue_s bg_msg_queue_t

Opaque message queue type. You don't want to know what's inside.

Function Documentation

bg_msg_queue_t* bg_msg_queue_create ( )

Create a message queue.

Returns
A newly allocated message queue
void bg_msg_queue_destroy ( bg_msg_queue_t mq)

Destroy a message queue.

Parameters
mqA message queue
bg_msg_t* bg_msg_queue_lock_read ( bg_msg_queue_t mq)

Lock a message queue for reading.

Parameters
mqA message queue
Returns
A new message or NULL

This function blocks until a message arrives and returns the message. Use this function with caution to avoid deadlocks.

When you are done with the message, call bg_msg_queue_unlock_read. The message is owned by the queue and must not be freed.

bg_msg_t* bg_msg_queue_try_lock_read ( bg_msg_queue_t mq)

Try to lock a message queue for reading.

Parameters
mqA message queue
Returns
A new message or NULL

This function immediately returns NULL if there is no message for reading. When you are done with the message, call bg_msg_queue_unlock_read. The message is owned by the queue and must not be freed.

void bg_msg_queue_unlock_read ( bg_msg_queue_t mq)

Unlock a message queue for reading.

Parameters
mqA message queue

Call this to signal, that you are done with a message.

bg_msg_t* bg_msg_queue_lock_write ( bg_msg_queue_t mq)

Lock a message queue for writing.

Parameters
mqA message queue
Returns
An empty message, where you can place your information.

When you are done setting the ID and arguments, call bg_msg_queue_unlock_write.

void bg_msg_queue_unlock_write ( bg_msg_queue_t mq)

Unlock a message queue for writing.

Parameters
mqA message queue

Call this to signal, that you are done with a message.

int bg_msg_queue_peek ( bg_msg_queue_t mq,
uint32_t *  id 
)

Check, if there is a message for readinbg available and get the ID.

Parameters
mqA message queue
idMight return the ID
Returns
1 if there is a message (and id is valid), 0 else