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 2003 Sun Microsystems, Inc.  All rights reserved.
  24  * Use is subject to license terms.
  25  */
  26 
  27 #ifndef _MQUEUE_H
  28 #define _MQUEUE_H
  29 
  30 #pragma ident   "%Z%%M% %I%     %E% SMI"
  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     defined(__STDC__)
  57 #if     (_POSIX_C_SOURCE - 0 > 0) && (_POSIX_C_SOURCE - 0 <= 2)
  58 #error  "POSIX Message Passing is not supported in POSIX.1-1990"
  59 #endif
  60 #include <sys/siginfo.h>
  61 mqd_t   mq_open(const char *, int, ...);
  62 int     mq_close(mqd_t);
  63 int     mq_unlink(const char *);
  64 int     mq_send(mqd_t, const char *, size_t, unsigned int);
  65 int     mq_timedsend(mqd_t, const char *, size_t, unsigned int,
  66                 const struct timespec *);
  67 int     mq_reltimedsend_np(mqd_t, const char *, size_t, unsigned int,
  68                 const struct timespec *);
  69 ssize_t mq_receive(mqd_t, char *, size_t, unsigned int *);
  70 ssize_t mq_timedreceive(mqd_t, char *_RESTRICT_KYWD, size_t,
  71                 unsigned int *_RESTRICT_KYWD,
  72                 const struct timespec *_RESTRICT_KYWD);
  73 ssize_t mq_reltimedreceive_np(mqd_t, char *_RESTRICT_KYWD, size_t,
  74                 unsigned int *_RESTRICT_KYWD,
  75                 const struct timespec *_RESTRICT_KYWD);
  76 int     mq_notify(mqd_t, const struct sigevent *);
  77 int     mq_getattr(mqd_t, struct mq_attr *);
  78 int     mq_setattr(mqd_t, const struct mq_attr *_RESTRICT_KYWD,
  79                 struct mq_attr *_RESTRICT_KYWD);
  80 #else
  81 mqd_t   mq_open();
  82 int     mq_close();
  83 int     mq_unlink();
  84 int     mq_send();
  85 int     mq_timedsend();
  86 int     mq_reltimedsend_np();
  87 ssize_t mq_receive();
  88 ssize_t mq_timedreceive();
  89 ssize_t mq_reltimedreceive_np();
  90 int     mq_notify();
  91 int     mq_getattr();
  92 int     mq_setattr();
  93 #endif  /* __STDC__ */
  94 
  95 #ifdef  __cplusplus
  96 }
  97 #endif
  98 
  99 #endif  /* _MQUEUE_H */