index.txt
MESG(4) Kernel Interfaces Manual MESG(4) NAME mesg, rmesg - message line discipline modules SYNOPSIS #include <sys/stream.h> DESCRIPTION After the mesg_ld line discipline module has been pushed on a stream (see stream(4)), all data and control blocks appearing on the stream are turned into structured messages to be read by the user process, and information written on the stream is interpreted as messages in the same format. The rmesg_ld line discipline is exactly the opposite: writes, and control operations, on the stream are turned into data mes‐ sages, and arriving data messages are turned into controls. Messages written on a stream are interpreted as containing a header of the form struct { short type; short size; }; followed by the contents of the message. The size is the size of the message exclusive of header. It is limited, but to a large number (at least 4KB). Messages may be written piecemeal, and several messages may be written at once, but messages will be read at most one at a time. If an impossible message is written, the stream is shut down. These message types are possible: M_DATA (0) Ordinary data. M_BREAK (01) A line break on an RS232-style asynchronous connection. No associated data. M_HANGUP (02) When received, indicates that the other side has gone away. It is interpreted by the message processor as well as transmitted, and after it is read the stream is useless. No associated data. M_DELIM (03) A delimiter that introduces a record boundary in the data. No associated data. M_IOCTL (06) An ioctl(4) request. The associated data is an integer containing the ioctl code, followed by the object passed with the ioctl call that generated the message. It is mandatory to reply with M_IOCACK or M_IOCNAK. M_DELAY (07) A real-time delay. One byte of data, giving the number of sixtieths (fiftieths) of a second delay time. M_CTL (010) Device-specific control message. M_SIGNAL (0101) Generate signal number given in the 1-byte message. M_FLUSH (0102) Flush input and output queue if possible. M_STOP (0103) Stop transmission immediately (used, for example, in conjunction with XON-XOFF flow control. M_START (0104) Restart transmission after M_STOP. M_IOCACK (0105) Positive acknowledgement of M_IOCTL message. At the other end, any included data will be stored through the pointer given in the ioctl call. M_IOCNAK (0106) Negative acknowledgement of M_IOCTL. A 1-byte message, if present, will be used as the return code for the failing ioctl. M_CLOSE (0107) Used internally in Datakit call supervision. SEE ALSO stream(4) BUGS The format of arguments to M_IOCTL is machine dependent. Sufficient unto the day is the nonportability thereof. If incorrectly formatted data is written to mesg, the stream may be ir‐ retrievably clogged. MESG(4)