Annotation of 43BSDReno/old/man/mpxio.5, revision 1.1

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

unix.superglobalmegacorp.com

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