1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 */ 9 10 #ifndef __MQUEUE_H__ 11 #define __MQUEUE_H__ 12 13 #include <rtthread.h> 14 #include <sys/signal.h> 15 16 #ifdef RT_USING_DFS_MQUEUE 17 #include "dfs_mqueue.h" 18 #endif 19 20 typedef int mqd_t; 21 22 struct mq_attr 23 { 24 long mq_flags; /* Message queue flags. */ 25 long mq_maxmsg; /* Maximum number of messages. */ 26 long mq_msgsize; /* Maximum message size. */ 27 long mq_curmsgs; /* Number of messages currently queued. */ 28 }; 29 30 int mq_close(mqd_t mqdes); 31 int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); 32 int mq_notify(mqd_t mqdes, const struct sigevent *notification); 33 mqd_t mq_open(const char *name, int oflag, ...); 34 ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); 35 int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); 36 int mq_setattr(mqd_t mqdes, 37 const struct mq_attr *mqstat, 38 struct mq_attr *omqstat); 39 ssize_t mq_timedreceive(mqd_t mqdes, 40 char *msg_ptr, 41 size_t msg_len, 42 unsigned *msg_prio, 43 const struct timespec *abs_timeout); 44 int mq_timedsend(mqd_t mqdes, 45 const char *msg_ptr, 46 size_t msg_len, 47 unsigned msg_prio, 48 const struct timespec *abs_timeout); 49 50 int mq_unlink(const char *name); 51 52 #endif 53