Annotation of researchv10dc/man/man4/mesgld.4, revision 1.1.1.1

1.1       root        1: .TH MESGLD 4
                      2: .CT 2 comm_mach
                      3: .SH NAME
                      4: mesg_ld, rmesg_ld \- message line discipline modules
                      5: .SH SYNOPSIS
                      6: .B #include <sys/types.h>
                      7: .br
                      8: .B #include <sys/stream.h>
                      9: .SH DESCRIPTION
                     10: .I Mesg_ld
                     11: and
                     12: .I rmesg_ld
                     13: turn internal stream messages
                     14: into ordinary data and vice versa.
                     15: They supply a way to splice a stream connection together
                     16: through a process or across a network connection.
                     17: The messages represent ordinary data
                     18: and various control operations.
                     19: .PP
                     20: After
                     21: .IR mesg_ld
                     22: has been pushed on a stream,
                     23: .IR read (2)
                     24: on the stream returns encoded messages;
                     25: .I write
                     26: is expected to supply messages in the same coding.
                     27: An encoded message consists of a header
                     28: followed by zero or more bytes of associated data.
                     29: The header,
                     30: as defined in
                     31: .BR <sys/stream.h> ,
                     32: is of the form
                     33: .IP
                     34: .EX
                     35: struct mesg {
                     36:        char    type;
                     37:        unsigned char   magic;
                     38:        unsigned char   losize, hisize;
                     39: };
                     40: #define        MSGMAGIC        0345
                     41: #define        MSGHLEN 4       /* true length of struct mesg in bytes */
                     42: .EE
                     43: .LP
                     44: The header is
                     45: .B MSGHLEN
                     46: bytes long;
                     47: beware that this is not always the same as
                     48: .LR "sizeof(struct mesg)" .
                     49: The
                     50: .B magic
                     51: field contains the constant
                     52: .BR MSGMAGIC ,
                     53: to help prevent interpreting bad data as a message header.
                     54: There are
                     55: .B "losize+(hisize<<8)"
                     56: bytes of associated data.
                     57: .PP
                     58: Messages may be written in pieces,
                     59: or several messages may be written at once.
                     60: At most one message will be read at a time.
                     61: If an impossible message is written,
                     62: the stream may be shut down.
                     63: .PP
                     64: .IR Rmesg_ld
                     65: is exactly the opposite of
                     66: .IR mesg_ld .
                     67: It is intended for use with devices
                     68: that generate data containing encoded messages.
                     69: Here is a list of message types,
                     70: defined in
                     71: .BR <sys/stream.h> :
                     72: .TF M_HANGUP
                     73: .TP
                     74: .B M_DATA
                     75: (0)
                     76: Ordinary data.
                     77: .TP
                     78: .B M_BREAK
                     79: (01)
                     80: A line break on an RS232-style asynchronous connection.
                     81: No associated data.
                     82: .TP
                     83: .B M_HANGUP
                     84: (02)
                     85: When received, indicates that the other side has gone away.
                     86: Thereafter the stream is useless.
                     87: No associated data.
                     88: .TP
                     89: .B M_DELIM
                     90: (03)
                     91: A delimiter that introduces a record boundary in the data.
                     92: No associated data.
                     93: .TP
                     94: .B M_IOCTL
                     95: (06)
                     96: An
                     97: .IR ioctl (2)
                     98: request.
                     99: The associated data is a four-byte integer
                    100: containing the
                    101: function code,
                    102: least significant byte first,
                    103: followed by some amount of associated data.
                    104: An
                    105: .B M_IOCACK
                    106: or
                    107: .BR M_IOCNAK 
                    108: reply is expected.
                    109: .TP
                    110: .B M_DELAY
                    111: (07)
                    112: A real-time delay.
                    113: One byte of data, giving the number of clock ticks of
                    114: delay time.
                    115: .TP
                    116: .B M_CTL
                    117: (010)
                    118: Device-specific control message.
                    119: .TP
                    120: .B M_SIGNAL
                    121: (0101)
                    122: Generate signal number given in the one-byte message.
                    123: .TP
                    124: .B M_FLUSH
                    125: (0102)
                    126: Flush input and output queue if possible.
                    127: .TP
                    128: .B M_STOP
                    129: (0103)
                    130: Stop transmission immediately.
                    131: .TP
                    132: .B M_START
                    133: (0104)
                    134: Restart transmission after
                    135: .BR M_STOP .
                    136: .TP
                    137: .B M_IOCACK
                    138: (0105)
                    139: Successful reply to
                    140: .BR M_IOCTL .
                    141: Associated data is to be written back to the caller.
                    142: .TP
                    143: .B M_IOCNAK
                    144: (0106)
                    145: Failed reply to
                    146: .BR M_IOCTL .
                    147: A single-byte message,
                    148: if present,
                    149: will be returned in
                    150: .CW errno
                    151: by the failing
                    152: .IR ioctl .
                    153: .TP
                    154: .B M_PRICTL
                    155: (0107)
                    156: High-priority
                    157: device-specific control message.
                    158: .PD
                    159: .PP
                    160: .SH SEE ALSO
                    161: .IR stream (4)
                    162: .SH BUGS
                    163: The format of arguments to
                    164: .B M_IOCTL
                    165: is machine dependent.
                    166: .br
                    167: The amount of associated data
                    168: is limited, but large (>4K).

unix.superglobalmegacorp.com

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