Annotation of researchv10dc/man/manb/mpxio.5, revision 1.1

1.1     ! root        1: .TH MPXIO 5 
        !             2: .UC 4
        !             3: .SH NAME
        !             4: mpxio \- multiplexed i/o
        !             5: .SH SYNOPSIS
        !             6: .B #include <sys/mx.h>
        !             7: .PP
        !             8: .B #include <sgtty.h>
        !             9: .SH DESCRIPTION
        !            10: Data transfers on
        !            11: mpx files
        !            12: (see
        !            13: .IR mpx (2))
        !            14: are multiplexed by
        !            15: imposing
        !            16: a record structure  on the io stream.
        !            17: Each record represents  data
        !            18: from/to
        !            19: a particular channel or 
        !            20: a control or status message associated with a particular channel.
        !            21: .PP
        !            22: The prototypical data record read from an mpx file is as follows
        !            23: .PP
        !            24: .in +.5i
        !            25: .nf
        !            26: struct input_record {
        !            27:        short   index;
        !            28:        short   count;
        !            29:        short   ccount;
        !            30:        char    data[];
        !            31: };
        !            32: .PP
        !            33: .fi
        !            34: where
        !            35: .I index
        !            36: identifies the channel,
        !            37: and
        !            38: .I count
        !            39: specifies the number of characters in
        !            40: .I data.
        !            41: If
        !            42: .I count
        !            43: is zero,
        !            44: .I ccount
        !            45: gives the size of
        !            46: .I data,
        !            47: and the record is  a control or status message.
        !            48: Although
        !            49: .I count
        !            50: or
        !            51: .I ccount
        !            52: might be odd,
        !            53: the operating system aligns records
        !            54: on short (i.e. 16\-bit) boundaries
        !            55: by skipping bytes when necessary.
        !            56: .PP
        !            57: Data written to an mpx file must be formatted as an array
        !            58: of record structures defined as follows
        !            59: .PP
        !            60: .in +.5i
        !            61: .nf
        !            62: struct output_record {
        !            63:        short   index;
        !            64:        short   count;
        !            65:        short   ccount;
        !            66:        char    *data;
        !            67: };
        !            68: .fi
        !            69: .PP
        !            70: where the data portion of the record is referred
        !            71: to indirectly and the other cells have the same interpretation
        !            72: as in
        !            73: .I input_record.
        !            74: .PP
        !            75: The 
        !            76: control messages listed below may be read from
        !            77: a multiplexed file descriptor.
        !            78: They are presented as two 16-bit integers:
        !            79: the first number is the message code
        !            80: (defined in
        !            81: .IR <sys/mx.h> ),
        !            82: the second is an optional parameter meaningful
        !            83: only with M_WATCH, M_BLK, and M_SIG.
        !            84: .PP
        !            85: .TP "\w'M_WATCH  'u"
        !            86: M_WATCH
        !            87: a process `wants to attach' on this channel.
        !            88: The second parameter is the 16-bit 
        !            89: user-id of the process that executed the open.
        !            90: .TP
        !            91: M_CLOSE
        !            92: the channel is closed.
        !            93: This message is generated when the last 
        !            94: file descriptor referencing
        !            95: a channel is closed.
        !            96: The
        !            97: .I detach
        !            98: command
        !            99: (see
        !           100: .IR mpx (2)
        !           101: should be used in response to this message.
        !           102: .TP
        !           103: M_EOT
        !           104: indicates logical end of file on a channel.
        !           105: If the channel is joined to a typewriter,
        !           106: EOT (control-d)
        !           107: will cause the M_EOT message 
        !           108: under the conditions specified in
        !           109: .IR tty (4)
        !           110: for  end of file.
        !           111: If the channel is attached to a process,
        !           112: M_EOT will be generated whenever the process
        !           113: writes zero bytes on the channel.
        !           114: .TP
        !           115: M_BLK
        !           116: if non-blocking mode has been enabled on an
        !           117: mpx file descriptor
        !           118: .I xd
        !           119: by executing
        !           120: .IR "ioctl(xd, MXNBLK, 0)" ,
        !           121: write operations on the  file are truncated in the kernel
        !           122: when internal queues become full.
        !           123: This is done on a per-channel basis:
        !           124: the parameter 
        !           125: is a count of the number of characters
        !           126: not transferred to the channel on which
        !           127: M_BLK is received.
        !           128: .TP
        !           129: M_UBLK
        !           130: is generated for a channel
        !           131: after M_BLK when the internal queues have
        !           132: drained below a threshold.
        !           133: .TP
        !           134: M_SIG
        !           135: is generated instead of a normal asynchronous
        !           136: signal on channels that are joined to typewriters.
        !           137: The parameter is the signal number.
        !           138: .PP
        !           139: Two other messages may be generated by the kernel.
        !           140: As with other messages, the first
        !           141: 16-bit quantity is the message code.
        !           142: .br
        !           143: .TP "\w'M_IOCTL  'u"
        !           144: M_OPEN
        !           145: is generated in conjunction with 
        !           146: `listener' mode (see
        !           147: .IR mpx (2)).
        !           148: The uid of the calling process follows the message code
        !           149: as with M_WATCH.
        !           150: This is followed by a null-terminated string
        !           151: which is the name of the file being opened.
        !           152: .TP
        !           153: M_IOCTL
        !           154: is generated for a channel connected
        !           155: to a process
        !           156: when that process executes the
        !           157: .I "ioctl(fd, cmd, &vec)"
        !           158: call on the channel file descriptor.
        !           159: The M_IOCTL code is followed by
        !           160: the
        !           161: .I cmd
        !           162: argument given to
        !           163: .I ioctl
        !           164: followed by 
        !           165: the contents of the structure
        !           166: .I vec.
        !           167: It is assumed,
        !           168: not needing a better compromise at this time,
        !           169: that the length of
        !           170: .I vec
        !           171: is determined by
        !           172: .I "sizeof (struct sgttyb)"
        !           173: as declared in
        !           174: .IR <sgtty.h> .
        !           175: .in -1i
        !           176: .PP
        !           177: Two control messages are understood by the operating system.
        !           178: M_EOT may be sent through an mpx file to a channel.
        !           179: It is equivalent to propagating a zero-length record
        !           180: through the channel;
        !           181: i.e. the channel is allowed to drain and the process or
        !           182: device at the other end receives a zero-length
        !           183: transfer before data starts flowing through the channel again.
        !           184: M_IOANS can also be sent through a channel to reply to a M_IOCTL.
        !           185: The format is identical to that received from M_IOCTL.
        !           186: .SH SEE ALSO
        !           187: mpx(2)

unix.superglobalmegacorp.com

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