12001-08-11  Tim Waugh  <twaugh@redhat.com>
2
3	* serial.c (get_pci_port): Deal with awkward Titan cards.
4
51998-08-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>
6
7	* serial.c (rs_open): Correctly decrement the module in-use count
8		on errors.
9
10Thu Feb 19 14:24:08 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
11
12	* tty_io.c (tty_name): Remove the non-reentrant (and non-SMP safe)
13		version of tty_name, and rename the reentrant _tty_name
14		function to be tty_name.
15		(tty_open): Add a warning message stating callout devices
16		are deprecated.
17
18Mon Dec  1 08:24:15 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
19
20	* tty_io.c (tty_get_baud_rate): Print a warning syslog if the
21		tty->alt_speed kludge is used; this means the system is
22		using the deprecated SPD_HI ioctls.
23
24Mon Nov 24 10:37:49 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
25
26	* serial.c, esp.c, rocket.c: Change drivers to take advantage of
27	 	tty_get_baud_rate().
28	
29	* tty_io.c (tty_get_baud_rate): New function which computes the
30		correct baud rate for the tty.  More factoring out of
31		common code out of the serial driver to the high-level tty
32		functions....
33
34Sat Nov 22 07:53:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
35
36	* serial.c, esp.c, rocket.c: Add tty->driver.break() routine, and
37 		allow high-level tty code to handle the break and soft
38 		carrier ioctls.
39	
40	* tty_ioctl.c (n_tty_ioctl): Support TIOCGSOFTCAR and
41 		TIOCSSOFTCAR, so that device drivers don't have to support
42 		it.
43
44	* serial.c (autoconfig): Change 16750 test to hopefully eliminate
45		false results by people with strange 16550As being
46		detected as 16750s.  Hopefully 16750s will still be
47		detected as 16750, and other weird UARTs won't get poorly
48		autodetected.  If this doesn't work, I'll have to disable
49		the auto identification for the 16750.
50
51	* tty_io.c (tty_hangup): Now actually do the tty hangup
52		processing during the timer processing, and disable
53		interrupts while doing the hangup processing.  This avoids
54		several nasty race conditions which happened when the
55		hangup processing was done asynchronously.
56		(tty_ioctl): Do break handling in the tty driver if
57		driver's break function is supported.  
58		(tty_flip_buffer_push): New exported function which should
59		be used by drivers to push characters in the flip buffer
60		to the tty handler.  This may either be done using a task
61		queue function for better CPU efficiency, or directly for
62		low latency operation.
63
64	* serial.c (rs_set_termios): Fix bug rs_set_termios when
65		transitioning away from B0, submitted by Stanislav
66		Voronyi. 
67
68Thu Jun 19 20:05:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
69
70	* serial.c (begin_break, end_break, rs_ioctl): Applied patch
71		to support BSD ioctls to set and clear the break
72		condition explicitly.
73
74	* console.c (scrup, scrdown, insert_line, delete_line): Applied
75		fix suggested by Aaron Tiensivu to speed up block scrolls
76		up and down.
77
78	* n_tty.c (opost_block, write_chan): Added a modified "fast
79 		console" patch which processes a block of text via
80		"cooking" efficiently.
81
82Wed Jun 18 15:25:50 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
83
84	* tty_io.c (init_dev, release_dev): Applied fix suggested by Bill
85		Hawes to prevent race conditions in the tty code.
86
87	* n_tty.c (n_tty_chars_in_buffer): Applied fix suggested by Bill
88		Hawes so that n_tty_chars_in_buffer returns the correct
89		value in the case when the tty is in cannonical mode.  (To
90		avoid a pty deadlock with telnetd.)
91
92Thu Feb 27 01:53:08 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
93
94	* serial.c (change_speed): Add support for the termios flag
95		CMSPAR, which allows the user to select stick parity.
96		(i.e, if PARODD is set, the parity bit is always 1; if
97		PARRODD is not set, then the parity bit is always 0).
98
99Wed Feb 26 19:03:10 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
100
101	* serial.c (cleanup_module): Fix memory leak when using the serial
102		driver as a module; make sure tmp_buf gets freed!
103
104Tue Feb 25 11:01:59 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
105
106	* serial.c (set_modem_info): Add support for setting and clearing
107		the OUT1 and OUT2 bits.  (For special case UART's, usually
108		for half-duplex.)
109		(autoconfig, change_speed): Fix TI 16750 support.
110
111Sun Feb 16 00:14:43 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
112
113	* tty_io.c (release_dev): Add sanity check to make sure there are
114		no waiters on tty->read_wait or tty->write_wait.
115
116	* serial.c (rs_init): Don't autoconfig a device if the I/O region
117		is already reserved.
118
119	* serial.c (serial_proc_info): Add support for /proc/serial.
120
121Thu Feb 13 00:49:10 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
122
123	* serial.c (receive_chars): When the UART repotrs an overrun
124 		condition, it does so with a valid character.  Changed to
125 		not throw away the valid character, but instead report the
126		overrun after the valid character.
127
128	* serial.c: Added new #ifdef's for some of the advanced serial
129		driver features.  A minimal driver that only supports COM
130		1/2/3/4 without sharing serial interrupts only takes 17k;
131		the full driver takes 32k.
132		
133Wed Feb 12 14:50:44 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
134
135	* vt.c:
136	* pty.c: 
137	* tty_ioctl.c: 
138	* serial.c: Update routines to use the new 2.1 memory access
139	 	routines.
140
141Wed Dec  4 07:51:52 1996  Theodore Ts'o  <tytso@localhost.mit.edu>
142
143	* serial.c (change_speed): Use save_flags(); cli() and
144		restore_flags() in order to ensure we don't accidentally
145		turn on interrupts when starting up the port.
146		(startup): Move the insertion of serial structure into the
147		IRQ chain earlier into the startup processing.  Interrupts
148		should be off this whole time, but we eventually will want
149		to reduce this window.
150
151Thu Nov 21 10:05:22 1996  Theodore Ts'o  <tytso@localhost.mit.edu>
152
153	* tty_ioctl.c (tty_wait_until_sent): Always check the driver
154 		wait_until_ready routine, even if there are no characters
155 		in the xmit buffer.  (There may be charactes in the device
156 		FIFO.)
157		(n_tty_ioctl): Add new flag tty->flow_stopped which
158 		indicates whether the tty is stopped due to a request by
159 		the TCXONC ioctl (used by tcflow).  If so, don't let an
160 		incoming XOFF character restart the tty.  The tty can only
161 		be restarted by another TCXONC request.
162
163	* tty_io.c (start_tty): Don't allow the tty to be restarted if
164		tty->flow_stopped is true.
165
166	* n_tty.c (n_tty_receive_char): If tty->flow_stopped is true, and
167 		IXANY is set, don't eat a character trying to restart the
168 		tty.
169
170	* serial.c (startup): Remove need for MCR_noint from the
171 		async_struct structure.  Only turn on DTR and RTS if the
172 		baud rate is not zero.
173		(change_speed): More accurately calculate the timeout
174 		value based on the word size.  Move responsibility of
175 		hangup when speed becomes B0 to rs_set_termios()
176		(set_serial_info): When changing the UART type set the
177 		current xmit_fifo_size as well as the permanent
178 		xmit_fifo_size.
179		(rs_ioctl): Fix TCSBRK (used by tcdrain) and TCSBRKP
180 		ioctls to return EINTR if interrupted by a signal.
181		(rs_set_termios): If the baud rate changes to or from B0,
182 		this function is now responsible for setting or clearing
183 		DTR and RTS.  DTR and RTS are only be changed on the
184 		transition to or from the B0 state.
185		(rs_close): Wait for the characters to drain based on
186 		info->timeout.  At low baud rates (50 bps), it may take a
187 		long time for the FIFO to completely drain out!
188		(rs_wait_until_sent): Fixed timeout handling.  Now
189 		releases control to the scheduler, but checks frequently
190 		enough so that the function is sensitive enough to pass
191 		the timing requirements of the NIST-PCTS.
192		(block_til_ready): When opening the device, don't turn on
193 		DTR and RTS if the baud rate is B0.
194
195Thu Nov 14 00:06:09 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
196
197	* serial.c (autoconfig): Fix autoconfiguration problems;
198		info->flags wasn't getting initialized from the state
199		structure.  Put in more paranoid test for the 16750.
200
201Fri Nov  8 20:19:50 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
202
203	* n_tty.c (n_tty_flush_buffer): Only call driver->unthrottle() if
204 		the tty was previous throttled.
205		(n_tty_set_termios, write_chan): Add changes suggested by
206 			Simon P. Allen to allow hardware cooking.
207
208	* tty_ioctl.c (set_termios): If we get a signal while waiting for
209		the tty to drain, return -EINTR.
210	
211	* serial.c (change_speed): Add support for CREAD, as required by
212	 	POSIX.
213
214Sat Nov  2 20:43:10 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
215
216	* serial.c: Wholesale changes.  Added support for the Startech
217 		16650 and 16650V2 chips.  (WARNING: the new startech
218 		16650A may or may not work!)  Added support for the
219 		TI16750 (not yet tested).  Split async_struct into a
220 		transient part (async_struct) and a permanent part
221		(serial_state) which contains the configuration
222 		information for the ports.  Added new driver routines
223 		wait_until_sent() and send_xchar() to help with POSIX
224 		compliance.  Added support for radio clocks which waggle
225		the carrier detect line (CONFIG_HARD_PPS).
226	
227	* tty_ioctl.c (tty_wait_until_sent): Added call to new driver
228		function tty->driver.wait_until_sent(), which returns when
229		the tty's device xmit buffers are drained.  Needed for
230		full POSIX compliance.
231
232		(send_prio_char): New function, called by the ioctl's
233		TCIOFF and TCION; uses the new driver call send_xchar(),
234		which will send the XON or XOFF character at high priority
235		(and even if tty output is stopped).
236
237Wed Jun  5 18:52:04 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
238
239	* pty.c (pty_close): When closing a pty, make sure packet mode is
240	 	cleared.
241
242Sun May 26 09:33:52 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
243
244	* vesa_blank.c (set_vesa_blanking): Add missing verify_area() call.
245
246	* selection.c (set_selection): Add missing verify_area() call.
247
248	* tty_io.c (tty_ioctl): Add missing verify_area() calls.
249
250	* serial.c (rs_ioctl): Add missing verify_area() calls.
251		(rs_init): Allow initialization of serial driver
252		configuration from a module.
253
254	* random.c (extract_entropy): Add missing verify_area call.
255		Don't limit number of characters returned to
256		32,768. Extract entropy is now no longer a inlined
257		function.
258
259		(random_read): Check return value in case extract_entropy
260		returns an error.
261
262		(secure_tcp_sequence_number): New function which returns a
263		secure TCP sequence number.  This is needed to prevent some
264		nasty TCP hijacking attacks.
265	
266		(init_std_data): Initialize using gettimeofday() instead of
267		struct timeval xtime.
268
269		(fast_add_entropy_word, add_entropy_word): Rename the
270		inline function add_entropy_word() to
271		fast_add_entropy_word().  Make add_entropy_word() be the
272		non-inlined function which is used in non-timing critical
273		places, in order to save space.
274
275		(initialize_benchmark, begin_benchmark, end_benchmark): New
276		functions defined when RANDOM_BENCHMARK is defined.  They
277		allow us to benchmark the speed of the
278		add_timer_randomness() call.
279
280		(int_ln, rotate_left): Add two new inline functions with
281		i386 optimized asm instructions.  This speeds up the
282		critical add_entropy_word() and add_timer_randomness()
283		functions, which are called from interrupt handlers.
284
285Tue May  7 22:51:11 1996    <tytso@rsts-11.mit.edu>
286
287	* random.c (add_timer_randomness): Limit the amount randomness
288		that we estimate to 12 bits.  (An arbitrary amount).
289
290		(extract_entropy): To make it harder to analyze the hash
291		function, fold the hash function in half using XOR, and
292		use the folded result as the value to emit to the user.
293		Also, add timer randomness each pass through the
294		exact_entropy call, to increase the amount of unknown
295		values during the extraction process.
296
297		(random_ioctl): Use IOR/IOW definitions to define the
298		ioctl values used by the /dev/random driver.  Allow the
299		old ioctl values to be used for backwards compatibility
300		(for a limited amount of time).
301
302Wed Apr 24 14:02:04 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
303
304	* random.c (add_timer_randomness): Use 2nd derivative as well to
305		better estimate entropy.
306
307		(rand_initialize): Explicitly initialize all the pointers
308		to NULL.  (Clearing pointers using memset isn't portable.)
309		Initialize the random pool with OS-dependent data.
310
311		(random_write): Add sanity checking to the arguments to
312		random_write(), so that bad arguments won't cause a kernel
313		SEGV. 
314
315		(random_read): Update the access time of the device inode
316		when you return data to the user.
317
318		(random_ioctl): Wake up the random_wait channel when there
319		are only WAIT_INPUT_BITS available.  Add more paranoia
320		checks to make sure entropy_count doesn't go beyond the
321		bounds of (0, POOLSIZE).  Add a few missing verify_area
322		checks.  Add support for the RNDCLEARPOOL ioctl, which
323		zaps the random pool.
324
325		(add_timer_randomness): Wake up the random_wait
326		channel only when there are WAIT_INPUT_BITS available.
327
328		(random_select): Allow a random refresh daemon process to
329		select on /dev/random for writing; wake up the daemon when
330		there are less than WAIT_OUTPUT_BITS bits of randomness
331		available.
332
333Tue Apr 23 22:56:07 1996    <tytso@rsts-11.mit.edu>
334
335	* tty_io.c (init_dev): Change return code when user attempts to
336		open master pty which is already open from EAGAIN to EIO,
337		to match with BSD expectations.  EIO is more correct
338		anyway, since EAGAIN implies that retrying will be
339		successful --- which it might be.... Eventually!!
340
341	* pty.c (pty_open, pty_close): Fix wait loop so that we don't
342		busy loop while waiting for the master side to open.
343		Fix tty opening/closing logic.  TTY_SLAVE_CLOSED was
344		renamed to TTY_OTHER_CLOSED, so that the name is more
345		descriptive.  Also fixed code so that the tty flag
346		actually works correctly now....
347
348Mon Apr  1 10:22:01 1996    <tytso@rsts-11.mit.edu>
349
350	* serial.c (rs_close): Cleaned up modularization changes.
351		Remove code which forced line discipline back to N_TTY
352		this is done in the tty upper layers, and there's no
353		reason to do it here.  (Making this change also
354		removed the requirement that the serial module access
355		the internal kernel symbol "ldiscs".)
356
357	* tty_io.c (tty_init): Formally register a tty_driver entry for
358		/dev/tty (device 4, 0) and /dev/console (device 5, 0).
359		This guarantees that major device numbers 4 and 5 will be
360		reserved for the tty subsystem (as they have to be because
361		of /dev/tty and /dev/console).  Removed tty_regdev, as
362		this interface is no longer necessary.
363
364Sun Mar 17 20:42:47 GMT 1996 <ah@doc.ic.ac.uk>
365
366	* serial.c : modularisation (changes in linux/fs/device.c allow
367		kerneld to automatically load the serial module).
368
369	* Makefile, Config.in : serial modularisation adds.
370
371	* tty_io.c : tty_init_ctty used by to register "cua" driver just
372		for the /dev/tty device (5,0).  Added tty_regdev.
373	
374	* serial.c (shutdown, rs_ioctl) : when port shuts down wakeup processes
375	  waiting on delta_msr_wait. The TIOCMIWAIT ioctl returns EIO
376	  if no change was done since the time of call.
377
378Sat Mar 16 14:33:13 1996 <aeb@cwi.nl>
379
380	* tty_io.c (disassociate_ctty): If disassociate_ctty is called by
381		exit, do not perform an implicit vhangup on a pty.
382
383Fri Feb  9 14:15:47 1996    <tytso@rsts-11.mit.edu>
384
385	* serial.c (block_til_ready): Fixed another race condition which
386		happens if a hangup happens during the open.
387
388Wed Jan 10 10:08:00 1996    <tytso@rsts-11.mit.edu>
389
390	* serial.c (block_til_ready): Remove race condition which happened
391		if a hangup condition happened during the setup of the
392		UART, before rs_open() called block_til_ready().  This
393		caused the info->count counter to be erroneously
394		decremented.
395
396	* serial.c (startup, rs_open): Remove race condition that could
397		cause a memory leak of one page.  (Fortunately, both race
398		conditions were relatively rare in practice.)
399
400Tue Dec  5 13:21:27 1995    <tytso@rsts-11.mit.edu>
401
402	* serial.c (check_modem_status, rs_ioctl): Support the new
403		ioctl()'s TIOCGICOUNT, TIOCMIWAIT.  These allow an
404		application program to wait on a modem serial register
405		status bit change, and to find out how many changes have
406		taken place for the MSR bits.
407
408		(rs_write): Eliminate a race condition which is introduced
409		if it is necessary to wait for the semaphore.
410
411Sat Nov  4 17:14:45 1995    <tytso@rsts-11.mit.edu>
412
413	* tty_io.c (tty_init): Move registration of TTY_MAJOR and
414		TTY_AUX_MAJOR to the end, so that /proc/devices looks
415		prettier. 
416
417	* pty.c (pty_init): Use new major numbers for PTY master and slave
418		devices.  This allow us to have more than 64 pty's.  We
419		register the old pty devices for backwards compatibility.
420		Note that a system should either be using the old pty
421		devices or the new pty devices --- in general, it should
422		try to use both, since they map into the same pty table.
423		The old pty devices are strictly for backwards compatibility.
424
425Wed Oct 11 12:45:24 1995    <tytso@rsts-11.mit.edu>
426
427	* tty_io.c (disassociate_ctty): If disassociate_ctty is called by
428		exit, perform an implicit vhangup on the tty.
429
430	* pty.c (pty_close): When the master pty is closed, send a hangup
431		to the slave pty.
432		(pty_open): Use the flag TTY_SLAVE_CLOSED to test to see
433		if there are any open slave ptys, instead of using
434		tty->link->count.  The old method got confused if there
435		were processes that had hung-up file descriptors on the
436		slave tty.
437
438Tue May  2 00:53:25 1995    <tytso@rsx-11.mit.edu>
439
440	* tty_io.c (tty_set_ldisc): Wait until the output buffer is
441		drained before closing the old line discipline --- needed
442		in only one case: XON/XOFF processing.
443
444	* n_tty.c (n_tty_close): Don't bother waiting until the output
445		driver is closed; in general, the line discipline
446		shouldn't care if the hardware is finished
447		transmitting before the line discipline terminates.
448
449	* tty_io.c (release_dev): Shutdown the line discipline after
450		decrementing the tty count variable; but set the
451		TTY_CLOSING flag so that we know that this tty structure
452		isn't long for this world.
453
454	* tty_io.c (init_dev): Add sanity code to check to see if
455		TTY_CLOSING is set on a tty structure; if so, something
456		bad has happened (probably a line discipline close blocked
457		when it shouldn't have; so do a kernel printk and then
458		return an error).
459
460Wed Apr 26 10:23:44 1995  Theodore Y. Ts'o  <tytso@localhost>
461
462	* tty_io.c (release_dev): Try to shutdown the line discipline
463		*before* decrementing the tty count variable; this removes
464		a potential race condition which occurs when the line
465		discipline close blocks, and another process then tries
466		open the same serial port.
467
468	* serial.c (rs_hangup): When hanging up, flush the output buffer
469		before shutting down the UART.  Otherwise the line
470		discipline close blocks waiting for the characters to get
471		flushed, which never happens until the serial port gets reused.
472
473Wed Apr 12 08:06:16 1995  Theodore Y. Ts'o  <tytso@localhost>
474
475	* serial.c (do_serial_hangup, do_softint, check_modem_status,
476		rs_init):  Hangups are now scheduled via a separate tqueue
477		structure in the async_struct structure, tqueue_hangup.
478		This task is pushed on to the tq_schedule queue, so that
479		it is processed synchronously by the scheduler.
480
481Sat Feb 18 12:13:51 1995  Theodore Y. Ts'o  (tytso@rt-11)
482
483	* tty_io.c (disassociate_ctty, tty_open, tty_ioctl): Clear
484		current->tty_old_pgrp field when a session leader
485		acquires a controlling tty, and after a session leader
486		has disassociated from a controlling tty.
487
488Fri Feb 17 09:34:09 1995  Theodore Y. Ts'o  (tytso@rt-11)
489
490	* serial.c (rs_interrupt_single, rs_interrupt, rs_interrupt_multi): 
491		Change the number of passes made from 64 to be 256,
492		configurable with the #define RS_ISR_PASS_LIMIT.
493
494	* serial.c (rs_init, set_serial_info, get_serial_info, rs_close):
495		Remove support for closing_wait2.  Instead, set
496		tty->closing and rely on the line discipline to prevent
497		echo wars.
498
499	* n_tty.c (n_tty_receive_char):  IEXTEN does not need to be
500		enabled in order for IXANY to be active.
501
502		If tty->closing is set, then only process XON and XOFF
503                characters.
504
505Sun Feb 12 23:57:48 1995  Theodore Y. Ts'o  (tytso@rt-11)
506
507	* serial.c (rs_timer): Change the interrupt poll time from 60
508		seconds to 10 seconds, configurable with the #define
509		RS_STROBE_TIME.
510
511	* serial.c (rs_interrupt_multi, startup, shutdown, rs_ioctl,
512		set_multiport_struct, get_multiport_struct): Add
513		provisions for a new type of interrupt service routine,
514		which better supports multiple serial ports on a single
515		IRQ.  
516
517Sun Feb  5 19:35:11 1995  Theodore Y. Ts'o  (tytso@rt-11)
518
519	* tty_ioctl.c (n_tty_ioctl, set_termios, tty_wait_until_sent): 
520	* serial.c (rs_ioctl, rs_close): 
521	* cyclades.c (cy_ioctl, cy_close): 
522	* n_tty.c (n_tty_close):  Rename wait_until_sent to
523		tty_wait_until_sent, so that it's a better name to export
524		in ksyms.c.
525
526Sat Feb  4 23:36:20 1995  Theodore Y. Ts'o  (tytso@rt-11)
527
528	* serial.c (rs_close): Added missing check for closing_wait2 being
529		ASYNC_CLOSING_WAIT_NONE.
530
531Thu Jan 26 09:02:49 1995  Theodore Y. Ts'o  (tytso@rt-11)
532
533	* serial.c (rs_init, set_serial_info, get_serial_info,
534		rs_close): Support close_wait in the serial driver.
535		This is helpful for slow devices (like serial
536		plotters) so that their outputs don't get flushed upon
537		device close.  This has to be configurable because
538		normally we don't want ports to be hung up for long
539		periods of time during a close when they are not
540		connected to a device, or the device is powered off.
541
542		The default is to wait 30 seconds; in the case of a
543		very slow device, the close_wait timeout should be
544		lengthened.  If it is set to 0, the kernel will wait
545		forever for all of the data to be transmitted.
546
547Thu Jan 17 01:17:20 1995  Theodore Y. Ts'o  (tytso@rt-11)
548
549	* serial.c (startup, change_speed, rs_init): Add support to detect
550		the StarTech 16650 chip.  Treat it as a 16450 for now,
551		because of its FIFO bugs.
552
553Thu Jan  5 21:21:57 1995  <dahinds@users.sourceforge.net>
554
555	* serial.c: (receive_char): Added counter to prevent infinite loop
556		when a PCMCIA serial device is ejected.
557
558Thu Dec 29 17:53:48 1994    <tytso@rsx-11.mit.edu>
559
560	* tty_io.c (check_tty_count): New procedure which checks
561		tty->count to make sure that it matches with the number of
562		open file descriptors which point at the structure.  If
563		the number doesn't match, it prints a warning message.
564
565Wed Dec 28 15:41:51 1994    <tytso@rsx-11.mit.edu>
566
567	* tty_io.c (do_tty_hangup, disassociate_ctty): At hangup time,
568		save the tty's current foreground process group in the
569		session leader's task structure.  When the session leader
570		terminates, send a SIGHUP, SIGCONT to that process group.
571		This is not required by POSIX, but it's not prohibited
572		either, and it appears to be the least intrusive way
573		to fix a problem that dialup servers have with
574		orphaned process groups caused by modem hangups.
575
576Thu Dec  8 14:52:11 1994    <tytso@rsx-11.mit.edu>
577
578	* serial.c (rs_ioctl): Don't allow most ioctl's if the serial port
579		isn't initialized.
580
581	* serial.c (rs_close): Don't clear the IER if the serial port
582		isn't initialized. 
583
584	* serial.c (block_til_ready): Don't try to block on the dialin
585		port if the serial port isn't initialized.
586
587Wed Dec  7 10:48:30 1994  Si Park (si@wimpol.demon.co.uk)
588	* tty_io.c (tty_register_driver): Fix bug when linking onto
589		the tty_drivers list. We now test that there are elements
590		already on the list before setting the back link from the
591		first element to the new driver.
592
593	* tty_io.c (tty_unregister_driver): Fix bug in unlinking the
594		specified driver from the tty_drivers list. We were not
595		setting the back link correctly. This used to result in
596		a dangling back link pointer and cause panics on the next
597		call to get_tty_driver().
598
599Tue Nov 29 10:21:09 1994  Theodore Y. Ts'o  (tytso@rt-11)
600
601	* tty_io.c (tty_unregister_driver): Fix bug in
602		tty_unregister_driver where the pointer to the refcount is
603		tested, instead of the refcount itself.  This caused
604		tty_unregister_driver to always return EBUSY.
605
606Sat Nov 26 11:59:24 1994  Theodore Y. Ts'o  (tytso@rt-11)
607
608	* tty_io.c (tty_ioctl): Add support for the new ioctl
609		TIOCTTYGSTRUCT, which allow a kernel debugging program
610		direct read access to the tty and tty_driver structures.
611
612Fri Nov 25 17:26:22 1994  Theodore Y. Ts'o  (tytso@rt-11)
613
614	* serial.c (rs_set_termios): Don't wake up processes blocked in
615		open when the CLOCAL flag changes, since a blocking
616		open only samples the CLOCAL flag once when it blocks,
617		and doesn't check it again.  (n.b.  FreeBSD has a
618		different behavior for blocking opens; it's not clear
619		whether Linux or FreeBSD's interpretation is correct.
620		POSIX doesn't give clear guidance on this issue, so
621		this may change in the future....)
622
623	* serial.c (block_til_ready): Use the correct termios structure to
624		check the CLOCAL flag.  If the cuaXX device is active,
625		then check the saved termios for the ttySXX device.
626		Otherwise, use the currently active termios structure.
627
628Sun Nov  6 21:05:44 1994  Theodore Y. Ts'o  (tytso@rt-11)
629
630	* serial.c (change_speed): Add support for direct access of
631		57,600 and 115,200 bps.
632
633Wed Nov  2 10:32:36 1994  Theodore Y. Ts'o  (tytso@rt-11)
634
635	* n_tty.c (n_tty_receive_room): Only allow excess characters
636		through if we are in ICANON mode *and* there are other no
637		pending lines in the buffer.  Otherwise cut and paste over
638		4k breaks.
639
640Sat Oct 29 18:17:34 1994  Theodore Y. Ts'o  (tytso@rt-11)
641
642	* serial.c (rs_ioctl, get_lsr_info): Added patch suggested by Arne
643		Riiber so that user mode programs can tell when the
644		transmitter shift register is empty.
645
646Thu Oct 27 23:14:29 1994  Theodore Y. Ts'o  (tytso@rt-11)
647
648	* tty_ioctl.c (wait_until_sent): Added debugging printk statements
649		(under the #ifdef TTY_DEBUG_WAIT_UNTIL_SENT)  
650
651	* serial.c (rs_interrupt, rs_interrupt_single, receive_chars,
652		change_speed, rs_close): rs_close now disables receiver
653		interrupts when closing the serial port.  This allows the
654		serial port to close quickly when Linux and a modem (or a
655		mouse) are engaged in an echo war; when closing the serial
656		port, we now first stop listening to incoming characters,
657		and *then* wait for the transmit buffer to drain.  
658
659		In order to make this change, the info->read_status_mask
660		is now used to control what bits of the line status
661		register are looked at in the interrupt routine in all
662		cases; previously it was only used in receive_chars to
663		select a few of the status bits.
664
665Mon Oct 24 23:36:21 1994  Theodore Y. Ts'o  (tytso@rt-11)
666
667	* serial.c (rs_close): Add a timeout to the transmitter flush
668		loop; this is just a sanity check in case we have flaky
669		(or non-existent-but-configured-by-the-user) hardware.
670
671Fri Oct 21 09:37:23 1994  Theodore Y. Ts'o  (tytso@rt-11)
672
673	* tty_io.c (tty_fasync): When asynchronous I/O is enabled, if the
674		process or process group has not be specified yet, set it
675		to be the tty's process group, or if that is not yet set,
676		to the current process's pid.
677
678Thu Oct 20 23:17:28 1994  Theodore Y. Ts'o  (tytso@rt-11)
679
680	* n_tty.c (n_tty_receive_room): If we are doing input
681		canonicalization, let as many characters through as
682		possible, so that the excess characters can be "beeped".
683
684Tue Oct 18 10:02:43 1994  Theodore Y. Ts'o  (tytso@rt-11)
685
686	* serial.c (rs_start): Removed an incorrect '!' that was
687		preventing transmit interrupts from being re-enabled in
688		rs_start().  Fortunately in most cases it would be
689		re-enabled elsewhere, but this still should be fixed
690		correctly.
691
692Sun Oct  9 23:46:03 1994  Theodore Y. Ts'o  (tytso@rt-11)
693
694	* tty_io.c (do_tty_hangup): If the tty driver flags
695		TTY_DRIVER_RESET_TERMIOS is set, then reset the termios
696		settings back to the driver's initial configuration.  This
697		allows the termios settings to be reset even if a process
698		has hung up file descriptors keeping a pty's termios from
699		being freed and reset.
700
701	* tty_io.c (release_dev): Fix memory leak.  The pty's other
702		termios structure should also be freed.
703
704	* serial.c (rs_close, shutdown): Change how we wait for the
705		transmitter to completely drain before shutting down the
706		serial port.  We now do it by scheduling in another
707		process instead of busy looping with the interrupts turned
708		on.  This may eliminate some race condition problems that
709		some people seem to be reporting.
710
711Sun Sep 25 14:18:14 1994  Theodore Y. Ts'o  (tytso@rt-11)
712
713	* tty_io.c (release_dev): When freeing a tty make sure that both
714		the tty and the o_tty (if present) aren't a process's
715		controlling tty.  (Previously, we only checked the tty.)
716
717	* serial.c (change_speed): Only enable the Modem Status
718		Interrupt for a port if CLOCAL is not set or CRTSCTS
719		is set.  If we're not checking the carrier detect and
720		CTS line, there's no point in enabling the modem
721		status interrupt.  This will save spurious interrupts
722		from slowing down systems who have terminals that
723		don't support either line.  (Of course, if you want
724		only one of CD and CTS support, you will need a
725		properly wired serial cable.)
726
727Thu Sep 22 08:32:48 1994  Theodore Y. Ts'o  (tytso@rt-11)
728
729	* tty_io.c (do_SAK): Return if tty is null.
730
731	* tty_io.c (_tty_name): Return "NULL tty" if the passed in tty is
732		NULL.
733
734Sat Sep 17 13:19:25 1994  Theodore Y. Ts'o  (tytso@rt-11)
735
736	* tty_ioctl.c (n_tty_ioctl): Fix TIOCGLCKTRMIOS and
737		TIOCSLCKTRMIOS, which were totally broken.  Remove
738		extra indirection from argument; it should be a struct
739		termios *, not a struct termios **.
740		&real_tty->termios_locked should have been
741		real_tty->termios_locked.  This caused us to be
742		reading and writing the termios_locked structure to
743		random places in kernel memory.  
744
745	* tty_io.c (release_dev): Oops!  Forgot to delete a critical kfree
746		of the locked_termios.  This leaves the locked_termios
747		structure pointed at a freed object.  
748
749Fri Sep 16 08:13:25 1994  Theodore Y. Ts'o  (tytso@rt-11)
750
751	* tty_io.c (tty_open): Don't check for an exclusive open until
752		after the device specific open routine has been called.
753		Otherwise, the serial device ref counting will be screwed
754		up.
755
756	* serial.c (rs_open, block_til_ready): Don't set termios structure
757		until after block_til_ready has returned successfully.
758		Modify block_til_ready to check the normal_termios
759		structure directly, so it doesn't rely on termios being
760		set before it's called.
761
762Thu Sep 15 23:34:01 1994  Theodore Y. Ts'o  (tytso@rt-11)
763
764	* serial.c (rs_close): Turn off interrupts during rs_close() to
765		prevent a race condition with the hangup code (which
766		runs during a software interrupt).
767
768	* tty_io.c (release_dev): Don't free the locked_termios structure;
769		its state must be retained across device opens.
770
771
772	* tty_io.c (tty_unregister_driver): Added function to unregister a
773		tty driver.  (For loadable device drivers.)
774
775
776