|
|
1.1 root 1: .TH DK 4
2: .CT 2 comm_mach
3: .SH NAME
4: dk, dkp_ld, unixp_ld, cmc_ld \- Datakit interface and protocols
5: .SH SYNOPSIS
6: .B #include <sys/dkio.h>
7: .SH DESCRIPTION
8: These device drivers
9: and line disciplines
10: are used to connect to a Datakit network.
11: Normally the programs in
12: .IR dkmgr (8)
13: do all the work.
14: .PP
15: Several combinations
16: of hardware and software
17: may be used to connect a system to Datakit:
18: .IP
19: The
20: .I dk
21: driver
22: works with a
23: DR11-C
24: or
25: DRV11-J
26: connected through an adapter box
27: to a Datakit CPM-422.
28: The host computer does all the protocol work.
29: .IP
30: The
31: .I kdi
32: driver works with a
33: KMC11-B
34: and one of several line units
35: (KDI, DUBHI, KMS11-P)
36: connected to one of several Datakit or ISN interface boards.
37: The KMC11 runs microcode that handles the URP protocol.
38: .IP
39: The experimental
40: .I kmcdk
41: driver works with a KMC11-B
42: and a line unit,
43: as above,
44: but the KMC11 runs different microcode
45: implementing a simple DMA engine,
46: and the host does all the protocol work.
47: This is slower,
48: but rather more robust,
49: than the
50: .I kdi
51: setup.
52: .IP
53: The experimental
54: .I cure
55: driver works with a custom-built microprocessor board
56: connected to a Datakit, ISN, or Hyperkit
57: fiber interface.
58: The host does all the protocol work.
59: .PP
60: Each minor device number
61: represents a Datakit channel;
62: the device number is the channel number.
63: The
64: .I kdi
65: driver allows only 96 channels per KMC11-line unit pair;
66: devices 96-191 are channels 0-95 on a second pair,
67: if present,
68: and devices 192-255 are channels 0-63 on a third.
69: For the other drivers,
70: there may be only one hardware interface,
71: which may have up to 256 channels.
72: .PP
73: .PP
74: Usually there is one interface,
75: with files in directory
76: .FR /dev/dk .
77: See
78: .IR dkmgr (8)
79: for more about naming conventions.
80: .PP
81: .I Dkp_ld
82: is a stream line discipline
83: implementing the URP protocol.
84: The
85: .I kdi
86: driver makes its own URP arrangements;
87: other interfaces need the line discipline.
88: A separate copy of
89: .I dkp_ld
90: must be pushed on each active channel.
91: .PP
92: .I Cmc_ld
93: and
94: .I unixp_ld
95: are line disciplines set up calls handle and controller handshake messages.
96: .I Cmc_ld
97: runs a Research-only call setup protocol;
98: .I unixp_ld
99: runs the standard one.
100: One copy of the appropriate line discipline
101: must be pushed on the common signaling channel
102: to deal with occasional controller keep-alive
103: and maintenance messages.
104: Other copies of the line discipline
105: come and go as calls are placed.
106: .PP
107: These
108: .I ioctl
109: calls are provided by the device drivers:
110: .nr pI \w'\f5DIOCSTREAM \fP'u
111: .PD 0
112: .TP \n(pIu
113: .B DIOCNXCL
114: Allow this channel to be opened many times.
115: By default,
116: if a channel is open,
117: it may not be opened again.
118: The default is restored
119: whenever the channel is completely closed.
120: .TP
121: .B KIOCSHUT
122: Reset the
123: .I kdi
124: driver,
125: hanging up all channels.
126: .PD
127: .PP
128: These
129: .I ioctl
130: calls are provided by the URP processors,
131: .I dkp_ld
132: and
133: .IR kdi :
134: .TP \n(pIu
135: .PD 0
136: .B DIOCSTREAM
137: Don't generate a stream delimiter
138: when this channel receives a
139: BOT
140: trailer.
141: .TP
142: .B DIOCRECORD
143: Insert a stream delimiter after
144: receiving
145: BOT;
146: the default.
147: .TP
148: .B DIOCSCTL
149: The third argument points to a byte;
150: send that as a Datakit control envelope.
151: .TP
152: .B DIOCRCTL
153: The third argument points to a byte;
154: copy the most recently received non-URP control envelope there.
155: Zero means no control
156: has been received since the last call.
157: .TP
158: .B DIOCXWIN
159: Set transmit window size.
160: The third argument points to an array of two long integers.
161: The first number is the maximum size of each URP block;
162: the second is the number of blocks that may be outstanding.
163: Blocks may be no more than 4096 bytes,
164: and the protocol allows no more than eight blocks in a window.
165: A
166: .B KIOCINIT
167: call should follow immediately,
168: or things may go awry.
169: .TP
170: .B KIOCISURP
171: Return success if
172: some URP processor
173: is active on this channel.
174: .TP
175: .B KIOCINIT
176: Initialize URP.
177: .PD
178: .PP
179: These
180: .I ioctl
181: calls are provided by the call setup line disciplines:
182: .TP \n(pIu
183: .PD 0
184: .B DIOCLHN
185: This is the common signalling channel.
186: .TP
187: .B DIOCHUP
188: Tell the controller to initialize,
189: hanging up all channels.
190: .TP
191: .B DIOCSTOP
192: Temporarily hold back received data,
193: so it won't be lost in call setup messages.
194: .TP
195: .B DIOCSTART
196: Release data held by
197: .BR DIOCSTOP .
198: .TP
199: .B DIOCCHAN
200: The third argument points to an integer;
201: fill it in with the number
202: of a free channel for calling out.
203: This is a hint, not a promise;
204: the channel may already be taken by the time it is opened.
205: The caller should be prepared to try again.
206: .SH FILES
207: .F /dev/dk
208: .SH SEE ALSO
209: .IR dkmgr (8),
210: .IR kmc (8)
211: .br
212: A. G. Fraser and W. T. Marshall, `Data Transport in a
213: Byte Stream Network',
214: .I IEEE J-SAC,
215: (September, 1989)
216: .br
217: .I Datakit VSC Internal Interface Specification,
218: select code 700-283,
219: AT&T Customer Information Center, Indianapolis
220: .SH BUGS
221: .I Dkp_ld
222: and
223: .I kdi
224: insist on using exactly three blocks in a window,
225: no matter what they are told in
226: .BR DIOCXWIN .
227: .br
228: The
229: .I kdi
230: driver has only two block sizes,
231: 28 and 252 bytes.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.