Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/sys/linux/mqlocal.h')
-rw-r--r--newlib/libc/sys/linux/mqlocal.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/newlib/libc/sys/linux/mqlocal.h b/newlib/libc/sys/linux/mqlocal.h
new file mode 100644
index 000000000..56fd66c2d
--- /dev/null
+++ b/newlib/libc/sys/linux/mqlocal.h
@@ -0,0 +1,47 @@
+/* local definitions needed by mq routines */
+
+#include <sys/msg.h>
+#include <signal.h>
+
+/* a message */
+typedef struct
+{
+ unsigned int type;
+ char text[1];
+} MSG;
+
+union semun {
+ int val;
+ struct semid_ds *buf;
+ unsigned short *array;
+} arg;
+
+/*
+ * One of these structures is malloced to describe any open message queue
+ * each time mq_open is called.
+ */
+
+struct libc_mq;
+
+struct libc_mq {
+ int index; /* index of this message queue */
+ int msgqid; /* value returned by msgget */
+ int semid; /* semaphore id */
+ int fd; /* fd of shared memory file */
+ int oflag; /* original open flag used */
+ int th; /* thread id for mq_notify */
+ char *name; /* name used */
+ MSG *wrbuf; /* msg write buffer */
+ MSG *rdbuf; /* msg read buffer */
+ struct mq_attr *attr; /* pointer to attribute structure */
+ struct sigevent *sigevent; /* used for mq_notify */
+ void (*cleanup_notify)(struct libc_mq *); /* also used for mq_notify */
+ struct libc_mq *next; /* next info struct in hash table */
+};
+
+extern struct libc_mq *__find_mq (mqd_t mq);
+extern void __cleanup_mq (mqd_t mq);
+extern void __cleanup_mq_notify (struct libc_mq *ptr);
+
+#define MSGQ_PREFIX "/dev/shm/__MSGQ__"
+