Tizen RT Libs&Environment  v1.0 D5
mqueue.h
Go to the documentation of this file.
1 /****************************************************************************
2  *
3  * Copyright 2016 Samsung Electronics All Rights Reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing,
12  * software distributed under the License is distributed on an
13  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
14  * either express or implied. See the License for the specific
15  * language governing permissions and limitations under the License.
16  *
17  ****************************************************************************/
18 /********************************************************************************
19  * include/mqueue.h
20  *
21  * Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved.
22  * Author: Gregory Nutt <gnutt@nuttx.org>
23  *
24  * Redistribution and use in source and binary forms, with or without
25  * modification, are permitted provided that the following conditions
26  * are met:
27  *
28  * 1. Redistributions of source code must retain the above copyright
29  * notice, this list of conditions and the following disclaimer.
30  * 2. Redistributions in binary form must reproduce the above copyright
31  * notice, this list of conditions and the following disclaimer in
32  * the documentation and/or other materials provided with the
33  * distribution.
34  * 3. Neither the name NuttX nor the names of its contributors may be
35  * used to endorse or promote products derived from this software
36  * without specific prior written permission.
37  *
38  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
39  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
40  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
41  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
42  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
43  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
44  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
45  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
46  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
47  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
48  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49  * POSSIBILITY OF SUCH DAMAGE.
50  *
51  ********************************************************************************/
60 
63 #ifndef __INCLUDE_MQUEUE_H
64 #define __INCLUDE_MQUEUE_H
65 
66 /********************************************************************************
67  * Included Files
68  ********************************************************************************/
69 
70 #include <sys/types.h>
71 #include <signal.h>
72 #include "queue.h"
73 
74 /********************************************************************************
75  * Pre-processor Definitions
76  ********************************************************************************/
77 
78 #define MQ_NONBLOCK O_NONBLOCK
79 
80 /********************************************************************************
81  * Global Type Declarations
82  ********************************************************************************/
83 
84 /* Message queue attributes */
85 
87 struct mq_attr {
88  size_t mq_maxmsg; /* Max number of messages in queue */
89  size_t mq_msgsize; /* Max message size */
90  unsigned mq_flags; /* Queue flags */
91  size_t mq_curmsgs; /* Number of messages currently in queue */
92 };
93 
94 /* Message queue descriptor */
95 
96 typedef FAR struct mq_des *mqd_t;
97 
98 /********************************************************************************
99  * Public Data
100  ********************************************************************************/
101 
102 #ifdef __cplusplus
103 #define EXTERN extern "C"
104 extern "C" {
105 #else
106 #define EXTERN extern
107 #endif
108 
109 /********************************************************************************
110  * Public Function Prototypes
111  ********************************************************************************/
117 mqd_t mq_open(FAR const char *mq_name, int oflags, ...);
123 int mq_close(mqd_t mqdes);
129 int mq_unlink(FAR const char *mq_name);
135 int mq_send(mqd_t mqdes, FAR const char *msg, size_t msglen, int prio);
141 int mq_timedsend(mqd_t mqdes, FAR const char *msg, size_t msglen, int prio, FAR const struct timespec *abstime);
147 ssize_t mq_receive(mqd_t mqdes, FAR char *msg, size_t msglen, FAR int *prio);
153 ssize_t mq_timedreceive(mqd_t mqdes, FAR char *msg, size_t msglen, FAR int *prio, FAR const struct timespec *abstime);
159 int mq_notify(mqd_t mqdes, const struct sigevent *notification);
160 
165 int mq_setattr(mqd_t mqdes, FAR const struct mq_attr *mq_stat, FAR struct mq_attr *oldstat);
170 int mq_getattr(mqd_t mqdes, FAR struct mq_attr *mq_stat);
171 
172 #undef EXTERN
173 #ifdef __cplusplus
174 }
175 #endif
176 
177 #endif /* __INCLUDE_MQUEUE_H */
178 
int mq_getattr(mqd_t mqdes, FAR struct mq_attr *mq_stat)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
int mq_setattr(mqd_t mqdes, FAR const struct mq_attr *mq_stat, FAR struct mq_attr *oldstat)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
int mq_close(mqd_t mqdes)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
unsigned mq_flags
Definition: mqueue.h:90
FAR struct mq_des * mqd_t
Definition: mqueue.h:96
int mq_unlink(FAR const char *mq_name)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
sturcutre of mqueue attritube
Definition: mqueue.h:87
Queue APIs.
Structure for elements that define a queue signal. The following is used to attach a signal to a mess...
Definition: signal.h:230
Signal APIs.
int mq_send(mqd_t mqdes, FAR const char *msg, size_t msglen, int prio)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
ssize_t mq_timedreceive(mqd_t mqdes, FAR char *msg, size_t msglen, FAR int *prio, FAR const struct timespec *abstime)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
size_t mq_maxmsg
Definition: mqueue.h:88
int mq_notify(mqd_t mqdes, const struct sigevent *notification)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
structure represents an elapsed time
Definition: time.h:152
mqd_t mq_open(FAR const char *mq_name, int oflags,...)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
size_t mq_msgsize
Definition: mqueue.h:89
int mq_timedsend(mqd_t mqdes, FAR const char *msg, size_t msglen, int prio, FAR const struct timespec *abstime)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
ssize_t mq_receive(mqd_t mqdes, FAR char *msg, size_t msglen, FAR int *prio)
POSIX APIs (refer to : http://pubs.opengroup.org/onlinepubs/9699919799/)
size_t mq_curmsgs
Definition: mqueue.h:91