diff options
-rw-r--r-- | include/mqueue.h | 143 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/bits/mqueue.h | 32 |
2 files changed, 100 insertions, 75 deletions
diff --git a/include/mqueue.h b/include/mqueue.h index 7f978ba34..1ccad5bba 100644 --- a/include/mqueue.h +++ b/include/mqueue.h @@ -1,9 +1,23 @@ -/* - * mqueue.h - definitions and function prototypes for POSIX mqueue support. - */ +/* Copyright (C) 2004, 2005 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + 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. */ #ifndef _MQUEUE_H -#define _MQUEUE_H +#define _MQUEUE_H 1 #include <features.h> #include <sys/types.h> @@ -12,86 +26,65 @@ #include <bits/siginfo.h> #define __need_timespec #include <time.h> - -typedef int mqd_t; - -struct mq_attr { - long int mq_flags; /* Message queue flags */ - long int mq_maxmsg; /* Maximum number of messages */ - long int mq_msgsize; /* Maximum message size */ - long int mq_curmsgs; /* Number of messages currently queued */ - long int __pad[4]; -}; +/* Get the definition of mqd_t and struct mq_attr. */ +#include <bits/mqueue.h> __BEGIN_DECLS -/* - * Establish connection between a process and a message queue __name and - * return message queue descriptor or (mqd_t) -1 on error. __oflag determines - * the type of access used. If O_CREAT is on __oflag, the third argument is - * taken as a `mode_t', the mode of the created message queue, and the fourth - * 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; - -/* - * Remove 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; - -/* - * 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; - -/* Remove message queue named __name */ -extern int mq_unlink(const char *__name) __THROW; - -/* - * Register notification upon message arrival to an empty message queue - * __mqdes - */ -extern int mq_notify(mqd_t __mqdes, const struct sigevent *__notification) +/* Establish connection between a process and a message queue NAME and + return message queue descriptor or (mqd_t) -1 on error. OFLAG determines + the type of access used. If O_CREAT is on OFLAG, the third argument is + taken as a `mode_t', the mode of the created message queue, and the fourth + 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; + +/* 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; + +/* 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; + +/* Remove message queue named NAME. */ +extern int mq_unlink (const char *__name) __THROW; + +/* 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); +/* 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); -/* 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); +/* 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); #ifdef __USE_XOPEN2K -/* - * Receive the oldest from highest priority messages in message queue - * __mqdes, stop waiting if __abs_timeout expires. - */ -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); - -/* - * 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); +/* Receive the oldest from highest priority messages in message queue + MQDES, stop waiting if ABS_TIMEOUT expires. */ +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); + +/* 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); #endif __END_DECLS -#endif +#endif /* mqueue.h */ diff --git a/libc/sysdeps/linux/common/bits/mqueue.h b/libc/sysdeps/linux/common/bits/mqueue.h new file mode 100644 index 000000000..df528f876 --- /dev/null +++ b/libc/sysdeps/linux/common/bits/mqueue.h @@ -0,0 +1,32 @@ +/* Copyright (C) 2004 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + 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. */ + +#ifndef _MQUEUE_H +# error "Never use <bits/mqueue.h> directly; include <mqueue.h> instead." +#endif + +typedef int mqd_t; + +struct mq_attr +{ + long int mq_flags; /* Message queue flags. */ + long int mq_maxmsg; /* Maximum number of messages. */ + long int mq_msgsize; /* Maximum message size. */ + long int mq_curmsgs; /* Number of messages currently queued. */ + long int __pad[4]; +}; |