Annotation of cci/usr/src/man/man2/msgop.2i, revision 1.1

1.1     ! root        1: .TH MSGOP 2
        !             2: .SH NAME
        !             3: msgop \- message operations
        !             4: .SH SYNOPSIS
        !             5: .B #include <sys/types.h>
        !             6: .br
        !             7: .B #include <sys/ipc.h>
        !             8: .br
        !             9: .B #include <sys/msg.h>
        !            10: .PP
        !            11: .nf
        !            12: .B int msgsnd (msqid, msgp, msgsz, msgflg)
        !            13: .B int msqid;
        !            14: .B struct msgbuf \(**msgp;
        !            15: .B int msgsz, msgflg;
        !            16: .PP
        !            17: .B "int msgrcv (msqid, msgp, msgsz, msgtyp, msgflg)"
        !            18: .B int msqid;
        !            19: .B struct msgbuf \(**msgp;
        !            20: .B int msgsz;
        !            21: .B long msgtyp;
        !            22: .B int msgflg;
        !            23: .fi
        !            24: .SH DESCRIPTION
        !            25: Msgsnd is used to send a message to the queue associated with the message
        !            26: queue identifier specified by
        !            27: .IR msqid .
        !            28: .SM {WRITE}
        !            29: .I Msgp
        !            30: points to a structure containing the message.
        !            31: This structure is composed of the following members:
        !            32: .PP
        !            33: .RS
        !            34: .ta 8n 20n
        !            35: .nf
        !            36: long   mtype;  /\(** message type \(**/
        !            37: char   mtext[];        /\(** message text \(**/
        !            38: .fi
        !            39: .RE
        !            40: .PP
        !            41: .I Mtype
        !            42: is a positive integer that can be used by the receiving process for
        !            43: message selection (see
        !            44: .IR msgrcv " below").
        !            45: .I Mtext
        !            46: is any text of length
        !            47: .I msgsz
        !            48: bytes.
        !            49: .I Msgsz
        !            50: can range from 0 to a system-imposed maximum.
        !            51: .PP
        !            52: .I Msgflg
        !            53: specifies the action to be taken if one or more of the following are true:
        !            54: .IP
        !            55: The number of bytes already on the queue is equal to
        !            56: .BR msg_qbytes
        !            57: .RI (see " intro" (2)).
        !            58: .IP
        !            59: The total number of messages on all queues system-wide is equal to the
        !            60: system-imposed limit.
        !            61: .PP
        !            62: These actions are as follows:
        !            63: .IP
        !            64: If
        !            65: .RI ( msgflg " & "
        !            66: .SM
        !            67: .BR IPC_NOWAIT\*S )
        !            68: is ``true'', the message will not be sent and the calling process will
        !            69: return immediately.
        !            70: .IP
        !            71: If
        !            72: .RI ( msgflg " & "
        !            73: .SM
        !            74: .BR IPC_NOWAIT\*S )
        !            75: is ``false'',
        !            76: the calling process will suspend execution until one of the following occurs:
        !            77: .RS 8
        !            78: .IP
        !            79: The condition responsible for the suspension no longer exists, in which case
        !            80: the message is sent.
        !            81: .IP
        !            82: .I Msqid
        !            83: is removed from the system (see
        !            84: .IR msgctl (2)).
        !            85: When this occurs,
        !            86: .I errno
        !            87: is set equal to
        !            88: .SM
        !            89: \%EIDRM\*S,
        !            90: and a value of \-1 is returned.
        !            91: .IP
        !            92: The calling process receives a signal that is to be caught.
        !            93: In this case the message is not sent and the calling process resumes
        !            94: execution in the manner prescribed in
        !            95: .IR signal (2)).
        !            96: .RE
        !            97: .PP
        !            98: .I Msgsnd
        !            99: will fail and no message will be sent if one or more of the following are true:
        !           100: .TP 15
        !           101: .SM
        !           102: \%[EINVAL]
        !           103: .I Msqid
        !           104: is not a valid message queue identifier.
        !           105: .TP
        !           106: .SM
        !           107: \%[EACCES]
        !           108: Operation permission is denied to the calling process (see
        !           109: .IR intro (2)).
        !           110: .TP
        !           111: .SM
        !           112: \%[EINVAL]
        !           113: .I Mtype
        !           114: is less than 1.
        !           115: .TP
        !           116: .SM
        !           117: \%[EAGAIN]
        !           118: The message cannot be sent for one of the reasons cited above and
        !           119: .RI ( msgflg " & "
        !           120: .SM
        !           121: .BR IPC_NOWAIT\*S )
        !           122: is ``true''.
        !           123: .TP
        !           124: .SM
        !           125: \%[EINVAL]
        !           126: .I Msgsz
        !           127: is less than zero or greater than the system-imposed limit.
        !           128: .TP
        !           129: .SM
        !           130: \%[EFAULT]
        !           131: .I Msgp
        !           132: points to an illegal address.
        !           133: .PP
        !           134: Upon successful completion, the following actions are taken with respect to
        !           135: the data structure associated with
        !           136: .IR msqid
        !           137: (see intro (2)).
        !           138: .IP
        !           139: .B Msg_qnum
        !           140: is incremented by 1.
        !           141: .IP
        !           142: .B Msg_lspid
        !           143: is set equal to the process
        !           144: .SM ID
        !           145: of the calling process.
        !           146: .IP
        !           147: .B Msg_stime
        !           148: is set equal to the current time.
        !           149: .PP
        !           150: .I Msgrcv
        !           151: reads a message from the queue associated with the message queue identifier
        !           152: specified by
        !           153: .IR msqid
        !           154: and places it in the structure pointed to by
        !           155: .IR msgp .
        !           156: .SM {READ}
        !           157: This structure is composed of the following members:
        !           158: .PP
        !           159: .RS
        !           160: .ta 8n 20n
        !           161: .nf
        !           162: long   mtype;  /\(** message type \(**/
        !           163: char   mtext[];        /\(** message text \(**/
        !           164: .fi
        !           165: .RE
        !           166: .PP
        !           167: .I Mtype
        !           168: is the received message's type as specified by the sending process.
        !           169: .I Mtext
        !           170: is the text of the message.
        !           171: .I Msgsz
        !           172: specifies the size in bytes of
        !           173: .IR mtext.
        !           174: The received message is truncated to
        !           175: .IR msgsz " bytes"
        !           176: if it is larger than
        !           177: .I msgsz
        !           178: and
        !           179: .RI ( msgflg " &"
        !           180: .SM
        !           181: .BR MSG_NOERROR\*S )
        !           182: is ``true''.
        !           183: The truncated part of the message is lost and no indication of the truncation is
        !           184: given to the calling process.
        !           185: .PP
        !           186: .I Msgtyp
        !           187: specifies the type of message requested as follows:
        !           188: .IP
        !           189: If
        !           190: .I msgtyp
        !           191: is equal to 0, the first message on the queue is received.
        !           192: .IP
        !           193: If
        !           194: .I msgtyp
        !           195: is greater than 0, the first message of type
        !           196: .I msgtyp
        !           197: is received.
        !           198: .IP
        !           199: If
        !           200: .I msgtyp
        !           201: is less than 0,
        !           202: the first message of the lowest type that is less than or equal
        !           203: to the absolute value of
        !           204: .I msgtyp
        !           205: is received.
        !           206: .PP
        !           207: .I Msgflg
        !           208: specifies the action to be taken if a message of the desired type
        !           209: is not on the queue.
        !           210: These are as follows:
        !           211: .IP
        !           212: If
        !           213: .RI ( msgflg " & "
        !           214: .SM
        !           215: .BR IPC_NOWAIT\*S )
        !           216: is ``true'', the calling process will return immediately with a return value
        !           217: of \-1 and
        !           218: .I errno
        !           219: set to
        !           220: .SM
        !           221: ENOMSG\*S.
        !           222: .IP
        !           223: If 
        !           224: .RI ( msgflg " & "
        !           225: .SM
        !           226: .BR IPC_NOWAIT\*S )
        !           227: is ``false'', the calling process will suspend execution until one of the
        !           228: following occurs:
        !           229: .RS 8
        !           230: .IP
        !           231: A message of the desired type is placed on the queue.
        !           232: .IP
        !           233: .I Msqid
        !           234: is removed from the system.
        !           235: When this occurs,
        !           236: .I errno
        !           237: is set equal to
        !           238: .SM
        !           239: \%EIDRM\*S,
        !           240: and a value of \-1 is returned.
        !           241: .IP
        !           242: The calling process receives a signal that is to be caught.
        !           243: In this case a message is not received and the calling process resumes
        !           244: execution in the manner prescribed in
        !           245: .IR signal (2)).
        !           246: .RE
        !           247: .PP
        !           248: .I Msgrcv
        !           249: will fail and no message will be received if one or more of the following are
        !           250: true:
        !           251: .TP 15
        !           252: .SM
        !           253: \%[EINVAL]
        !           254: .I Msqid
        !           255: is not a valid message queue identifier.
        !           256: .TP
        !           257: .SM
        !           258: \%[EACCES]
        !           259: Operation permission is denied to the calling process.
        !           260: .TP
        !           261: .SM
        !           262: \%[EINVAL]
        !           263: .I Msgsz
        !           264: is less than 0.
        !           265: .TP
        !           266: .SM
        !           267: \%[E2BIG]
        !           268: Mtext is greater than
        !           269: .I msgsz
        !           270: and
        !           271: .RI ( msgflg " &"
        !           272: .SM
        !           273: .BR MSG_NOERROR\*S )
        !           274: is ``false''.
        !           275: .TP
        !           276: .SM
        !           277: \%[ENOMSG]
        !           278: The queue does not contain a message of the desired type and
        !           279: .RI ( msgtyp " & "
        !           280: .SM
        !           281: .BR IPC_NOWAIT\*S )
        !           282: is ``true''.
        !           283: .TP
        !           284: .SM
        !           285: \%[EFAULT]
        !           286: .I Msgp
        !           287: points to an illegal address.
        !           288: .PP
        !           289: Upon successful completion, the following actions are taken with respect to
        !           290: the data structure associated with
        !           291: .IR msqid
        !           292: (see intro (2)).
        !           293: .IP
        !           294: .B Msg_qnum
        !           295: is decremented by 1.
        !           296: .IP
        !           297: .B Msg_lrpid
        !           298: is set equal to the process
        !           299: .SM ID
        !           300: of the calling process.
        !           301: .IP
        !           302: .B Msg_rtime
        !           303: is set equal to the current time.
        !           304: .SH RETURN VALUES
        !           305: .RI If " msgsnd " or " msgrcv"
        !           306: return due to the receipt of a signal, a value of \-1 is returned to the
        !           307: calling process and
        !           308: .I errno
        !           309: is set to
        !           310: .SM
        !           311: \%EINTR\*S.
        !           312: If they return due to removal of
        !           313: .I msqid
        !           314: from the system, a value of \-1 is returned and
        !           315: .I errno
        !           316: is set to
        !           317: .SM
        !           318: \%EIDRM\*S.
        !           319: .PP
        !           320: Upon successful completion, the return value is as follows:
        !           321: .IP
        !           322: .I Msgsnd
        !           323: returns a value of 0.
        !           324: .IP
        !           325: .I Msgrcv
        !           326: returns a value equal to the number of bytes actually placed into
        !           327: .IR mtext .
        !           328: .PP
        !           329: Otherwise, a value of \-1 is returned and
        !           330: .I errno
        !           331: is set to indicate the error.
        !           332: .SH SEE ALSO
        !           333: intro(2), msgctl(2), msgget(2), signal(2).
        !           334: .\"    @(#)msgop.2     6.2 of 9/6/83

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.