]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - rt/mqueue.h
Installed-header hygiene (BZ#20366): time.h types.
[thirdparty/glibc.git] / rt / mqueue.h
index 42313b192bbb5abfd45567ba69a398870c1749a4..db6022f0f1852fbf7f6fc2b40cb3f5728f82c70e 100644 (file)
@@ -1,6 +1,5 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004-2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Jakub Jelinek <jakub@redhat.com>, 2004.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
@@ -13,9 +12,8 @@
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
 
 #ifndef _MQUEUE_H
 #define _MQUEUE_H      1
@@ -25,8 +23,7 @@
 #include <fcntl.h>
 #define __need_sigevent_t
 #include <bits/siginfo.h>
-#define __need_timespec
-#include <time.h>
+#include <bits/types/struct_timespec.h>
 /* Get the definition of mqd_t and struct mq_attr.  */
 #include <bits/mqueue.h>
 
@@ -39,37 +36,40 @@ __BEGIN_DECLS
    argument is taken as `struct mq_attr *', pointer to message queue
    attributes.  If the fourth argument is NULL, default attributes are
    used.  */
-extern mqd_t mq_open (const char *__name, int __oflag, ...) __THROW;
+extern mqd_t mq_open (const char *__name, int __oflag, ...)
+  __THROW __nonnull ((1));
 
 /* Removes the association between message queue descriptor MQDES and its
    message queue.  */
 extern int mq_close (mqd_t __mqdes) __THROW;
 
 /* Query status and attributes of message queue MQDES.  */
-extern int mq_getattr (mqd_t __mqdes, struct mq_attr *__mqstat) __THROW;
+extern int mq_getattr (mqd_t __mqdes, struct mq_attr *__mqstat)
+  __THROW __nonnull ((2));
 
 /* Set attributes associated with message queue MQDES and if OMQSTAT is
    not NULL also query its old attributes.  */
 extern int mq_setattr (mqd_t __mqdes,
                       const struct mq_attr *__restrict __mqstat,
-                      struct mq_attr *__restrict __omqstat) __THROW;
+                      struct mq_attr *__restrict __omqstat)
+  __THROW __nonnull ((2));
 
 /* Remove message queue named NAME.  */
-extern int mq_unlink (const char *__name) __THROW;
+extern int mq_unlink (const char *__name) __THROW __nonnull ((1));
 
-/* Register notification upon message arrival to an empty message queue
-   MQDES.  */
+/* Register notification issued upon message arrival to an empty
+   message queue MQDES.  */
 extern int mq_notify (mqd_t __mqdes, const struct sigevent *__notification)
      __THROW;
 
 /* Receive the oldest from highest priority messages in message queue
    MQDES.  */
 extern ssize_t mq_receive (mqd_t __mqdes, char *__msg_ptr, size_t __msg_len,
-                          unsigned int *__msg_prio);
+                          unsigned int *__msg_prio) __nonnull ((2));
 
 /* Add message pointed by MSG_PTR to message queue MQDES.  */
 extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
-                   unsigned int __msg_prio);
+                   unsigned int __msg_prio) __nonnull ((2));
 
 #ifdef __USE_XOPEN2K
 /* Receive the oldest from highest priority messages in message queue
@@ -77,15 +77,23 @@ extern int mq_send (mqd_t __mqdes, const char *__msg_ptr, size_t __msg_len,
 extern ssize_t mq_timedreceive (mqd_t __mqdes, char *__restrict __msg_ptr,
                                size_t __msg_len,
                                unsigned int *__restrict __msg_prio,
-                               const struct timespec *__restrict __abs_timeout);
+                               const struct timespec *__restrict __abs_timeout)
+  __nonnull ((2, 5));
 
 /* Add message pointed by MSG_PTR to message queue MQDES, stop blocking
    on full message queue if ABS_TIMEOUT expires.  */
 extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
                         size_t __msg_len, unsigned int __msg_prio,
-                        const struct timespec *__abs_timeout);
+                        const struct timespec *__abs_timeout)
+  __nonnull ((2, 5));
+#endif
+
+/* Define some inlines helping to catch common problems.  */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \
+    && defined __va_arg_pack_len
+# include <bits/mqueue2.h>
 #endif
 
-__END_DECLS                                                      
+__END_DECLS
 
 #endif /* mqueue.h */