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

mqlocal.h « linux « sys « libc « newlib - cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 56fd66c2d482d7a4b1c6eaf3ab1e0314908cfd17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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__"