Amazon FreeRTOS: POSIX
返回主页↑
mqueue.h 文件引用

消息队列。 更多……

转到此文件的源代码。

数据结构体

struct  mq_attr
 消息队列属性。 更多……
 

Typedef

typedef void * mqd_t
 消息队列描述符。
 

函数

int mq_close (mqd_t mqdes)
 关闭消息队列。 更多……
 
int mq_getattr (mqd_t mqdes, struct mq_attr *mqstat)
 获取消息队列属性。 更多……
 
mqd_t mq_open (const char *name, int oflag, mode_t mode, struct mq_attr *attr)
 打开消息队列。 更多……
 
ssize_t mq_receive (mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio)
 从消息队列接收消息。 更多……
 
int mq_send (mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio)
 向消息队列发送消息。 更多……
 
ssize_t mq_timedreceive (mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abstime)
 从超时的消息队列接收消息。 更多……
 
int mq_timedsend (mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abstime)
 将消息发送到超时的消息队列。 更多……
 
int mq_unlink (const char *name)
 删除消息队列。 更多……
 

详细描述

函数文档

◆ mq_close ()

int mq_close ( mqd_t   mqdes

关闭消息队列。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_close.html

返回值
0———成功完成后
-1——发生错误。已设置 errno。
副作用:可能的 errno 值

EBADF - mqdes 参数不是有效的消息队列描述符。

◆ mq_getattr ()

int mq_getattr ( mqd_t   mqdes,
struct mq_attr mqstat ‘’

获取消息队列属性。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_getattr.html

返回值
0———成功完成后
-1——发生错误。已设置 errno。
副作用:可能的 errno 值

DBADF - mqdes 参数不是有效的消息队列描述符。

◆ mq_open ()

mqd_t mq_open ( const char *  name,
int  oflag,
mode_t  mode,
struct mq_attr attr 

打开消息队列。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_open.html

注意
支持的名称模式:名称中始终需要前导<斜线>字符;名称参数的最大长度(不包括空端子)可以是 NAME_MAX。FreeRTOS_POSIX_portable_default.h 中 NAME_MAX 的默认值为 64,用户可以覆写该值。
不支持模式参数。
支持的 oflag: O_RDWR、O_CREATE、O_EXCLL 和 O_NONBLOCK。
返回值
消息队列描述符–成功完成后
(mqd_t)- 1 –发生错误。还设置了 errno。
副作用:可能的 errno 值

EINVAL - 名称参数无效(未遵循名称模式),或者,如果在 oflag 中指定了 O_CREAT,且 attr 参数不为 NULL,并且 mq_maxmsg 或 mq_msgsize 等于或小于零,或者未设置 O_CREAT 或 O_EXCL,并且具有相同名称的队列已取消链接,但待删除。
EEXIST - 已设置 O_CREATE 和 O_EXLE,并且命名的消息队列已存在。
ENOSPC - 没有足够的空间来创建新的消息队列。
ENOENT - 未设置 O_CREATE ,并且命名的消息队列不存在。

◆ mq_receive ()

ssize_t mq_receive ( mqd_t   mqdes,
char *  msg_ptr,
size_t   msg_len,
unsigned int *  msg_prio 

从消息队列接收消息。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_receive.html

注意事项
不支持 msg_prio 参数。未检查消息是否损坏。
返回值
所选消息的长度(以字节为单位) ———成功完成后。消息已从队列中删除
-1——发生错误。已设置 errno。
副作用:可能的 errno 值

EBADF - mqdes 参数不是打开以供读取的有效消息队列描述符。
EMSGSIZE -指定的消息缓冲区大小 msg_len 小于消息队列的消息大小属性。
ETIMEDOUT -打开消息队列时未设置 O_NONBLOCK 标志,但在指定的超时到期之前没有消息到达队列。
EAGAIN -在与 mqdes 关联的消息描述中设置了 O_NONBLOCK ,并且指定的消息队列为空。

◆ mq_send ()

int mq_send ( mqd_t  mqdes,
const char *  msg_ptr,
size_t  msg_len,
unsigned  msg_prio 

向消息队列发送消息。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_send.html

注意事项
不支持 msg_prio 参数。
返回值
0——成功完成后。
-1——发生错误。已设置 errno。
副作用:可能的 errno 值

EBADF - mqdes 参数不是打开以供读取的有效消息队列描述符。
EMSGSIZE -指定的消息长度 msg_len 超出了消息队列的消息大小属性,或者用于发送消息的内存不足。
ETIMEDOUT -打开消息队列时未设置 O_NONBLOCK 标志,但在将消息添加到队列之前超时已过期。
EAGAIN - 在与 mqdes 关联的消息队列描述中设置了 O_NONBLOCK 标志,并且指定的消息队列已满。

◆ mq_timedreceive ()

ssize_t mq_timedreceive ( mqd_t   mqdes,
char *  msg_ptr,
size_t  msg_len,
unsigned *  msg_prio,
const struct timespec abstime 

从消息队列接收超时消息。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_timedreceive.html

注意事项
不支持 msg_prio 参数。未检查消息是否损坏。
返回值
所选消息的长度(以字节为单位) ———成功完成后。消息已从队列中删除
-1——发生错误。已设置 errno。
副作用:可能的 errno 值

EBADF - mqdes 参数不是打开以供读取的有效消息队列描述符。
EMSGSIZE - 指定的消息缓冲区大小 msg_len 小于消息队列的消息大小属性。
EINVAL - 进程或线程会受阻,并且 abstime 参数指定的纳秒字段值小于零或大于或等于 10 亿。
ETIMEDOUT -打开消息队列时未设置 O_NONBLOCK 标志,但在指定的超时到期之前没有消息到达队列。
EAGAIN -在与 mqdes 关联的消息描述中设置了 O_NONBLOCK ,并且指定的消息队列为空。

◆ mq_timedsend ()

int mq_timedsend ( mqd_t  mqdes,
const char *  msg_ptr,
size_t  msg_len,
unsigned  msg_prio,
const struct timespec abstime 

将消息发送到超时的消息队列。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_timedsend.html

注意事项
不支持 msg_prio 参数。
返回值
0——成功完成后。
-1——发生错误。已设置 errno。
副作用:可能的 errno 值

EBADF - mqdes 参数不是打开以供读取的有效消息队列描述符。
EMSGSIZE - 指定的消息长度 msg_len 超出了消息队列的消息大小属性,或者用于发送消息的内存不足。
EINVAL - 进程或线程会受阻,并且 abstime 参数指定的纳秒字段值小于零或大于或等于 10 亿。
ETIMEDOUT - 打开消息队列时未设置 O_NONBLOCK 标志,但在将消息添加到队列之前超时已过期。
EAGAIN - 在与 mqdes 关联的消息队列描述中设置了 O_NONBLOCK 标志,并且指定的消息队列已满。

◆ mq_unlink ()

int mq_unlink ( const char *  name

删除消息队列。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_unlink.html

返回值
0——成功完成后。
-1——发生错误。已设置 errno。
副作用:可能的 errno 值

EINVAL - 名称参数无效。请参阅 mq_open() 中对名称参数的要求。
ENOENT - 命名的消息队列不存在。