1 /*
   2  * CDDL HEADER START
   3  *
   4  * The contents of this file are subject to the terms of the
   5  * Common Development and Distribution License, Version 1.0 only
   6  * (the "License").  You may not use this file except in compliance
   7  * with the License.
   8  *
   9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10  * or http://www.opensolaris.org/os/licensing.
  11  * See the License for the specific language governing permissions
  12  * and limitations under the License.
  13  *
  14  * When distributing Covered Code, include this CDDL HEADER in each
  15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16  * If applicable, add the following below this CDDL HEADER, with the
  17  * fields enclosed by brackets "[]" replaced with your own identifying
  18  * information: Portions Copyright [yyyy] [name of copyright owner]
  19  *
  20  * CDDL HEADER END
  21  */
  22 /*
  23  * Copyright 2014 Garrett D'Amore <garrett@damore.org>
  24  *
  25  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 
  29 #ifndef _MQUEUE_H
  30 #define _MQUEUE_H
  31 
  32 #include <sys/feature_tests.h>
  33 #include <sys/types.h>
  34 #include <sys/fcntl.h>
  35 #include <sys/signal.h>
  36 #include <sys/siginfo.h>
  37 #include <time.h>
  38 
  39 #ifdef  __cplusplus
  40 extern "C" {
  41 #endif
  42 
  43 typedef void    *mqd_t;         /* opaque message queue descriptor */
  44 
  45 struct mq_attr {
  46         long    mq_flags;       /* message queue flags */
  47         long    mq_maxmsg;      /* maximum number of messages */
  48         long    mq_msgsize;     /* maximum message size */
  49         long    mq_curmsgs;     /* number of messages currently queued */
  50         int     mq_pad[12];
  51 };
  52 
  53 /*
  54  * function prototypes
  55  */
  56 #if     (_POSIX_C_SOURCE - 0 > 0) && (_POSIX_C_SOURCE - 0 <= 2)
  57 #error  "POSIX Message Passing is not supported in POSIX.1-1990"
  58 #endif
  59 #include <sys/siginfo.h>
  60 mqd_t   mq_open(const char *, int, ...);
  61 int     mq_close(mqd_t);
  62 int     mq_unlink(const char *);
  63 int     mq_send(mqd_t, const char *, size_t, unsigned int);
  64 int     mq_timedsend(mqd_t, const char *, size_t, unsigned int,
  65                 const struct timespec *);
  66 int     mq_reltimedsend_np(mqd_t, const char *, size_t, unsigned int,
  67                 const struct timespec *);
  68 ssize_t mq_receive(mqd_t, char *, size_t, unsigned int *);
  69 ssize_t mq_timedreceive(mqd_t, char *_RESTRICT_KYWD, size_t,
  70                 unsigned int *_RESTRICT_KYWD,
  71                 const struct timespec *_RESTRICT_KYWD);
  72 ssize_t mq_reltimedreceive_np(mqd_t, char *_RESTRICT_KYWD, size_t,
  73                 unsigned int *_RESTRICT_KYWD,
  74                 const struct timespec *_RESTRICT_KYWD);
  75 int     mq_notify(mqd_t, const struct sigevent *);
  76 int     mq_getattr(mqd_t, struct mq_attr *);
  77 int     mq_setattr(mqd_t, const struct mq_attr *_RESTRICT_KYWD,
  78                 struct mq_attr *_RESTRICT_KYWD);
  79 
  80 #ifdef  __cplusplus
  81 }
  82 #endif
  83 
  84 #endif  /* _MQUEUE_H */