Message Queue API

API Reference

Header File

Source: include/msgq.h

#include <msgq.h>

Functions

int msgq_create(unsigned int *qhandle, char *name, int ele_size)

Create Task Independent message queue

Parameters:
  • qhandle – [out] pointer to store handle to queue

  • name – [in] Queue name, for debugging only (cannot be null)

  • ele_size – [in] Size of data pushed to queue

Returns:

0 on success, negative value on error

int msgq_push(unsigned int qhandle, void *data)

Push data to queue

Parameters:
  • qhandle – [in] Queue handle

  • data – [in] Pointer to data. Size of data is fixed when creating message queue see msgq_create

Returns:

int msgq_try_pop(unsigned int qhandle, void *data)

Try to get data from queue. This is a non blocking call.

Parameters:
  • qhandle – [in] Queue handle

  • data – [out] Pointer to buffer to store data

Returns:

0 on success, negative value on error

int msgq_pop(unsigned int qhandle, void *data, int timeout)

Get data from queue. This is a blocking call, Task will be suspended if no data is available in queue. If no timeout is specified task will block until any data is received in queue

Parameters:
  • qhandle – [in] Queue handle

  • data – [out] Pointer to buffer to store data

  • timeout – [in] Timeout value in milliseconds, If 0 task will suspend until new data is received.

Returns:

0 on success, negative value on error

int msgq_empty(unsigned int qhandle)

Check message queue empty or not

Parameters:

qhandle – [in] Queue handle

Returns:

1 if empty, 0 if not empty, negative value on error

int msgq_delete(unsigned int qhandle)

Delete message queue

Parameters:

qhandle – [in] Queue handle

Returns:

0 on success, negative value on error