|
|
1.1 root 1: .TH CONS 3
2: .SH NAME
3: cons \- console, clocks, process/process group ids, user, null, klog, stats, lights, noise, sysstat, hz, swap, key, hostowner, hostdomain, authenticate, authcheck, authenticator
4: .SH SYNOPSIS
5: .nf
6: .B bind #c /dev
7:
8: .B /dev/authcheck
9: .B /dev/authenticate
10: .B /dev/authenticator
11: .B /dev/clock
12: .B /dev/cons
13: .B /dev/consctl
14: .B /dev/cputime
15: .B /dev/hostdomain
16: .B /dev/hostowner
17: .B /dev/hz
18: .B /dev/key
19: .B /dev/klog
20: .B /dev/lights
21: .B /dev/msec
22: .B /dev/noise
23: .B /dev/null
24: .B /dev/pgrpid
25: .B /dev/pid
26: .B /dev/ppid
27: .B /dev/swap
28: .B /dev/sysname
29: .B /dev/sysstat
30: .B /dev/time
31: .B /dev/user
32: .fi
33: .SH DESCRIPTION
34: The console device serves a one-level directory
35: giving access to the console and
36: miscellaneous information.
37: .PP
38: Reading the
39: .B cons
40: file returns characters typed on the keyboard.
41: Normally, characters are buffered to enable erase and kill processing.
42: A control-U,
43: .LR ^U ,
44: typed at the keyboard
45: .I kills
46: the current input line (removes all characters
47: from the buffer of characters
48: not yet read via
49: .BR cons ),
50: and a backspace
51: .I erases
52: the previous non-kill, non-erase character from the input buffer.
53: Killing and erasing only delete characters back to, but not including,
54: the last newline.
55: Characters typed at the keyboard actually produce 16-bit runes (see
56: .IR utf (6)),
57: but the runes are translated into the variable-length
58: .SM UTF
59: encoding (see
60: .IR utf (6))
61: before putting them into the buffer.
62: A
63: .IR read (2)
64: of length greater than zero causes the process to wait until a
65: newline or a
66: .L ^D
67: ends the buffer, and then returns as much of the buffer as the argument
68: to
69: .B read
70: allows, but only up to one complete line.
71: A terminating
72: .L ^D
73: is not put into the buffer.
74: If part of the line remains, the next
75: .B read
76: will return bytes from that remainder and not part of any new line
77: that has been typed since.
78: .PP
79: If
80: the string
81: .B rawon
82: has been written to the
83: .B consctl
84: file and the file is still open,
85: .B cons
86: is in
87: .IR "raw mode" :
88: characters are not echoed as they are typed,
89: backspace and
90: .L ^D
91: are not treated specially,
92: and characters are available to
93: .I read
94: as soon as they are typed.
95: Ordinary mode is reentered when
96: .B rawoff
97: is written to
98: .B consctl
99: or this file is closed.
100: .PP
101: A
102: .I write
103: (see
104: .IR read (2))
105: to
106: .B cons
107: causes the characters to be printed on the console screen.
108: .PP
109: The
110: .B null
111: file throws away anything written to it
112: and always returns zero bytes when read.
113: .PP
114: The
115: .B klog
116: file contains the tail of messages written by kernel logging statements.
117: .PP
118: Writing a number (as plain text) to the
119: .B lights
120: device directs any lights that are available to turn on and off.
121: The bits of the number are mapped to the lights in a processor-dependent way.
122: .PP
123: Writing two blank- or tab-separated numbers to the
124: .B noise
125: device causes the machine to make a tone, if possible.
126: The first number is the frequency, in Hertz, and the second is
127: the duration, in milliseconds.
128: .PP
129: The
130: .B hostdomain
131: file contains the name of the authentication domain that
132: this host belongs to; see
133: .IR auth (6).
134: Only the user named in
135: .B /dev/hostowner
136: may write this.
137: .PP
138: The
139: .B hostowner
140: file contains the name of the user that owns the console device files.
141: The hostowner also has group permissions for any local devices.
142: .PP
143: The
144: .B key
145: file is used to set the DES key used for encryption.
146: Each machine has one key.
147: Only the user named in
148: .B /dev/hostowner
149: may write this.
150: .PP
151: The
152: .B authenticate
153: file is used to authenticate new users to the kernel; see
154: .IR auth (6).
155: After an open, the first read returns a ticket request message
156: of the following form:
157: .EX
158: char num;
159: char authid[28];
160: char authdom[48];
161: char chal[8];
162: char hostid[28];
163: char uid[28];
164: .EE
165: Here
166: .I num
167: is 1,
168: .I authid
169: and
170: .I hostid
171: are the contents of
172: .BR hostowner ,
173: and
174: .I authdom
175: is the contents of
176: .BR hostdomain .
177: .I Chal
178: is an 8 byte random challenge created by the kernel.
179: A subsequent write of a valid ticket encrypted with the key contained in
180: .B key
181: changes the user name of the writing process to the value of
182: .I suid
183: in the ticket.
184: The ticket is of the form:
185: .EX
186: char num;
187: char chal[8];
188: char cuid[28];
189: char suid[28];
190: char noncekey[7];
191: .EE
192: The ticket is valid if
193: .I num
194: is 64 and
195: .I chal
196: matches the challenge in the ticket request.
197: Writing an invalid ticket generates an error.
198: A read following a successful write yields an authenticator
199: message of the form:
200: .EX
201: char num;
202: char chal[8];
203: char id[4];
204: .EE
205: The authenticator is encrypted in
206: .I noncekey
207: from the ticket.
208: .I Num
209: is 66,
210: .IR id [0-4]
211: are 0,
212: and
213: .I chal
214: matches the challenge in the original ticket request.
215: .PP
216: The
217: .B authenticator
218: file is used to generate an authenticator from a ticket.
219: One writes a ticket encrypted with the key contained in
220: .BR key ,
221: followed, optionally, by a 4-byte
222: .IR id ;
223: a missing
224: .I id
225: defaults to zero.
226: If the client uid matches the current user, a subsequent read yields
227: an authenticator for that ticket with the given
228: .IR id .
229: .PP
230: The
231: .B authcheck
232: file is used to match authenticators to tickets.
233: A write of an authenticator appended to the end of a ticket
234: succeeds if the ticket is encrypted with
235: the key contained in
236: .BR key ,
237: the ticket's
238: .I num
239: is 65,
240: the authenticator is encrypted with the ticket's
241: .BR noncekey ,
242: the authenticator's and ticket's
243: .IR chal 's
244: match, the authenticator's
245: .I num
246: is 66, and the authenticator's
247: .I id
248: is 0. Alternatively, the write may consist of ticket, authenticator,
249: .IR chal ,
250: and
251: .IR id ,
252: in which case the given
253: .I chal
254: and
255: .I id
256: must match those of the authenticator.
257: .PP
258: The
259: .B user
260: file contains the name of the user associated with the current process.
261: Any process can change to user
262: .B none
263: by writing
264: .B none
265: to this file.
266: .PP
267: The rest of the files contain (mostly) read-only strings.
268: Each string has a fixed length: a
269: .IR read (2)
270: of more than that gives a result of that fixed length (the result does not
271: include a terminating zero byte);
272: a
273: .I read
274: of less than that length leaves the file offset so the
275: rest of the string (but no more) will be read the next time.
276: To reread the file without closing it,
277: .I seek
278: must be used to reset the offset.
279: When the file contains numeric data, each number is formatted
280: in decimal as an 11-digit number with leading blanks and
281: one trailing blank: twelve bytes total.
282: .PP
283: The
284: .B cputime
285: file holds 6 numbers, containing the time in milliseconds
286: that the current process has spent in user mode, system calls,
287: real elapsed time, and then the time spent, by exited children and their descendants,
288: in user mode, system calls, and real elapsed time.
289: .PP
290: The
291: .B clock
292: file holds two numbers: the number of
293: clock ticks since booting followed by the number of clock ticks
294: in a second.
295: .PP
296: The
297: .B sysname
298: file holds the textual name of the machine, e.g.
299: .BR kremvax ,
300: if known.
301: .PP
302: The
303: .B sysstat
304: file holds 8 numbers:
305: processor number, context switches, interrupts, system calls, page faults,
306: tlb faults, tlb purges, and load average.
307: The load average is in units of milli-CPUs and is decayed over time;
308: the others are total counts from boot time.
309: If the machine is a multiprocessor,
310: .B sysstat
311: holds one line per processor.
312: Writing anything to
313: .B sysstat
314: resets all of the counts on all processors.
315: .PP
316: The
317: .B swap
318: device holds a string of the form
319: .IP
320: .IB m1 / m2
321: .B memory
322: .IB s1 / s2
323: .B swap
324: .PP
325: These give, for each of
326: internal memory and the swapping area,
327: the number of pages used and the total available.
328: These numbers are not blank padded.
329: To turn on swapping, write to
330: .B swap
331: the textual file descriptor number of a file or device on which to swap.
332: See
333: .IR swap (8).
334: .PP
335: The other files served by the
336: .I cons
337: device are all single numbers:
338: .TP 10
339: .B hz
340: frequency of the system clock
341: .TP
342: .B msec
343: number of milliseconds since booting
344: .TP
345: .B pgrpid
346: process group number
347: .TP
348: .B pid
349: process number
350: .TP
351: .B ppid
352: parent's process number
353: .TP
354: .B time
355: number of seconds since the epoch 00:00:00 GMT, Jan. 1, 1970.
356: (Can be written once, to set at boot time.)
357: .SH SEE ALSO
358: .IR bit (3),
359: .IR keyboard (6),
360: .IR auth (6),
361: .IR utf (6),
362: .IR swap (8)
363: .SH SOURCE
364: .B /sys/src/9/port/devcons.c
365: .SH BUGS
366: For debugging, two control-T's followed by a letter
367: generate console output:
368: .L ^T^Tp
369: prints data about processes,
370: .L ^T^Tq
371: prints data about streams,
372: .L ^T^Tm
373: prints data about the mount device,
374: .L ^T^Tb
375: prints data about the bitblt device, and
376: .L ^T^Tx
377: prints data about kernel memory allocation.
378: .PP
379: The system can be rebooted by typing
380: .LR ^T^Tr .
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.