Added man pages for msgctl(3), msgget(3), msgrcv(3) and msgsnd(3).

Obtained from: NetBSD
This commit is contained in:
Mike Pritchard 1996-02-12 07:03:24 +00:00
parent b156b34dfe
commit 2375385da1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=14053
5 changed files with 656 additions and 1 deletions

View File

@ -46,7 +46,9 @@ MAN3+= gen/alarm.3 gen/clock.3 gen/confstr.3 gen/config_open.3 \
gen/getmntinfo.3 gen/getnetgrent.3 gen/getpagesize.3 gen/getpass.3 \
gen/getpwent.3 gen/getttyent.3 gen/getvfsent.3 gen/getusershell.3 \
gen/glob.3 \
gen/initgroups.3 gen/isinf.3 gen/ldexp.3 gen/modf.3 gen/nice.3 \
gen/initgroups.3 gen/isinf.3 gen/ldexp.3 \
gen/msgctl.3 gen/msgget.3 gen/msgrcv.3 gen/msgsnd.3 \
gen/modf.3 gen/nice.3 \
gen/nlist.3 gen/pause.3 gen/popen.3 gen/psignal.3 gen/pwcache.3 \
gen/raise.3 gen/rand48.3 gen/scandir.3 gen/setjmp.3 gen/setmode.3 \
gen/siginterrupt.3 gen/signal.3 gen/sigsetops.3 gen/sleep.3 \

201
lib/libc/gen/msgctl.3 Normal file
View File

@ -0,0 +1,201 @@
.\" $NetBSD: msgctl.2,v 1.1 1995/10/16 23:49:15 jtc Exp $
.\"
.\" Copyright (c) 1995 Frank van der Linden
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed for the NetBSD Project
.\" by Frank van der Linden
.\" 4. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"/
.Dd August 17, 1995
.Dt MSGCTL 3
.Os NetBSD
.Sh NAME
.Nm msgctl
.Nd message control operations
.Sh SYNOPSIS
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
.Fd #include <sys/msg.h>
.Ft int
.Fn msgctl "int msqid" "int cmd" "struct msqid_ds *buf"
.Sh DESCRIPTION
The
.Fn msgctl
system call performs some control operations on the message queue specified
by
.Fa msqid .
Each message queue has a data structure associated with it, parts of which
may be altered by
.Fn msgctl
and parts of which determine the actions of
.Fn msgctl .
The data structure is defined in
.Aq Pa sys/msg.h
and contains (amongst others) the following members:
.Bd -literal
struct msqid_ds {
struct ipc_perm msg_perm; /* msg queue permission bits */
u_long msg_cbytes; /* # of bytes in use on the queue */
u_long msg_qnum; /* # of msgs in the queue */
u_long msg_qbytes; /* max # of bytes on the queue */
pid_t msg_lspid; /* pid of last msgsnd() */
pid_t msg_lrpid; /* pid of last msgrcv() */
time_t msg_stime; /* time of last msgsnd() */
time_t msg_rtime; /* time of last msgrcv() */
time_t msg_ctime; /* time of last msgctl() */
};
.Ed
The
.Bf -literal
ipc_perm
.Ef
structure used inside the
.Bf -literal
shmid_ds
.Ef
structure is defined in
.Aq Pa sys/ipc.h
and looks like this:
.Bd -literal
struct ipc_perm {
ushort cuid; /* creator user id */
ushort cgid; /* creator group id */
ushort uid; /* user id */
ushort gid; /* group id */
ushort mode; /* permission (9 bits, see chmod(2)) */
ushort seq; /* sequence # (to generate unique id) */
key_t key; /* user specified msg/sem/shm key */
};
.Ed
The operation to be performed by
.Fn msgctl
is specified in
.Fa cmd
and is one of:
.Bl -tag -width IPC_RMIDX
.It Dv IPC_STAT
Gather information about the message queue and place it in the
structure pointed to by
.Fa buf .
.It Dv IPC_SET
Set the value of the
.Va msg_perm.uid ,
.Va msg_perm.gid ,
.Va msg_perm.mode
and
.Va msg_qbytes
fields in the structure associated with
.Fa msqid .
The values are taken from the corresponding fields in the structure
pointed to by
.Fa buf .
This operation can only be executed by the super-user, or a process that
has an effective user id equal to either
.Va msg_perm.cuid
or
.Va msg_perm.uid
in the data structure associated with the message queue.
The value of
.Va msg_qbytes
can only be increased by the super-user. Values for
.Va msg_qbytes
that exceed the system limit (MSGMNB from
.Aq Pa sys/msg.h )
are silently truncated to that limit.
.It Dv IPC_RMID
Remove the message queue specified by
.Fa msqid
and destroy the data associated with it. Only the super-user or a process
with an effective uid equal to the
.Va msg_perm.cuid
or
.Va msg_perm.uid
values in the data structure associated with the queue can do this.
.El
The permission to read from or write to a message queue (see
.Xr msgsnd 3
and
.Xr msgrcv 3 )
is determined by the
.Va msg_perm.mode
field in the same way as is
done with files (see
.Xr chmod 2 ),
but the effective uid can match either the
.Va msg_perm.cuid
field or the
.Va msg_perm.uid
field, and the
effective gid can match either
.Va msg_perm.cgid
or
.Va msg_perm.gid .
.Sh RETURN VALUES
Upon successful completion, a value of 0 is returned. Otherwise, -1 is
returned and the global variable
.Va errno
is set to indicate the error.
.Sh ERRORS
.Fn msgctl
will fail if:
.Bl -tag -width Er
.It Bq Er EPERM
.Fa cmd
is equal to IPC_SET or IPC_RMID and the caller is not the super-user, nor does
the effective uid match either the
.Va msg_perm.uid
or
.Va msg_perm.cuid
fields of the data structure associated with the message queue.
An attempt is made to increase the value of
.Va msg_qbytes
through IPC_SET
but the caller is not the super-user.
.It Bq Er EACCESS
The command is IPC_STAT
and the caller has no read permission for this message queue.
.It Bq Er EINVAL
.Fa msqid
is not a valid message queue identifier.
.Va cmd
is not a valid command.
.It Bq Er EFAULT
.Fa buf
specifies an invalid address.
.El
.Sh SEE ALSO
.Xr msgsnd 3 ,
.Xr msgrcv 3 ,
.Xr msgget 3
.Sh HISTORY
Message queues appeared in the first release of AT&T Unix System V.

126
lib/libc/gen/msgget.3 Normal file
View File

@ -0,0 +1,126 @@
.\" $NetBSD: msgget.2,v 1.1 1995/10/16 23:49:19 jtc Exp $
.\"
.\" Copyright (c) 1995 Frank van der Linden
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed for the NetBSD Project
.\" by Frank van der Linden
.\" 4. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"/
.Dd August 17, 1995
.Dt MSGGET 3
.Os NetBSD
.Sh NAME
.Nm msgget
.Nd get message queue
.Sh SYNOPSIS
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
.Fd #include <sys/msg.h>
.Ft int
.Fn msgget "key_t key" "int msgflg"
.Sh DESCRIPTION
.Fn msgget
returns the message queue identifier associated with
.Fa key .
A message queue identifier is a unique integer greater than zero.
A message queue is created if either
.Fa key
is equal to IPC_PRIVATE, or
.Fa key
does not have a message queue identifier associated with it, and the IPC_CREAT
bit is set in
.Fa msgflg.
If a new message queue is created, the data structure associated with it (the
.Va msqid_ds
structure, see
.Xr msgctl 3 )
is initialized as follows:
.Bl -bullet
.It
.Va msg_perm.cuid
and
.Va msg_perm.uid
are set to the effective uid of the calling process.
.It
.Va msg_perm.gid
and
.Va msg_perm.cgid
are set to the effective gid of the calling process.
.It
.Va msg_perm.mode
is set to the lower 9 bits of
.Fa msgflg .
.It
.Va msg_cbytes ,
.Va msg_qnum ,
.Va msg_lspid ,
.Va msg_lrpid ,
.Va msg_rtime ,
and
.Va msg_stime
are set to 0
.It
.Va msg_qbytes
is set to the system wide maximum value for the number of bytes in a queue
(MSGMNB).
.It
.Va msg_ctime
is set to the current time.
.El
.Sh RETURN VALUES
Upon successful completion a positive message queue identifier is returned.
Otherwise, -1 is returned and the global variable
.Va errno
is set to indicate the error.
.Sh ERRORS
.Bl -tag -width Er
.It Bq Er EACESS
A message queue is already associated with
.Fa key
and the caller has no permission to access it.
.It Bq Er EEXIST
Both IPC_CREAT and IPC_EXCL are set in
.Fa msgflg ,
and a message queue is already associated with
.Fa key .
.It Bq Er ENOSPC
A new message queue could not be created because the system limit for
the number of message queues has been reached.
.It Bq Er ENOENT
IPC_CREAT was not set in
.Fa msgflg
and no message queue associated with
.Fa key
was found.
.El
.Sh SEE ALSO
.Xr msgctl 3 ,
.Xr msgrcv 3 ,
.Xr msgsnd 3
.Sh HISTORY
Message queues appeared in the first release of AT&T Unix System V.

181
lib/libc/gen/msgrcv.3 Normal file
View File

@ -0,0 +1,181 @@
.\" $NetBSD: msgrcv.2,v 1.1 1995/10/16 23:49:20 jtc Exp $
.\"
.\" Copyright (c) 1995 Frank van der Linden
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed for the NetBSD Project
.\" by Frank van der Linden
.\" 4. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"/
.Dd August 17, 1995
.Dt MSGRCV 3
.Os NetBSD
.Sh NAME
.Nm msgrcv
.Nd receive a message from a message queue
.Sh SYNOPSIS
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
.Fd #include <sys/msg.h>
.Ft int
.Fn msgrcv "int msqid" "void *msgp" "size_t msgsz" "long msgtyp" "int msgflg"
.Sh DESCRIPTION
The
.Fn msgrcv
function receives a message from the message queue specified in
.Fa msqid ,
and places it into the structure pointed to by
.Fa msgp .
This structure should consist of the following members:
.Bd -literal
long mtype; /* message type */
char mtext[1]; /* body of message */
.Ed
.Va mtype
is an integer greater than 0 that can be used for selecting messages,
.Va mtext
is an array of bytes, with a size up to that of the system limit (MSGMAX).
The value of
.Fa msgtyp
has one of the following meanings:
.Bl -bullet
.It
.Fa msgtyp
is greater than 0. The first message of type
.Fa msgtyp
will be received.
.It
.Fa msgtyp
is equal to 0. The first message on the queue will be received.
.It
.Fa msgtyp
is less than 0. The first message of the lowest message type that is
less than or equal to the absolute value of
.Fa msgtyp
will be received.
.El
.Fa msgsz
specifies the maximum length of the requested message. If the received
message has a length greater than
.Fa msgsz
it will be silently truncated if the MSG_NOERROR flag is set in
.Fa msgflg ,
otherwise an error will be returned.
If no matching message is present on the message queue specified by
.Fa msqid ,
the behavior of
.Fn msgrcv
depends on whether the IPC_NOWAIT flag is set in
.Fa msgflg
or not. If IPC_NOWAIT is set,
.Fn msgrcv
will immediately return a value of -1, and set
.Va errno
to EAGAIN. If IPC_NOWAIT is not set, the calling process will be blocked
until:
.Bl -bullet
.It
A message of the requested type becomes available on the message queue.
.It
The message queue is removed, in which case -1 will be returned, and
.Va errno
set to EINVAL.
.It
A signal is received and caught. -1 is returned, and
.Va errno
set to EINTR.
.El
If a message is successfully received, the data structure associated with
.Fa msqid
is updated as follows:
.Bl -bullet
.It
.Va msg_cbytes
is decremented by the size of the message.
.It
.Va msg_lrpid
is set to the pid of the caller.
.It
.Va msg_lrtime
is set to the current time.
.It
.Va msg_qnum
is decremented by 1.
.Sh RETURN VALUES
Upon successful completion,
.Fn msgrcv
returns the number of bytes received into the
.Va mtext
field of the structure pointed to by
.Fa msgp .
Otherwise, -1 is returned, and
.Va errno
set to indicate the error.
.Sh ERRORS
.Fn msgrcv
will fail if:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa msqid
is not a valid message queue identifier
The message queue was removed while
.Fn msgrcv
was waiting for a message of the requested type to become available on it.
.Fa msgsz
is less than 0.
.It Bq Er E2BIG
A matching message was received, but its size was greater than
.Fa msgsz
and the MSG_NOERROR flag was not set in
.Fa msgflg .
.It Bq Er EACCESS
The calling process does not have read access to the message queue.
.It Bq Er EFAULT
.Fa msgp
points to an invalid address.
.It Bq Er EINTR
The system call was interrupted by the delivery of a signal.
.It Bq Er EAGAIN
There is no message of the requested type available on the message queue,
and IPC_NOWAIT is set in
.Fa msgflg .
.Sh SEE ALSO
.Xr msgsnd 3 ,
.Xr msgctl 3 ,
.Xr msgget 3
.Sh BUGS
NetBSD and FreeBSD do not define the EIDRM error value, which should be used in
the case of a removed message queue, nor the ENOMSG value, which
should be used when no suitable message is available and IPC_NOWAIT
is set.
.Sh HISTORY
Message queues appeared in the first release of AT&T Unix System V.

145
lib/libc/gen/msgsnd.3 Normal file
View File

@ -0,0 +1,145 @@
.\" $NetBSD: msgsnd.2,v 1.1 1995/10/16 23:49:24 jtc Exp $
.\"
.\" Copyright (c) 1995 Frank van der Linden
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed for the NetBSD Project
.\" by Frank van der Linden
.\" 4. The name of the author may not be used to endorse or promote products
.\" derived from this software without specific prior written permission
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"/
.Dd August 17, 1995
.Dt MSGSND 3
.Os NetBSD
.Sh NAME
.Nm msgsnd
.Nd send a message to a message queue
.Sh SYNOPSIS
.Fd #include <sys/types.h>
.Fd #include <sys/ipc.h>
.Fd #include <sys/msg.h>
.Ft int
.Fn msgsnd "int msqid" "void *msgp" "size_t msgsz" "int msgflg"
.Sh DESCRIPTION
The
.Fn msgsnd
function sends a message from the message queue specified in
.Fa msqid .
.Fa msgp
points to a structure containing the message. This structure should
consist of the following members:
.Bd -literal
long mtype; /* message type */
char mtext[1]; /* body of message */
.Ed
.Va mtype
is an integer greater than 0 that can be used for selecting messages (see
.Xr msgrcv 3 ) ,
.Va mtext
is an array of bytes, with a size up to that of the system limit (MSGMAX).
If the number of bytes already on the message queue plus
.Fa msgsz
is bigger than the maximum number of bytes on the message queue (
.Va msg_qbytes ,
see
.Xr msgctl 3 ) ,
or the number of messages on all queues system-wide is already equal to
the system limit,
.Fa msgflg
determines the action of
.Fn msgsnd .
If
.Fa msgflg
has IPC_NOWAIT mask set in it, the call will return immediately. If
.Fa msgflg
does not have IPC_NOWAIT set in it, the call will block until:
.Bl -bullet
.It
The condition which caused the call to block does no longer exist.
The message will be sent.
.It
The message queue is removed, in which case -1 will be returned, and
.Va errno
is set to EINVAL.
.It
The caller catches a signal. The call returns with
.Va errno
set to EINTR.
.El
After a successful call, the data structure associated with the message
queue is updated in the following way:
.Bl -bullet
.It
.Va msg_cbytes
is incremented by the size of the message.
.It
.Va msg_qnum
is incremented by 1.
.It
.Va msg_lspid
is set to the pid of the calling process.
.It
.Va msg_stime
is set to the current time.
.El
.Sh RETURN VALUES
Upon successful completion, 0 is returned. Otherwise, -1 is returned and
.Va errno
is set to indicate the error.
.Sh ERRORS
.Fn msgsnd
will fail if:
.Bl -tag -width Er
.It Bq Er EINVAL
.Fa msqid
is not a valid message queue identifier
The message queue was removed while
.Fn msgsnd
was waiting for a resource to become available in order to deliver the
message.
.Fa msgsz
is less than 0, or greater than
.Va msg_qbytes .
.It Bq Er EACCESS
The calling process does not have write access to the message queue.
.It Bq Er EAGAIN
There was no space for this message either on the queue, or in the whole
system, and IPC_NOWAIT was set in
.Fa msgflg .
.It Bq Er EFAULT
.Fa msgp
points to an invalid address.
.It Bq Er EINTR
The system call was interrupted by the delivery of a signal.
.El
.Sh BUGS
NetBSD and FreeBSD do not define the EIDRM error value, which should be used
in the case of a removed message queue.
.Sh HISTORY
Message queues appeared in the first release of AT&T Unix System V.