]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man3/mq_getattr.3
getauxval.3: wfix
[thirdparty/man-pages.git] / man3 / mq_getattr.3
CommitLineData
80a99f39 1'\" t
c11b1abf 2.\" Copyright (C) 2006 Michael Kerrisk <mtk.manpages@gmail.com>
80a99f39 3.\"
93015253 4.\" %%%LICENSE_START(VERBATIM)
80a99f39
MK
5.\" Permission is granted to make and distribute verbatim copies of this
6.\" manual provided the copyright notice and this permission notice are
7.\" preserved on all copies.
8.\"
9.\" Permission is granted to copy and distribute modified versions of this
10.\" manual under the conditions for verbatim copying, provided that the
11.\" entire resulting derived work is distributed under the terms of a
12.\" permission notice identical to this one.
c13182ef 13.\"
80a99f39
MK
14.\" Since the Linux kernel and libraries are constantly changing, this
15.\" manual page may be incorrect or out-of-date. The author(s) assume no
16.\" responsibility for errors or omissions, or for damages resulting from
10d76543
MK
17.\" the use of the information contained herein. The author(s) may not
18.\" have taken the same level of care in the production of this manual,
19.\" which is licensed free of charge, as they might when working
20.\" professionally.
c13182ef 21.\"
80a99f39
MK
22.\" Formatted or processed versions of this manual, if unaccompanied by
23.\" the source, must acknowledge the copyright and authors of this work.
4b72fb64 24.\" %%%LICENSE_END
80a99f39 25.\"
460495ca 26.TH MQ_GETATTR 3 2015-08-08 "Linux" "Linux Programmer's Manual"
80a99f39
MK
27.SH NAME
28mq_getattr, mq_setattr \- get/set message queue attributes
29.SH SYNOPSIS
30.nf
31.B #include <mqueue.h>
32.sp
c9e83f06 33.BI "int mq_getattr(mqd_t " mqdes ", struct mq_attr *" attr );
5895e7eb 34
b39c9a51 35.BI "int mq_setattr(mqd_t " mqdes ", const struct mq_attr *" newattr ","
80a99f39
MK
36.BI " struct mq_attr *" oldattr );
37.fi
1b2d3fca
MK
38.sp
39Link with \fI\-lrt\fP.
80a99f39
MK
40.SH DESCRIPTION
41.BR mq_getattr ()
42and
43.BR mq_setattr ()
c13182ef 44respectively retrieve and modify attributes of the message queue
80a99f39
MK
45referred to by the descriptor
46.IR mqdes .
47
48.BR mq_getattr ()
49returns an
50.I mq_attr
c13182ef 51structure in the buffer pointed by
28cdb68a 52.IR attr .
80a99f39 53This structure is defined as:
a08ea57c 54.in +4n
80a99f39
MK
55.nf
56
57struct mq_attr {
58 long mq_flags; /* Flags: 0 or O_NONBLOCK */
59 long mq_maxmsg; /* Max. # of messages on queue */
60 long mq_msgsize; /* Max. message size (bytes) */
61 long mq_curmsgs; /* # of messages currently in queue */
62};
63.fi
a08ea57c 64.in
80a99f39
MK
65.PP
66The
67.I mq_flags
68field contains flags associated with the open message queue description.
d9bfdb9c 69This field is initialized when the queue is created by
fb186734 70.BR mq_open (3).
80a99f39
MK
71The only flag that can appear in this field is
72.BR O_NONBLOCK .
73
c13182ef 74The
80a99f39
MK
75.I mq_maxmsg
76and
77.I mq_msgsize
78fields are set when the message queue is created by
fb186734 79.BR mq_open (3).
80a99f39
MK
80The
81.I mq_maxmsg
c13182ef 82field is an upper limit on the number of messages
80a99f39 83that may be placed on the queue using
fb186734 84.BR mq_send (3).
80a99f39
MK
85The
86.I mq_msgsize
87field is an upper limit on the size of messages
88that may be placed on the queue.
89Both of these fields must have a value greater than zero.
c13182ef
MK
90Two
91.I /proc
92files that place ceilings on the values for these fields are described in
a4e83a44 93.BR mq_overview (7).
80a99f39 94
c13182ef 95The
80a99f39
MK
96.I mq_curmsgs
97field returns the number of messages currently held in the queue.
98
99.BR mq_setattr ()
c13182ef 100sets message queue attributes using information supplied in the
80a99f39
MK
101.I mq_attr
102structure pointed to by
103.IR newattr .
104The only attribute that can be modified is the setting of the
105.B O_NONBLOCK
106flag in
107.IR mq_flags .
108The other fields in
109.I newattr
110are ignored.
111If the
112.I oldattr
113field is not NULL,
114then the buffer that it points to is used to return an
115.I mq_attr
116structure that contains the same information that is returned by
117.BR mq_getattr ().
118.SH RETURN VALUE
119On success
120.BR mq_getattr ()
121and
122.BR mq_setattr ()
123return 0; on error, \-1 is returned, with
c13182ef 124.I errno
80a99f39
MK
125set to indicate the error.
126.SH ERRORS
127.TP
128.B EBADF
c13182ef 129The descriptor specified in
80a99f39
MK
130.I mqdes
131is invalid.
132.TP
133.B EINVAL
94e9d9fe 134.I newattr\->mq_flags
80a99f39
MK
135contained set bits other than
136.BR O_NONBLOCK .
dda654f4 137.SH ATTRIBUTES
b965bcba
PH
138For an explanation of the terms used in this section, see
139.BR attributes (7).
140.TS
141allbox;
142lbw26 lb lb
143l l l.
144Interface Attribute Value
145T{
146.BR mq_getattr (),
dda654f4 147.BR mq_setattr ()
b965bcba
PH
148T} Thread safety MT-Safe
149.TE
80a99f39 150.SH CONFORMING TO
8a8feb35 151POSIX.1-2001, POSIX.1-2008.
247ac1d3
MK
152.SH NOTES
153On Linux,
154.BR mq_getattr ()
155and
156.BR mq_setattr ()
157are library functions layered on top of the
158.BR mq_getsetattr (2)
159system call.
6c1eb6d2
MK
160.SH EXAMPLE
161The program below can be used to show the default
162.I mq_maxmsg
163and
164.I mq_msgsize
165values that are assigned to a message queue that is created with a call to
166.BR mq_open (3)
167in which the
168.I attr
169argument is NULL.
170Here is an example run of the program:
171
172.in +4n
173.nf
174$ \fB./a.out /testq\fP
175Maximum # of messages on queue: 10
176Maximum message size: 8192
177.fi
178.in
179
180Since Linux 3.5, the following
181.I /proc
182files (described in
183.BR mq_overview (7))
184can be used to control the defaults:
185
186.in +4n
187.nf
188$ \fBuname -sr\fP
189Linux 3.8.0
190$ \fBcat /proc/sys/fs/mqueue/msg_default\fP
19110
192$ \fBcat /proc/sys/fs/mqueue/msgsize_default\fP
1938192
194.fi
195.in
8f9b1587 196.SS Program source
6c1eb6d2
MK
197\&
198.nf
199#include <mqueue.h>
200#include <sys/stat.h>
201#include <fcntl.h>
202#include <stdio.h>
203#include <stdlib.h>
204#include <unistd.h>
205
206#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\
207 } while (0)
208
209int
210main(int argc, char *argv[])
211{
212 mqd_t mqd;
213 struct mq_attr attr;
214
215 if (argc != 2) {
216 fprintf(stderr, "Usage: %s mq\-name\\n", argv[0]);
217 exit(EXIT_FAILURE);
218 }
219
220 mqd = mq_open(argv[1], O_CREAT | O_EXCL, S_IRUSR | S_IWUSR, NULL);
221 if (mqd == (mqd_t) \-1)
222 errExit("mq_open");
223
224 if (mq_getattr(mqd, &attr) == \-1)
225 errExit("mq_getattr");
226
227 printf("Maximum # of messages on queue: %ld\\n", attr.mq_maxmsg);
228 printf("Maximum message size: %ld\\n", attr.mq_msgsize);
229
230 if (mq_unlink(argv[1]) == \-1)
231 errExit("mq_unlink");
232
233 exit(EXIT_SUCCESS);
234}
235.fi
47297adb 236.SH SEE ALSO
80a99f39
MK
237.BR mq_close (3),
238.BR mq_notify (3),
239.BR mq_open (3),
240.BR mq_receive (3),
241.BR mq_send (3),
242.BR mq_unlink (3),
243.BR mq_overview (7)