blob: 141b1ff9f0c644542c6f4b142cd465a1b6b1ac7e (
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
/* Copyright (C) 2002 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, see
<http://www.gnu.org/licenses/>. */
#ifndef _SYS_MSG_H
# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
#endif
#include <bits/types.h>
#include <bits/wordsize.h>
/* Define options for message queue functions. */
#define MSG_NOERROR 010000 /* no error if message is too big */
#ifdef __USE_GNU
# define MSG_EXCEPT 020000 /* recv any msg except of specified type */
#endif
/* Types used in the structure definition. */
typedef unsigned long int msgqnum_t;
typedef unsigned long int msglen_t;
/* Structure of record for one message inside the kernel.
The type `struct msg' is opaque. */
#if (__WORDSIZE == 32) && defined(__MIPSEL__)
struct msqid_ds
{
struct ipc_perm msg_perm; /* structure describing operation permission */
# if defined(__UCLIBC_USE_TIME64__)
unsigned long msg_stime_internal_1; /* time of last msgsnd command */
unsigned long msg_stime_internal_2;
unsigned long msg_rtime_internal_1; /* time of last msgrcv command */
unsigned long msg_rtime_internal_2;
unsigned long msg_ctime_internal_1; /* time of last change */
unsigned long msg_ctime_internal_2;
# else
__time_t msg_stime;
unsigned long int __uclibc_unused1;
__time_t msg_rtime;
unsigned long int __uclibc_unused2;
__time_t msg_ctime;
unsigned long int __uclibc_unused3;
# endif
unsigned long int __msg_cbytes; /* current number of bytes on queue */
msgqnum_t msg_qnum; /* number of messages currently on queue */
msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __uclibc_unused4;
unsigned long int __uclibc_unused5;
# if defined(__UCLIBC_USE_TIME64__)
__time_t msg_stime;
__time_t msg_rtime;
__time_t msg_ctime;
# endif
};
#elif (__WORDSIZE == 32) && defined(__MIPSEB__)
struct msqid_ds
{
struct ipc_perm msg_perm; /* structure describing operation permission */
# if defined(__UCLIBC_USE_TIME64__)
unsigned long msg_stime_internal_2; /* time of last msgsnd command */
unsigned long msg_stime_internal_1;
unsigned long msg_rtime_internal_2; /* time of last msgrcv command */
unsigned long msg_rtime_internal_1;
unsigned long msg_ctime_internal_2; /* time of last change */
unsigned long msg_ctime_internal_1;
# else
unsigned long int __uclibc_unused1;
__time_t msg_stime;
unsigned long int __uclibc_unused2;
__time_t msg_rtime;
unsigned long int __uclibc_unused3;
__time_t msg_ctime;
# endif
unsigned long int __msg_cbytes; /* current number of bytes on queue */
msgqnum_t msg_qnum; /* number of messages currently on queue */
msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __uclibc_unused4;
unsigned long int __uclibc_unused5;
# if defined(__UCLIBC_USE_TIME64__)
__time_t msg_stime;
__time_t msg_rtime;
__time_t msg_ctime;
# endif
};
#else
struct msqid_ds
{
struct ipc_perm msg_perm; /* structure describing operation permission */
__time_t msg_stime; /* time of last msgsnd command */
__time_t msg_rtime; /* time of last msgrcv command */
__time_t msg_ctime; /* time of last change */
unsigned long int __msg_cbytes; /* current number of bytes on queue */
msgqnum_t msg_qnum; /* number of messages currently on queue */
msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __uclibc_unused4;
unsigned long int __uclibc_unused5;
};
#endif
#ifdef __USE_MISC
# define msg_cbytes __msg_cbytes
/* ipcs ctl commands */
# define MSG_STAT 11
# define MSG_INFO 12
/* buffer for msgctl calls IPC_INFO, MSG_INFO */
struct msginfo
{
int msgpool;
int msgmap;
int msgmax;
int msgmnb;
int msgmni;
int msgssz;
int msgtql;
unsigned short int msgseg;
};
#endif /* __USE_MISC */
|