| /* |
| * Copyright (c) 2018 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef __MQUEUE_H__ |
| #define __MQUEUE_H__ |
| |
| #include <kernel.h> |
| #include <posix/time.h> |
| #include "sys/types.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef void *mqd_t; |
| typedef unsigned int mode_t; |
| |
| typedef struct mq_attr { |
| long mq_flags; |
| long mq_maxmsg; |
| long mq_msgsize; |
| long mq_curmsgs; /* Number of messages currently queued. */ |
| } mq_attr; |
| |
| /* FIXME: below should be defined into fcntl.h file. |
| * This is temporarily put here. |
| */ |
| |
| #ifndef _SYS_FCNTL_H_ |
| #define O_CREAT_POS 9 |
| #define O_CREAT (1 << O_CREAT_POS) |
| |
| #define O_EXCL_POS 11 |
| #define O_EXCL (1 << O_EXCL_POS) |
| |
| #define O_NONBLOCK_POS 14 |
| #define O_NONBLOCK (1 << O_NONBLOCK_POS) |
| |
| #define O_RDONLY 0 |
| #define O_WRONLY 1 |
| #define O_RDWR 2 |
| #endif /* _SYS_FCNTL_H_ */ |
| |
| mqd_t mq_open(const char *name, int oflags, ...); |
| int mq_close(mqd_t mqdes); |
| int mq_unlink(const char *name); |
| int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); |
| int 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 int msg_prio); |
| int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, |
| struct mq_attr *omqstat); |
| int mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, |
| unsigned int *msg_prio, const struct timespec *abstime); |
| int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, |
| unsigned int msg_prio, const struct timespec *abstime); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* __MQUEUE_H__ */ |